Field notes
A 301 Redirect Plan That Survives a Shopify Migration
November 8, 2025
Why this matters more than most people think
A B2C furniture brand replatformed from Magento to Shopify last year without a redirect plan. The launch looked fine. The PDPs rendered correctly. The checkout converted. The Monday after launch, organic traffic fell eighteen percent. By week three it was down thirty-one. The brand lost six figures of revenue before realizing every category URL on the old site was now returning 404.
The redirect plan is not an SEO nice-to-have. It is the load-bearing piece of migration work. This post is how we build one.
▸ Capture every URL from Search Console, Ahrefs, and server logs. ▸ Map old to new with a human review, not only regex. ▸ Deploy at DNS cutover, not before or after. ▸ Monitor Search Console daily for the first four weeks.
The three sources of truth
One source gives you an incomplete list. Three gives you the real picture.
Search Console is the first source. Coverage report exports every URL Google has indexed or crawled. This is the list Google cares about. It is also incomplete for recent or low-traffic pages.
Ahrefs or Semrush is the second. Export every URL with inbound backlinks, ranked keywords, or referring traffic. This catches URLs that Search Console might underreport and flags the high-value pages your redirect map cannot afford to miss.
Server access logs are the third. Parse the last ninety days of real traffic. This catches URLs humans visit that Search Console and Ahrefs both missed. Bot-driven or direct-traffic URLs show up here and nowhere else.
Merge the three, deduplicate, and you have the master list. For a mid-size D2C brand this is usually two to eight thousand URLs. For a mature store with a blog it can be twenty thousand.
The mapping itself
Every URL in the master list gets a target. Four possible targets.
▸ One-to-one. The new canonical URL on Shopify. ▸ One-to-many-reduced. Old URL points to the best new match, usually for duplicates. ▸ Parent-up. Old URL points to its parent category because the child is gone. ▸ Deliberate 410. The URL is intentionally retired and Google should drop it.
Do not default to homepage redirects. A homepage redirect tells Google the destination is not equivalent to the source, which is the opposite of what a 301 means. Google will treat it as a soft 404 and drop the old URL's equity.
The regex trap
Pattern-based redirects look clean in a spreadsheet. They break on the edges. A rule like "old /products/(.*) maps to new /products/$1" assumes every product slug matches. In a migration from a platform that allowed slug collisions, it never does. Three percent of products have a slug conflict. That three percent becomes your 404 list.
Our rule. Pattern redirects handle collections and content. Every product URL gets an explicit row. The spreadsheet is ugly. The SEO result is clean.
Deploying redirects
Shopify has a native URL redirect system. It works up to about a hundred thousand entries. For most migrations it is enough. For large catalogs or pattern-heavy setups we deploy at the edge. Cloudflare, Vercel, or Netlify depending on the setup. Edge redirects respond faster, do not consume theme requests, and are easier to debug.
Whatever the deploy mechanism, the rules need to be live at the moment of DNS cutover. Not before, because the old site is still at the DNS target. Not after, because the crawler window opens the second DNS propagates.
The timing framework
Here is the cutover sequence we run.
| T-minus | Action |
|---|---|
| 14 days | Freeze the source URL structure, new URLs only on Shopify |
| 7 days | Redirect map finalized and reviewed |
| 3 days | Staging test of every major redirect pattern |
| 1 day | Dry run of cutover against a staging DNS target |
| 0 | DNS flip, redirects go live, Search Console change-of-address submitted |
| +1 day | First coverage check in Search Console |
| +7 days | Crawl the old URL list, verify 301 response on every row |
| +14 days | First ranking check against the master keyword list |
| +28 days | Full coverage audit, any remaining issues escalated |
The plus-seven check is the one most teams skip. Running a crawler against the old URL list from an external IP verifies that redirects actually return 301 and point to the right destination. We have caught misconfigured rules at this check that would have taken a month to show up in Search Console.
The content parity problem
Redirects preserve technical equity. They do not preserve content equity. If the new PDP has less content than the old one, Google will notice and rankings will drift even with a perfect redirect map.
Our rule. Before migration, audit top-twenty landing pages by organic traffic. Ensure word count, heading structure, and internal linking parity on the new pages. Better content is fine. Less content is not. A thin migration of a content-heavy category page can cost you forty percent of its traffic even with a clean 301.
For catalog-level content strategy see Shopify technical SEO audit.
Monitoring after launch
Launch day is not done. For the first twenty-eight days we run three checks daily.
▸ Search Console coverage report for new 404 and soft-404 flags. ▸ GA4 traffic by landing page against a pre-migration baseline. ▸ Ranking tracker on the top two hundred keywords against weekly snapshots.
If organic traffic drops more than eight percent week one, investigate immediately. Usually it is a redirect rule that did not deploy, a robots.txt that blocks the new URL pattern, or a hreflang tag that lost its target. All fixable if caught in the first week. Mostly unfixable a month later.
What breaks in practice
A short list of issues we have seen and fixed.
▸ Redirect map deployed but robots.txt on the new site blocks /products/, so nothing gets recrawled. ▸ Sitemap on the new site still points to staging, so Google crawls staging and ignores production. ▸ Canonical tags on the new PDPs point to the old URL, undoing every 301. ▸ Hreflang tags reference URLs that no longer exist. ▸ 301 chain through two hosts because DNS and edge redirects disagree.
The pattern is consistent. The 301 rule itself is rarely the problem. The surrounding SEO configuration usually is.
What to do this week
▸ Pull Search Console, Ahrefs, and server log URL lists into one master file. ▸ Mark each URL with a target type: one-to-one, reduced, parent-up, or 410. ▸ Draft the redirect rules and test three edge cases in staging. ▸ Book the DNS cutover with your ops team as a scheduled event, not an ad-hoc deploy. ▸ Write the plus-seven verification crawl into the launch runbook.
Related reading
For migration mechanics see the platform migration service, WooCommerce to Shopify, and Magento to Shopify. For the data side read Shopify migration data mapping. For technical SEO baseline read Shopify technical SEO audit. For platform context see Shopify vs WooCommerce.
FAQs
One-page resource
Get the Vendor Recovery Checklist.
The 12 steps every displaced maker should take in the next 30 days. Delivered in your inbox.