After more than 50 signed migrations since 2018, and inevitably some lost tenders along the way, we have finally identified what truly determines a migration project. It's almost never the budget. It's the fear of losing SEO rankings during the switch, and of having spent a significant sum to end up with worse visibility than before. This fear is perfectly justified. That's also why our team spends so much time, upstream of projects, explaining the migration process and particularly the redirection process.
So, let's just publish it. A Shopify migration does not cause traffic loss: an incomplete redirection plan does. This nuance shifts all the work to before the switch, because the essence of a migration's SEO lies in a two-column file, built before going live, from two sitemaps. Here's the method, from URL extraction to 90-day follow-up.
In brief
- The number one cause of traffic loss is not a failed redirection; it's an incomplete source sitemap: we only redirect what we've inventoried.
- The core deliverable is a two-column CSV file, Redirect from and Redirect to, in slugs, directly importable into Shopify.
- The actual risk window is the 72 hours following the switch, not just on launch day.
- In our projects, organic traffic returns to its previous level in 4 to 8 weeks when the mapping is complete.
- The fatal error: discovering forgotten URLs in Search Console a month later, instead of having mapped them beforehand.
Summary
Why traffic drops after a migration
Google doesn't index a store; it indexes addresses. Each URL of your old site carries accumulated capital: rankings, backlinks, click history. When this address stops responding, this capital doesn't automatically transfer to the equivalent new page. It remains attached to a dead address.
Three mechanisms are triggered simultaneously. Old URLs return a 404, and Google de-indexes the affected pages. Backlinks acquired over years point to these same 404s, so popularity is lost along the way. And the bot spends its crawl budget revisiting errors instead of discovering your new pages.
The amplitude of the drop therefore doesn't depend on the platform being left. It depends on a single variable: the proportion of actually redirected traffic-generating URLs. A store that redirects 100% of its useful URLs loses almost nothing. A store that redirects 60% permanently loses the remaining 40%, and these are rarely the least valuable ones.
This page assumes the decision has been made. If it hasn't yet, start by arbitrating between a redesign and a Shopify migration, then refer to the guide corresponding to your current platform in our Shopify migration guides.
Step 1: Map URLs before the switch
URL mapping is the only deliverable that truly matters. It's a table that associates each address of the old site with its equivalent on the new store. Everything else stems from it. And it is built by cross-referencing two inventories: that of the departing site and that of the arriving site.
The source sitemap, our number one control point
This is where we got caught out, once, and that's when we changed our process. For a migration, the brand sent us its sitemap. We trusted it. We built a clean, tested, imported redirection plan. And we discovered after going live that this sitemap contained only half of the actual site. The SEO loss was immediate.
We corrected it in a few days, but the frustration remains: we had done our job well on a scope that was wrong from the start. Since then, we require the original sitemap to be produced and validated pre-migration, even before starting the mapping.
Therefore, systematically cross-reference the sitemap with two other sources: pages that received at least one click over 12 months in Search Console, and a complete crawl of the old domain. If the number of URLs differs by more than 10%, it's the sitemap that's incomplete, not the others.
Generate the new site's inventory in five minutes
Inventorying the Shopify store is simpler to produce than most people think, even before launch. The new store is still password-protected, hence invisible and un-crawlable. We remove this password for five minutes: within such a short window, the risk of Google indexing is zero.
- Temporarily remove the Shopify store password.
- Open yournewstore.com/sitemap.xml to retrieve the automatically generated sitemap.
- Paste this URL into the data.page/xml/csv converter and download the exports.
- Retrieve one CSV per page type, as Shopify segments its sitemap by URL structure: /pages/, /products/, /collections/, /blogs/.
- Re-enter the password.
You then have both halves of the puzzle: the exhaustive list of the old site, and the exhaustive list of the new one, segmented by type. Note that the question of the ideal form of a Shopify URL does not arise here. It was decided upstream when building the tree structure, and we address it in our Shopify SEO guide. At this stage, only one thing matters: connecting the old to the new.
Prioritize before mapping
Not all URLs are created equal. Rank them by organic traffic over 12 months, then by the number of referring domains. The top 20% of the table generally carry more than 80% of the capital. These require a perfect, one-to-one match. The rest can be handled by pattern.
| Source URL | 12-month sessions | Referring domains | Target Shopify URL | Type |
|---|---|---|---|---|
| /boutique/sacs-cuir | 4,210 | 18 | /collections/sacs-en-cuir | 1 to 1 |
| /produit/sac-lila-noir | 1,830 | 3 | /products/sac-lila-noir | 1 to 1 |
| /blog/entretenir-le-cuir | 960 | 7 | /blogs/journal/entretenir-le-cuir | 1 to 1 |
| /produit/sac-lila-rouge (discontinued) | 240 | 0 | /collections/sacs-en-cuir | to parent |
| /cart, /my-account | 0 | 0 | none | excluded, 410 |
Step 2: Build the 301 redirection file
One-to-one or by pattern
The one-to-one rule applies as soon as a page has traffic, backlinks, or a specific search intent. Every active product page, every collection, every blog post that appears in Google deserves its own line.
The pattern rule applies to the rest: pagination pages, obsolete variants, merged old categories. These are sent to the closest thematic parent. What we never do is massively send orphaned pages to the homepage. Google treats these irrelevant redirects as soft 404s and passes nothing on.
The format Shopify expects
Once the old sitemap and the new site's exports are in hand, building the table is very quick, even by delegating it to an AI assistant to whom you provide both lists. The instruction must be strict: a CSV file with exactly two columns, Redirect from and Redirect to, containing only slugs and handles, never the full domain name.
The file is then imported into the back-office, under Content, then Navigation, then URL Redirects, Import button. Three limitations to be aware of before you start:
- Shopify does not accept regular expressions or wildcards. One line equals one URL, which makes the exhaustiveness of the inventory all the more critical.
- There is no .htaccess file: the native interface and CSV import are the only levers.
- Beyond a few thousand lines, native import becomes laborious. Matrixify takes over and also handles batch updates.
The three special cases
Products removed from the catalog. Do not leave them as 404s. Redirect to the parent collection if the intent is still satisfied, or to the closest replacement product. Reserve 410s for pages that no longer have any equivalent and no traffic.
Merged collections. Several old categories to a single new collection: this is legitimate, provided the new page covers both intents. Otherwise, you're transforming two average positions into a single average position.
URL parameters. Old URLs with filters, sorts, or session IDs are not redirected line by line. Simply verify that the canonical version of the old page is indeed redirected.
Step 3: Technical pitfalls that negate the work
A complete plan can be neutralized by six execution flaws. Each has a simple fix.
- Redirection chains. Old URL to intermediate URL to final URL. Each jump dilutes the signal and slows down the crawl. Fix: systematically flatten to the final destination.
- Loops. A redirects to B which redirects to A. The page becomes inaccessible. Fix: screen the file before import; a loop can be detected by simply sorting the two columns.
- 302 instead of 301. A 302 signals a temporary move and does not sustainably transfer authority. A migration is permanent, so always 301.
- Orphaned canonicals. Canonical tags imported from the old site that still point to the old domain. Fix: audit canonicals on a sample of 50 pages before the switch.
- Broken hreflang. On a multilingual store, correspondences between language versions must be rebuilt at the same time as redirections, otherwise Google serves the wrong language. Shopify Markets handles generation, but each market must still be correctly associated.
- Sitemap not updated. Shopify automatically regenerates its own, but the old sitemap may remain referenced in Search Console and continue to send the bot to dead addresses. Fix: explicitly delete it.
Step 4: The day of the switch
The order of operations is as important as the operations themselves. Here is the sequence we follow, in this precise order.
- Import the redirection file before pointing the domain to Shopify. The rules must exist when the first request arrives.
- Switch the DNS and remove the store password.
- Check robots.txt: no blocking directives inherited from the pre-production phase.
- Submit the new sitemap in Search Console and remove the old one.
- Test a sample of 30 to 50 old URLs, prioritizing the best-ranked ones, and confirm that each returns a 301 to the correct page.
- Verify that analytics tracking correctly records sessions on the new domain.
This sample check takes an hour. It's the only window where a mass error can be corrected without cost.
Step 5: 90-day post-migration monitoring
A successful migration is observed in weeks, not days. The Search Console index report becomes your dashboard: indexed pages, unplanned 404s, impression curve. Here are the orders of magnitude we observe when mapping is complete, and the thresholds that should trigger intervention.
| Period | What happens | Normal trajectory | Alert signal |
|---|---|---|---|
| Week 1 | Google recrawls and discovers 301s | Organic sessions down 10 to 25% | Drop greater than 40% |
| Weeks 2 to 4 | Authority transfer to new URLs | Gradual recovery, 404s decreasing | Volume of 404s increasing |
| Weeks 5 to 8 | Index stabilization | Return to 90 or 100% of previous level | Plateau below 70% |
| Weeks 9 to 12 | Effect of technical gains from the new store | Exceeding the initial level | Stagnation, to be investigated page by page |
A sustained plateau below 70% almost never means a penalty. It means that a family of URLs was overlooked in the initial inventory. We then return to the source sitemap and look for what was missing.
Do it yourself or delegate?
The decision depends on volume and stakes, not technical complexity. Below 200 useful URLs, with a stable catalog and a tree structure that changes little, mapping can be done manually in one day. The method described here is largely sufficient.
Beyond that, with multilingual catalogs, filtered collections, or a significant backlink history, every lost traffic point translates into lost revenue, and professional support quickly becomes cost-effective. To gauge the investment, see what budget to plan for a migration.
Once the switch is secured, the subject changes. You are no longer protecting capital, you are growing it: that's when Shopify SEO support takes over.
Frequently Asked Questions
How much traffic is lost during a migration?
This depends on a single variable: the percentage of traffic-generating URLs actually redirected. With complete mapping, the drop is limited to 10 or 25% in the first week, then resolves. With a partial inventory, the loss mechanically corresponds to the proportion of forgotten URLs, and it becomes permanent.
How long does it take to recover SEO rankings?
In our migrations, organic traffic returns to its previous level in 4 to 8 weeks. Very high-volume sites take longer, simply because a full recrawl takes more time.
Should all old URLs be redirected?
No. Pages without traffic, without backlinks, and without search intent (cart, customer account, technical pages) do not need redirection. All others must be mapped. If in doubt about a page, redirect: an unnecessary redirection costs nothing, a missing redirection costs a position.
301 or 302 redirection for a migration?
301, without exception. A 302 indicates a temporary move and does not permanently transfer page authority. A platform migration is by definition permanent.
How to handle 404s after the switch?
Each week, open the Search Console indexing report and process 404s by decreasing impression volume. Every 404 with traffic history reveals a missing line in the mapping: add it and re-import.
Does Shopify allow bulk redirects?
Yes, by CSV import from Content, Navigation, URL Redirects. The file contains only two columns, Redirect from and Redirect to, in slugs. Shopify does not accept regular expressions or wildcards, and for very large volumes, Matrixify is more convenient than native import.
Should Google be notified of a migration?
If the domain name changes, yes: use the Search Console's change of address tool. If the domain remains identical and only the platform changes, no declaration is necessary. Simply submit the new sitemap and remove the old one.
A high-volume URL migration?
We produce the mapping, the redirection file, and 90-day monitoring as part of our migrations. If your catalog exceeds a thousand URLs or if your organic traffic significantly impacts your revenue, let's discuss your project.