How to Migrate to Shopify From a Custom CMS (Without Losing Rankings)

A lot of migration guides help you choose Shopify. Very few explain what actually keeps your rankings after launch. Almost none of it covers the mechanics that actually decide whether you keep your rankings after launch. I ran this on a 36-storefront ecommerce brand moving off a custom CMS, full story here: Shopify Migration Without Losing Rankings.

Still deciding whether Shopify is even the right platform? I covered that separately: Shopify vs WooCommerce.

This is the technical side. What actually has to happen once the decision is made.

1. URL mapping at scale

Every legacy URL needs an explicit destination. No wildcard shortcuts, no “redirect everything to the homepage.” On a large site, doing this by hand just isn’t realistic. I mapped every legacy URL to its new destination in Google Sheets, then used Apps Script to automate matching, transformations, and validation across thousands of URLs. Manual mapping simply doesn’t scale.

2. hreflang across multiple properties

When your regional variants live on genuinely separate properties, not subfolders on one domain, sitemap-based hreflang alone isn’t enough. Each page needs the actual HTML tags in the head, pointing to every regional variant and pointing back. Skip this and Google loses the relationship between your regions, even if each individual site migrates cleanly on its own.

3. Ecommerce tracking breaks differently on Shopify

Shopify hosts checkout separately from the rest of your site. Your GTM container might track everything else on your domain perfectly and still miss checkout entirely, because that layer needs its own setup through Shopify’s native tracking, not an inherited one from your old CMS. Assume the old tags carry over and this breaks quietly. Nothing breaks visibly. You simply lose revenue attribution until someone notices the numbers don’t match.

4. Titles and meta live in the sheet. Content doesn’t.

Titles and meta descriptions are short enough to manage as columns in a spreadsheet, one row per page. The actual page content is a different problem. Long-form SEO copy doesn’t work crammed into a cell, so years ago I built a Google Sheets formula that automatically generated a separate Google Doc for each collection page, tied to that page’s URL slug. Whoever wrote the page found their doc already waiting, matched to the right URL, and only had to paste the finished content into Shopify when it was done. Titles and meta never left the sheet. Metadata belongs in a spreadsheet because it’s structured. Content belongs in documents because people actually have to write it. Keeping those workflows separate made the migration much easier to manage.

5. JSON-LD schema, Shopify’s blind spot

Worth knowing going into this in 2026: don’t assume your Shopify theme outputs the structured data you actually need. Product, breadcrumb, organization, and other schema types should all be verified after migration. If something is missing, you’ll need to implement it yourself rather than assuming the theme already handles it.

6. Redirects: speed is everything

After cutover, I checked Search Console daily. Coverage reports, crawl errors, redirect behavior, fixed the same day something looked off. The first few weeks after launch are still part of the migration, not the end of it. Speed is what actually gets new URLs crawled and indexed. Batch your redirects and handle them slowly instead, and your old URLs just sit there in limbo while traffic quietly drains out from under you.

7. Verifying redirects before Google does it for you

On a large site, waiting for Search Console to surface crawl errors one at a time is too slow. I built a second Apps Script tool that checks URL status codes straight from Google Sheets, confirming a clean 200 across the entire mapped list right after launch. Search Console tells you what Google has already found. Automated verification tells you what broke immediately. No waiting weeks for Search Console to get around to reporting what already broke.


Over time, this became my migration checklist: the URL mapping sheet, the redirect verification script, and the auto-doc generator for content. If you want a copy, DM me or subscribe below.

Back to Blog