After signing off on more than 50 migrations since 2018—and inevitably losing a few bids along the way—we’ve finally identified what really drives a migration project. It’s almost never the budget. It’s the fear of losing SEO rankings during the switch and having spent a significant amount of money only to end up less visible than before. This fear is perfectly founded. That’s also why our team spends so much time, well before projects begin, explaining the migration process, particularly how redirections work.
So, we might as well publish it. A Shopify migration doesn’t cause a loss of traffic: an incomplete redirection plan does. This nuance shifts all the work to the period before the switch, because the essential SEO of a migration takes place in a two-column file, built before going live, using two sitemaps. Here is our complete method for a Shopify migration without SEO loss, from URL extraction to 90-day tracking, including what 2026 has added to the equation: your redirections are no longer read by Google alone.
In short
- The number one cause of traffic loss isn't a failed redirection, it's an incomplete source sitemap: you can only redirect what you’ve inventoried.
- The central deliverable is a two-column CSV file, Redirect from and Redirect to, using slugs, which can be imported directly into Shopify.
- The actual risk window spans the 72 hours following the switch, not just launch day.
- Since 2026, a second asset is at stake: your citations in ChatGPT, Perplexity, and Claude. AI crawlers abandon a redirection much sooner than Googlebot, and they never notify you.
- On our projects, organic traffic returns to its previous level within 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.
Table of Contents
Why traffic drops after a Shopify migration
Google doesn't index a store; it indexes addresses. Each URL on your old site carries accumulated equity: rankings, backlinks, and click history. When that address stops responding, this equity doesn't automatically transfer to the new equivalent page. It remains attached to a dead address.
Three mechanisms trigger simultaneously. Old URLs return a 404, and Google deindexes the affected pages. Backlinks acquired over the years point to those same 404s, so popularity is lost along the way. And the bot wastes its crawl budget revisiting errors instead of discovering your new pages.
A fourth mechanism has been added since generative answers began capturing a share of product searches. AI engines don't just keep an index; they keep an association between a URL and content they’ve deemed citable. When the address disappears without a clear match, the citation disappears with it, and nothing warns you.
The magnitude of the drop therefore doesn't depend on the platform you're leaving. It depends on one variable: the proportion of high-traffic URLs that are actually redirected. A store that redirects 100% of its useful URLs loses almost nothing. A store that redirects 60% loses the remaining 40% for good, and these are rarely the least valuable ones.
This page assumes the decision has been made and focuses on a single deliverable: the redirection plan. If you haven't decided yet, start by choosing between a redesign and a migration. And if you're interested in the complete project timeline, including customer data and order history, it's detailed in the agency's complete guide, followed by the guide corresponding to your current platform in our guides to migrating to Shopify.
Step 1: mapping URLs before the switch
URL mapping is the only deliverable that truly matters. It is a table that associates each address from the old site with its equivalent on the new store. Everything else follows from this. And it is built by cross-referencing two inventories: the one for the outgoing site and the one for the incoming site.
The source sitemap, our number one control point
This is where we got caught once, and why we changed our process. During a migration, the brand sent us their sitemap. We trusted it. We built a clean, tested, and imported redirection plan. And we discovered after going live that this sitemap only contained half of the actual site. The SEO loss was immediate.
We fixed it in a few days, but the frustration remains: we had done our job perfectly, but based on a scope that was wrong from the start. Since then, we require that the original sitemap be produced and validated pre-migration, before we even start the mapping.
Always cross-check the sitemap with two other sources: pages that received at least one click over 12 months in Search Console, and a full crawl of the old domain. If the number of URLs differs by more than 10%, it's the sitemap that is incomplete, not the others.
Generating the inventory of the new site in five minutes
The inventory of the Shopify store is produced in five minutes, even before launch. The new store is still password-protected, therefore invisible and uncrawlable. We remove this password for the time of the extraction, then put it back: over such a short window, the risk of premature indexing is marginal.
- Temporarily remove the password from the Shopify store.
- 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/.
- Put the password back.
You then have both halves of the puzzle: the exhaustive list of the old site and the exhaustive list of the new one, broken down by type. Note that the question of the ideal Shopify URL structure is not addressed here. It was decided beforehand when building the site architecture, and we cover it in our Shopify SEO guide. At this stage, only one thing matters: connecting the old to the new.
Translating the URL patterns of each CMS into Shopify targets
80% of mapping is derived from a mechanical rule. Every CMS produces its URLs according to a dominant pattern, and so does Shopify. A PrestaShop to Shopify migration, a WooCommerce migration, or a move from Magento therefore boils down to a translation of patterns, before handling exceptions by hand.
| Origin platform | Product URL pattern | Category URL pattern | Shopify target |
|---|---|---|---|
| PrestaShop | /45-purple-black-bag.html | /12-leather-bags | /products/purple-black-bag and /collections/leather-bags |
| WooCommerce | /product/purple-black-bag/ | /product-category/leather-bags/ | /products/purple-black-bag and /collections/leather-bags |
| Magento | /purple-black-bag.html | /leather-bags.html | /products/purple-black-bag and /collections/leather-bags |
| Wix | /product-page/purple-black-bag | /category/leather-bags | /products/purple-black-bag and /collections/leather-bags |
| WordPress (blog) | /2025/03/leather-care/ | /category/tips/ | /blogs/journal/leather-care |
These patterns are the most common configurations, not universal rules: PrestaShop can prefix the path with the category, Magento too if the option is active, and WordPress accepts half a dozen permalink structures. Open three real URLs of each type before writing a single formula.
Two details are costly if neglected. The PrestaShop numerical prefix, first: the product ID isn't found anywhere on the Shopify side, so the match is based on the slug, not the ID, and any automatic rule must remove it. The trailing slash, second: WooCommerce keeps it by default, Shopify never does. Test the behavior of both forms, with and without a slash, on three URLs before generating the full file. This table only deals with address translation: the rest of the work per starting platform, customer data, orders, and modules, is covered in our Shopify migration guide. And if you are still hesitating between the platforms themselves, our comparison of Shopify, PrestaShop, Magento, and WooCommerce addresses the issue beforehand.
Prioritize before mapping
Not all URLs are created equal. Rank them by organic traffic over 12 months, then by number of referring domains. The top 20% of the table generally carries more than 80% of the equity. These are the ones that require a perfect, one-to-one match. The rest can be handled by pattern.
| Source URL | 12-month sessions | Referring domains | Shopify target URL | Type |
|---|---|---|---|---|
| /store/leather-bags | 4,210 | 18 | /collections/leather-bags | 1 to 1 |
| /product/purple-black-bag | 1,830 | 3 | /products/purple-black-bag | 1 to 1 |
| /blog/leather-care | 960 | 7 | /blogs/journal/leather-care | 1 to 1 |
| /product/red-black-bag (discontinued) | 240 | 0 | /collections/leather-bags | to parent |
| /cart, /my-account | 0 | 0 | none | excluded, 410 |
Step 2: building the 301 redirection file
One-by-one or by pattern
The one-by-one rule applies as soon as a page has traffic, backlinks, or distinct search intent. Every live product page, every collection, and every blog post that ranks in Google deserves its own row.
The pattern-based rule applies to the rest: pagination pages, obsolete variants, and old merged categories. These are sent to the closest relevant parent theme. What we never do is mass-redirect orphans to the homepage. Google treats these non-relevant redirections as soft 404s and passes nothing on.
The format Shopify expects
Once you have the old sitemap and the exports of the new site in hand, building the table is very fast, even when delegating it to an AI assistant to which 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 in the back-office under Content, then Menus, then URL Redirects, using the Import button. Three limits to know before you start:
- Shopify accepts neither regular expressions nor wildcard characters. One row 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.
- On our projects, beyond a few thousand rows, the native import becomes laborious. Matrixify takes over and also manages batch updates.
We use it well beyond just redirections. Our four use cases on client projects, including an FTP logistics feed, are detailed in our feedback on Matrixify.
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 the 410 status for pages that have no equivalent and no traffic.
Merged collections. Several old categories to one new collection: this is legitimate, provided the new page well covers both intents. Otherwise, you transform two average positions into one 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 properly redirected.
Step 3: technical traps that undo your work
A complete plan can be neutralized by eight execution flaws. Each has a simple fix, and the last two are the ones that cause the most damage because they trigger no alerts.
- Redirection chains. Old URL to intermediate URL to final URL. Each hop dilutes the signal and slows down the crawl. Fix: systematically flatten to the final destination, and never exceed three hops.
- 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 301 redirection signals a permanent move, 302 a temporary one: Google then keeps the old URL as the canonical version and signals remain stuck upstream. A migration is permanent, so 301, always.
- 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, the links between language versions must be rebuilt at the same time as the redirections, otherwise Google serves the wrong language. Shopify Markets handles the generation, but each market must be correctly associated.
- Non-updated sitemap. 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: delete it explicitly.
- Noindex inherited from pre-production. A meta robots noindex tag left in place during tests, forgotten in a template or app, and the store launches invisible. Fix: search for "noindex" in the theme and check the source rendering of five different templates on launch day.
- Structured data injected client-side. Some review or schema apps write JSON-LD in JavaScript after loading. Bots that don't render JavaScript won't see it, and your rich snippets disappear at the very moment you need strong signals. Fix: favor markup rendered in the theme's Liquid, and check the result on the raw source code, not in the browser inspector.
What AI crawlers do with your redirections
Your redirections are no longer read by Googlebot alone. GPTBot, ClaudeBot, and PerplexityBot crawl your store and follow 301s as the HTTP standard dictates. But where Google documents a tolerance for about ten successive hops, none of these actors publish theirs, and available log analyses converge on a significantly lower threshold: around five hops, and sometimes three for bots that power an answer while it is being read. We therefore work on the low-end hypothesis.
Above all, this abandonment is silent. No errors are reported, no report warns you: the page simply stops appearing in generated responses. A chain of redirects that Google eventually digests can therefore cost you your citations in ChatGPT or Perplexity without anything changing in Search Console.
This does not change the method, but it makes three rules mentioned earlier more stringent.
- One jump, two at most, on your strategic pages. Collections and products that drive your revenue tolerate no chains. Flatten before import, not after.
- Fine-tuned mapping rather than a catch-all. Redirecting en masse to the homepage doesn't just produce soft 404s on Google's side. It destroys the association between the old content and the new, and a generative engine then has no reason to cite you over a competitor.
- The legacy robots.txt. Many sites have added rules blocking GPTBot, ClaudeBot, or PerplexityBot in recent years. On Shopify, the file is managed via robots.txt.liquid in the theme. Check what you are actually allowing before the switch, rather than renewing a decision made in a different context out of inertia.
The benchmark to remember: 60 days after a clean migration, you should have retained the bulk of your organic traffic and the bulk of your AI citations. If the traffic returns but mentions in generative responses do not, look at your redirect chains and robots.txt, not the content.
Step 4: The day of the switch to Shopify
The order of operations matters as much as the operations themselves. Here is the sequence we follow, in this precise order.
- Import the redirect file before pointing the domain to Shopify. The rules must exist the moment the first request arrives.
- Switch the DNS and remove the store password.
- Check robots.txt: no blocking directives inherited from the pre-production phase, and no residual noindex tags in templates.
- Submit the new sitemap in Search Console and remove the old one.
- Test a sample of 30 to 50 old URLs, prioritizing those that are best positioned, and confirm that each correctly returns a direct 301, without an intermediate jump, to the correct page.
- Verify that analytics tracking is correctly recording sessions on the new domain.
This sample verification takes an hour. It is the only window where a mass error can be fixed without cost.
Changing domain name and platform at the same time
Changing platforms while keeping your domain is one project. Changing platforms and domains at the same time is two, and the latter is by far the riskier one. Declare the transfer using the Change of Address tool in Search Console: Google will then transition the signals from the old domain to the new one for a window of about six months, after which the two domains become strangers to each other again.
Recovery times are also unrelated. For a platform migration with a constant domain, we observe a return to normal in 4 to 8 weeks. For a domain change, industry studies covering several hundred migrations suggest trajectories measured in months rather than weeks, with a significant portion of sites never regaining their original level. Our stance: if both changes are not essential at the same time, separate them by a quarter and keep the redirects active indefinitely.
Step 5: 90-day post-migration monitoring
A successful migration is confirmed in weeks, not days. The Search Console indexing report becomes your dashboard: indexed pages, unexpected 404s, and the impressions curve. Here are the orders of magnitude we observe when the mapping is complete, and the thresholds that should trigger intervention.
| Period | What happens | Normal trajectory | Warning signal |
|---|---|---|---|
| Week 1 | Google recrawls and discovers the 301s | Organic sessions down 10 to 25% | Drop greater than 40% |
| Weeks 2 to 4 | Transfer of authority to new URLs | Gradual recovery, 404s decreasing | Volume of 404s increasing |
| Weeks 5 to 8 | Index stabilization, return of AI citations | Return to 90 or 100% of previous level | Plateau below 70% |
| Weeks 9 to 12 | Effect of technical gains from the new store | Exceeding initial level | Stagnation, to be investigated page by page |
Add one line to this dashboard: tracking mentions of your brand in generative responses. A handful of test queries, posed to ChatGPT, Perplexity, and Google in AI mode before the switch and then every two weeks, is enough to spot a loss of citation. It is the only signal that will never show up on its own in your analytics tools.
A sustained plateau below 70% almost never means a penalty. It means a family of URLs was forgotten in the initial inventory. We then return to the source sitemap and look for what was missing.
Shopify migration: do it yourself or delegate?
The decision depends on volume and stakes, not technical complexity. Below 200 useful URLs, with a stable catalog and an architecture that changes little, mapping can be done by hand in a single day. The method described here is more than sufficient.
Beyond that, with multilingual catalogs, filtered collections, or a significant backlink history, every point of lost traffic translates into revenue, and professional assistance pays for itself quickly. To gauge the investment, see what budget to plan for a migration.
Once the switch is secured, the subject changes in nature. You are no longer protecting capital, you are growing it: this is where Shopify SEO support takes over.
A high-volume URL migration?
We produce the mapping, the redirect file, and the 90-day monitoring as part of our migrations. If your catalog exceeds a thousand URLs or if your organic traffic contributes significantly to your revenue, let's talk about your project.