“We’ll export the products, rebuild the design, and point the domain at it.”
That sentence has cost more organic traffic than any algorithm update I have watched.
Not because anything in it is wrong. Because of what it leaves out, which is most of a Magento to Shopify migration.
A Magento to Shopify migration is the one project where the SEO work has a hard deadline set by somebody else, and missing it is not recoverable in the way most SEO mistakes are.
There is also a platform-specific trap in this particular move that does not exist going the other way, and almost nobody plans for it.
Nine steps of a Magento to Shopify migration. In order.
Key Takeaways
- Every product URL will change. Shopify forces /products/ and /collections/, so a Magento to Shopify migration cannot preserve the old structure.
- Shopify lets you redirect only from broken URLs. If the old URL still loads, the redirect will not fire, so nothing can be pre-built and tested.
- You cannot redirect from fixed Shopify paths: /products, /collections and /collections/all are off limits, along with /cart, /orders, /apps and four others.
- The redirect ceiling is 100,000 URLs, or 20 million on Shopify Plus. Large Magento catalogues can genuinely hit it.
- Google states that 301 and other permanent redirects do not cause a loss in PageRank, so the risk is missing redirects, not redirects themselves.
- Keep redirects for at least a year, per Google, because that is how long signal transfer and third-party link reassignment take.
- Expect temporary ranking fluctuation. Google says a medium site takes a few weeks for most pages to move in the index.
- The .html suffix on Magento URLs is the single most commonly missed pattern in the redirect map.
- The URL map is not on the critical path, which is exactly why it slips and exactly why migrations fail.
- Crawl the old site before anything is switched off. Once Magento is gone, the list of URLs you needed is gone with it.
- Layered navigation URLs from Magento are usually not worth redirecting, but the handful with real traffic are.
- Budget a full quarter from kickoff to stable, with the last four weeks being monitoring rather than building.
What Makes a Magento to Shopify Migration Different?
A Magento to Shopify migration will not let you keep your URLs, and will not let you practise the redirects.
Those two constraints together are unique to moving onto Shopify, and they invert the usual order of work.
Start with the URLs, because that is where the damage happens.
Five URL shapes, five rewrites, zero survivors
Shopify decides the path structure, so the old shape cannot be carried across.
Path rules per Shopify documentation. Handles shown are illustrative.
A typical Magento product sits at something like /outdoor/tents/vango-banshee-200.html.
On Shopify that product will live at /products/vango-banshee-200. The category nesting is gone, and so is the .html.
You cannot configure your way around it. Shopify’s documentation lists /products, /collections and /collections/all as fixed paths that cannot be redirected from at all.
So every product, every category and every CMS page changes address on the same day of the Magento to Shopify migration.
This is why the redirect file has to be finished, checked and sitting in a folder before cutover weekend, rather than being written during it.
One more limit worth knowing before you scope anything. Shopify allows a maximum of 100,000 URL redirects, rising to 20 million on Plus.
A Magento catalogue with layered navigation can generate more URLs than that on its own, which is a scoping conversation rather than a technical one. The mechanics are identical to Shopify collection filters generating pages you never built.

Step #1: Crawl the Old Site Before You Touch Anything
Everything downstream in a Magento to Shopify migration depends on a complete list of what currently exists.
Crawl the Magento site fully, then add three sources the crawler will miss.
- Search Console. Every URL with impressions in the last 12 months, including ones no longer linked internally.
- Your backlink data. Pages other sites link to, which are the ones a missed redirect costs most.
- Server logs. URLs real users and crawlers actually request, including the odd legacy paths nobody remembers creating.
Save all of it somewhere outside Magento, before the Magento to Shopify migration touches anything.
Once the old store is switched off, the list of URLs you were supposed to redirect is switched off with it, and reconstructing it from memory is not a plan.
Step #2: Build the URL Map Before the Theme
One spreadsheet drives the whole Magento to Shopify migration. Old URL, new URL, traffic, links, decision.
Most of a Magento to Shopify migration map can be generated with patterns rather than typed by hand.
What maps automatically and what needs a human
| Magento pattern | Shopify destination | Automatable? |
|---|---|---|
| /category/product.html | /products/handle | Yes, match on SKU |
| /category/subcategory.html | /collections/handle | Mostly, check nesting |
| /catalog/product/view/id/123 | /products/handle | Yes, via ID lookup |
| ?color=blue&size=10 filters | Collection, or nothing | No, decide by traffic |
| /blog/post-name | /blogs/news/handle | Yes, but the prefix changes |
| CMS pages | /pages/handle | Yes |
| Discontinued products | Parent collection | No, judgement call |
Row four is where teams lose days. Decide by traffic, not by completeness.
For discontinued products, redirect to the closest parent collection rather than the homepage.
Homepage redirects are treated as soft 404s and help nobody, least of all the customer who wanted a tent. The same logic governs removed products generally, as covered in crawl budget optimization.
Step #3: Export and Reconcile the Data
Products, customers, orders, reviews. In that order of difficulty.
Products are mechanical. Reviews are the ones that quietly disappear, because they usually live in a third-party extension with its own export format, and rebuilding them later is product content work nobody budgeted for.
Reconcile by count before moving on. Number of products, number of variants, number of images, number of published reviews. It is the cheapest checkpoint in the whole Magento to Shopify migration.
If the counts do not match, find out why now rather than three weeks after cutover when somebody notices a category looks thin.
Step #4: Rebuild the Templates, Not the Design
This is the longest task in a Magento to Shopify migration and the one everybody wants to start with.
Resist redesigning at the same time as replatforming. If traffic drops afterwards you will not know which change caused it.
Match the old templates closely enough that the content, headings and internal linking survive, then redesign a quarter later once the migration has proved itself. Budget it separately using what Shopify development costs.
Three things must carry across exactly.
- Title tags and H1s. Not “similar”. The same, unless you have a specific reason and a note explaining it.
- Category and product copy. Including the long description nobody reads, which is doing more ranking work than anyone believes.
- Structured data. Product, price, availability and reviews. Shopify themes vary in what they output, so check rather than assume.
Whether you use a stock theme or build from scratch changes the timeline more than the outcome, which is the trade we set out in theme versus custom build.

Step #5: Write the Redirect File and Leave It Loaded
Finished, validated and sitting in a folder before cutover weekend begins. No Magento to Shopify migration survives writing it live.
Because of Shopify’s broken-URL rule you cannot test it on the live store beforehand, so validation happens in the spreadsheet instead.
- Every old URL appears exactly once. Duplicates are silently dropped and you will not be told which.
- No destination is itself a redirect. Chains cost crawl budget and dilute the transfer. Point everything at its final address.
- No destination 404s. Check every target against the new site’s actual URL list, not against what you intended to build.
- Both suffixed and unsuffixed versions covered. The .html trap, again, because it is worth two mentions.
- Nothing starts with a forbidden prefix. Shopify rejects redirects from /apps, /application, /cart, /carts, /orders, /services and /shop.
Sort the file by traffic descending. If the upload fails halfway, at least the valuable half landed.
Step #6: Test Everything That Is Not a Redirect
Staging can prove the store works. In a Magento to Shopify migration it cannot prove the redirects work, so spend the time on what it can actually test.
Checkout on a real phone. Tax and shipping rules. Discount codes. Product variants with odd option combinations. Structured data validation. Page speed on a product template with the real number of images.
And the one nobody schedules: search the new store for your ten best-selling products by name and check they come back. While you are there, check the app scripts you inherited are not adding seconds to every page.
Internal search behaves differently on Shopify, and a product that cannot be found internally will not sell no matter how well the migration went. It is one of the eight checks in fixes to try before a redesign.
Step #7: Cut Over on a Quiet Day
Tuesday morning. Not Friday evening, and not during a promotion.
The reasoning is unglamorous. If something breaks you want a full working week of people available to fix it, and you want traffic low enough that the damage is contained.
Google’s guidance on site moves is explicit that you should expect temporary fluctuation in ranking during the move, so choosing a low-stakes window is the only lever you have over the cost of that.
Step #8: Upload the Redirects Immediately
This is the first moment in a Magento to Shopify migration that the redirects can exist, and the gap before they do is pure loss.
The old URLs are now broken, which is precisely the condition Shopify requires, so the file you prepared in Step #5 can finally go in.
Then spot-check by hand. Twenty URLs, chosen from the top of your traffic list, tested in a browser rather than a tool.
The good news for any Magento to Shopify migration is that the mechanism itself is safe. Google states plainly that 301 and other permanent redirects do not cause a loss in PageRank.
A year is the floor, not the target. There is no benefit to removing them and a real cost to doing it early, so leave them permanently unless something forces the issue.

Step #9: Monitor for Eight Weeks, Not Eight Days
The dip is expected in any Magento to Shopify migration. The shape of the recovery tells you whether it worked.
Down for two weeks, level by ten
What a migration that went right actually looks like week by week.
Illustrative recovery curve. Google notes a medium site takes a few weeks for most pages to move in the index.
Google notes that a medium-sized website can take a few weeks for most pages to move in the index, and that larger sites take longer.
So the first fortnight tells you almost nothing, which is inconvenient because that is exactly when everybody is looking.
Watch four things weekly.
- 404s in Search Console. Every one is a redirect you missed. This is the highest-value report for the first month.
- Indexed page count. Should fall as old URLs drop out, then recover as new ones are processed.
- Impressions, not positions. Impressions move first and give you an earlier read on whether pages are being seen at all.
- Revenue per session. Separates a traffic problem from a store problem, which look identical in a revenue chart.
If week six still looks like week two, the problem is not patience. Go back to the 404 report and find the pattern you missed, then check the survivors are not indexed but not ranking for a different reason.
Where Does the Time Actually Go?
Not where the risk is, which is the structural problem with every Magento to Shopify migration plan.
The riskiest work has the most slack
Dependencies between the nine steps, with the longest chain highlighted.
Typical durations for a mid-sized catalogue. Yours will differ, the shape rarely does.
The theme build dominates the schedule. The URL map, which is the thing that decides whether you keep your rankings, sits off the critical path with slack around it.
Tasks with slack get postponed. That is not a moral failing, it is how project scheduling works, and it is why so many a Magento to Shopify migration ships with a half-finished redirect file.
Which is why the URL map should be given a hard internal deadline weeks before it is technically needed, and treated as a blocker even though the Gantt chart says it is not.
What Does Skipping Each Step Actually Cost?
Not all of these fail equally, and knowing which parts of a Magento to Shopify migration are recoverable changes how you spend a tight week.
What breaks, and whether you can fix it later
| Skipped step | What happens | Recoverable? |
|---|---|---|
| Crawling the old site | You never learn which URLs existed | No, once Magento is off |
| URL map | Redirects written under pressure, patterns missed | Partly, from the 404 report |
| Data reconciliation | Missing products and reviews nobody notices for weeks | Yes, tediously |
| Title and copy parity | Rankings drop for reasons unrelated to URLs | Yes, if you kept a copy |
| Redirect validation | Chains, loops and destinations that 404 | Yes, within days |
| Staging QA | Broken checkout on live traffic | Yes, expensively |
| Uploading redirects promptly | Every old URL 404s while you finish the file | Yes, but you lose the window |
| Eight weeks of monitoring | A missed pattern stays missed | Yes, whenever you look |
Only the first row is genuinely unrecoverable, which is why it is step one.
Read that first row again before scheduling anything.
Every other failure in a Magento to Shopify migration can be repaired afterwards with enough patience. Losing the record of what used to exist cannot.
It also takes about an hour, which makes it the best value hour in the entire project.
The second row is the one that produces the horror stories, and it is worth being precise about why.
A rushed redirect file usually misses a whole pattern rather than individual URLs. One missing rule for the .html suffix takes out every product page at once, which looks like a catastrophe and is actually a five-minute fix once somebody spots it.
That is the argument for the 404 report over any dashboard. It shows you patterns, and patterns are what you are hunting.
Frequently Asked Questions
Will a Magento to Shopify migration lose rankings?
Temporarily, almost always. Google says to expect fluctuation during a move and that a medium-sized site takes a few weeks for most pages to reindex, so a dip is normal and a failure to recover after two months is not.
Can I keep my Magento URLs on Shopify?
No. Shopify uses fixed paths for products and collections, and its documentation lists /products, /collections and /collections/all as paths you cannot even redirect from. Every product and category URL changes.
Why can I not set up redirects before the migration?
Shopify only redirects from broken URLs, and states that if a URL still loads a valid webpage the redirect will not work. The old URLs are not broken until cutover, so the file has to be prepared in advance and uploaded immediately afterwards.
How many redirects does Shopify allow?
A maximum of 100,000, rising to 20 million on the Plus plan. Large Magento catalogues with layered navigation can exceed the standard limit, which needs deciding during scoping rather than during cutover.
Do 301 redirects lose link equity?
Google states that 301 and other permanent redirects do not cause a loss in PageRank. The risk in a migration is URLs with no redirect at all, not the redirects you do implement.
How long should I keep the redirects?
Google recommends keeping them for as long as possible and generally at least one year, because that is how long it takes to transfer signals and for other sites to update their links. In practice there is no good reason to ever remove them.
What is the most commonly missed redirect?
Anything with the .html suffix that Magento appends by default. Redirect maps generated from a product export omit it, so the indexed version of every URL goes unmapped.
Should I redirect filtered category URLs?
Only the ones with real traffic or links. Magento layered navigation can generate enormous numbers of filter URLs, and redirecting all of them wastes your redirect allowance on pages nobody visits.
Where should discontinued products redirect to?
The closest relevant collection, not the homepage. Homepage redirects for removed products tend to be treated as soft 404s and they leave the customer further from what they wanted.
Should I redesign at the same time?
No. Changing platform and design together makes any traffic change impossible to attribute. Match the old templates closely, prove the migration worked, then redesign a quarter later.
How long does the whole project take?
Around a quarter for a mid-sized catalogue, of which the final four weeks are monitoring rather than building. The theme build usually dominates the schedule even though the URL work carries the risk.
What should I check first if traffic does not recover?
The 404 report in Search Console, looking for a pattern rather than individual URLs. A missed rule affecting one URL shape, such as the .html suffix or a category prefix, explains most failed recoveries.
Next Steps
Before the Magento to Shopify migration starts, do these three.
First, crawl the Magento site today and store the export outside Magento. It costs an hour and it is unrecoverable later.
Second, count your URLs against the 100,000 redirect ceiling. If you are close, decide now which classes you are not redirecting.
Third, put a hard deadline on the URL map that lands two weeks before cutover, and treat it as a blocker even though the schedule says it has slack.
Then read the two source documents in full: Google on site moves with URL changes and Shopify on creating and managing URL redirects. Between them they define every constraint in this article.
If you would rather have the URL map built and validated before anyone touches a theme, that is the part we do first, or send us your crawl and we will tell you where the risk is.

