Every Shopify migration is a URL migration
This is the fact that reframes the whole project. Shopify enforces path prefixes: products live under /products/, collections under /collections/, informational pages under /pages/, blog posts under /blogs/{blog}/.
You control the handle at the end. You do not control the prefix.
So if your current site serves products at /shop/blue-widget or /p/12345, every single one of those URLs changes. A Shopify migration is therefore also a URL structure change, and it needs the same complete redirect map — regardless of whether the project plan describes it that way.
Preserve handles where you can
The handle is the one lever available, and it is worth using deliberately.
If the old product URL was /shop/blue-widget, making the Shopify handle blue-widget gives you /products/blue-widget. The prefix still changed, so the redirect is still required, but the mapping becomes a clean pattern rule instead of a per-product decision.
Where the old site used numeric IDs — /p/12345 — there is no pattern available and every product needs an explicit mapping row. That is a data export and a join, not a rule, and it is worth knowing before the estimate is given rather than after.
The duplicate product URL pattern
Shopify serves each product at two paths: the bare /products/{handle} and the collection-scoped /collections/{collection}/products/{handle}. A product in five collections is reachable at six URLs.
Shopify canonicalizes the collection-scoped versions to the bare product URL by default, which is the correct behavior and generally works.
The caveat worth checking: theme customization sometimes breaks it. If a developer has modified the head template, the canonical may be missing or pointing at the wrong URL. It is one crawl and a filter to verify, and worth doing on any store with a customized theme.
Variants: a loss to forecast, not to discover
On many custom-built ecommerce sites, product variants have their own indexable URLs — a color, a size, a configuration, each ranking for its own long-tail queries.
Shopify handles variants as query parameters on a single product page. Those separate URLs stop existing.
This is a genuine consolidation loss. Several ranking URLs become one. Combined impressions for those variant queries will drop, and the drop is a consequence of the platform choice rather than a migration error.
Forecast it before launch and put it in front of whoever owns the traffic number. A predicted loss is a business decision. The same loss discovered in month two is a crisis.
Catalog size changes the approach
Under a few thousand SKUs, this is a spreadsheet exercise and Shopify’s own redirect manager handles it comfortably.
Above roughly ten thousand, in-platform redirect management becomes unwieldy and slow to work with. Move pattern-based bulk redirects to the CDN or edge, where they are faster, auditable in one place, and survive platform changes. Keep the in-platform manager for genuine one-off exceptions.
The general platform-migration method is on the replatform page, and if you are consolidating multiple storefronts, site consolidation covers the topic-conflict decisions that come with it.
Planning this move?
Send the launch date and what is changing. We will tell you which parts of this page apply to your situation and which do not.
- Reply
- Typically within one business day.
- Hours
- Monday to Friday, 9am–6pm US Eastern.
- First call
- Scoping, not a pitch. No deck.