Kwiat is a New York fine jeweller with 120 years of history. In April 2026 its website moved to a headless build: Shopify Hydrogen on the front end, Sanity as the content management system, and Shopify handling products and collections. Headless builds can be fast and flexible, but they don’t hand you the search basics a standard Shopify theme does. This case study covers the SEO work around that move.
At a glance
| Client | Kwiat |
| Type | US luxury jewellery ecommerce |
| Platform | Shopify Hydrogen, Sanity CMS, Shopify |
| Work | Sitemap specification, post-migration technical audit, rendering checks, canonical and URL review, education content rewrites |
| Impressions (last 12 months) | 9.3 million |
| Clicks (last 12 months) | 55,410 |
Figures are from Google Search Console for the kwiat.com property, 15 September 2025 to 14 September 2026, and cover the site as a whole.
The starting position
On a standard Shopify theme, things like the XML sitemap come built in. On a headless Hydrogen build they don’t, because the site’s content lives in two places: products and collections in Shopify, and editorial and education content in Sanity. Anything that needs to know about every page, like a sitemap, has to be built to pull from both.
Kwiat’s site also restructured its category URLs as part of the move, flattening a deep category tree into a single collection level. That kind of change needs careful redirect and canonical handling, or old and new URLs end up competing.
What the audit found
When I checked the site after the move, the sitemap at /sitemap.xml returned a 404 error, so Google had no sitemap to discover the new URLs from. I flagged it to the client straight away.
Later checks turned up other headless-specific issues worth fixing:
- Client-rendered education pages. The education articles served almost no visible text or headings in the initial HTML. The content sat inside a script payload that only appears once JavaScript runs. Google does render JavaScript, and the pages rank, but it’s a risk for crawlers that don’t, including some AI crawlers.
- Old category URLs still resolving. The previous category tree still returned pages rather than redirecting, relying on canonical tags pointing at the new URLs. On many searches, an old and a new URL were both ranking.
- Canonicals pointing to the wrong pages. A small number of category pages had canonical tags pointing to broader, less relevant collections.
- Auto-generated titles and descriptions. Collection pages were running very short titles and descriptions, often just the collection name.
The SEO and AI search strategy
Around the migration, the work ran as one strategy across seven areas, so fixing the technical basics and growing visibility happened together:
| Area | The aim | What it involved |
|---|---|---|
| Migration technical basics | Make sure Google can discover every new URL | A sitemap specification for the development team, built across Shopify and Sanity |
| Crawlability and rendering | Make sure content is visible to every crawler, not just Google | Checks on how education pages render, with recommendations for the development team |
| URL and canonical consolidation | One ranking URL per page, not an old and a new version competing | Review of old category URLs, redirects and incorrect canonicals |
| Commercial page metadata | Titles and descriptions that earn the click | Recommendations to replace auto-generated collection titles and descriptions |
| Education content | Win back visibility lost to competitors and AI Overviews | 20 education pages rewritten with deeper content, quotable answers and FAQs |
| AI search visibility | Be cited in AI Overviews on jewellery and diamond questions | AI Overview citation research across education queries |
| Paid and organic together | Stop Google Ads and SEO competing for the same searches | Search Intelligence analysis joining Google Ads and Search Console data, and an Ads clean-up |
What was done
A sitemap built to specification. Because the data lives in two systems, I wrote a specification for the development team: a sitemap index at /sitemap.xml pointing to three sub-sitemaps, one for Shopify products (clean product URLs only, no variant query strings), one for collections, and one for Sanity’s editorial content. Each lists only live, indexable URLs, with last-modified dates from Shopify and Sanity, and excludes noindexed pages, search results, filtered URLs and errors. The development team built it to that spec, and it was confirmed live and working.
Education content rewrites. Search Console showed 20 education pages losing impressions, largely because AI Overviews were answering the questions and competitors had improved their content. Those 20 pages were rewritten with deeper content, answer passages written to be quoted, and FAQs ready for FAQ schema.
Technical recommendations. The rendering, redirect, canonical and title findings were written up as clear actions for the development team, one issue at a time.
All of the recommendations have now been implemented.
The result
Over the last 12 months, kwiat.com generated 9.3 million impressions and 55,410 clicks from Google, with 305 search terms in the top three and 1,593 on page one. Its education content is now cited in Google’s AI Overviews in the US, covered in the main Kwiat case study.
What I learned
Headless doesn’t mean SEO-less, but it does mean nothing comes for free. On a headless build, every search basic that a theme would normally handle, the sitemap, the metadata, even whether the words are in the HTML, needs someone to specify it and someone to check it’s actually there after launch. The sitemap is the clearest example: it only exists because it was written down, built and then verified.
A migration can look finished to visitors and still be unfinished for search. On the new platform, some education pages built their content in the browser, so what a visitor saw and what a crawler first received weren’t the same thing. Checking the rendered HTML, not just the page in a browser, is now a standard part of every migration check I run.
Limitations
The 12-month figures cover the whole of kwiat.com, including the period either side of the migration and work by Kwiat’s own team and developers. Jewellery search is also strongly seasonal, with engagement and gifting peaks through the year.
Services used
This project drew on Shopify migrations, headless Shopify development and XML sitemaps and indexing, with the sitemap work supported by the sitemap toolkit. It sits in jewellery and luxury retail, and the Evewell case study shows the other side of migration work: planning before a redesign.
FAQ
Does headless Shopify create an XML sitemap automatically?
No, not in the way a standard Shopify theme does. On a Hydrogen build, content often lives in Shopify and a separate CMS such as Sanity, so the sitemap has to be built as a custom route that pulls URLs from both. It needs specifying, building and checking after launch.
Is headless Shopify bad for SEO?
Headless Shopify isn’t bad for SEO, but it moves responsibility onto the build. Sitemaps, metadata, canonicals and whether content appears in the initial HTML all depend on how the site is developed. Done carefully, a headless site can perform very well. Done without an SEO specification, basics can go missing.
What should be checked after a website migration?
Check that the sitemap exists and lists the new URLs, that old URLs redirect to the right new pages, that canonical tags point where they should, that titles and descriptions carried across, and that content appears in the page HTML. Then watch Search Console for errors and changes in clicks and indexing over the following weeks.
Planning a move?
Get in touch about your platform and launch date, or read the site migration checklist first.