Why most migrations lose traffic
Not because Shopify ranks worse than WordPress. It does not. Migrations lose traffic because the URL structure changes, the redirects are incomplete, and nobody notices for six weeks because organic decay looks like seasonality until it does not.
WordPress lets you put a product at any path you like. Shopify does not. Products live under /products/, collections under /collections/, and there is no negotiating with that. So every product and category URL you have ever earned a link to is about to change, and the only thing standing between you and a traffic cliff is a redirect map somebody has to actually build.
That map is the migration. Everything else is comparatively easy.
Build the redirect map before you build anything else
Export every indexed URL first. Pull them from Search Console, from your sitemap and from a crawl, then deduplicate. Search Console matters most because it tells you which URLs actually earn impressions, and those are the ones where a broken redirect costs money rather than tidiness.
Map each old URL to exactly one new URL with a 301. Not a chain, not a soft 404, not the homepage. Redirecting a discontinued product to the homepage is the most common mistake in ecommerce migrations and Google treats it as a soft 404, which means the link equity evaporates. Send it to the closest live product or the parent collection instead.
Shopify accepts bulk redirect uploads by CSV, so the map can be loaded before launch and tested on a preview theme. Do that. Discovering a redirect problem after cutover means discovering it in production, at the worst possible moment.
Decide what not to bring
A migration is the one moment when deleting things is cheap. Most WordPress stores accumulate a decade of thin pages: empty tag archives, author pages, paginated category sludge, half-finished posts nobody has read since 2019. Bringing them across means bringing the crawl budget problem with them.
Audit before you move. Anything with no impressions, no links and no conversions in twelve months does not need a new home. Anything with links but no traffic gets redirected to something relevant. Anything earning traffic comes across properly with its content intact.
This is also the moment to fix the catalog structure you have been living with. If colour is a separate product rather than a variant, or collections have grown organically into a mess, rebuild that now. Doing it later means a second round of redirects.
What a migration is actually for
Protecting traffic is the floor, not the goal. If all you achieve is arriving on Shopify with the same numbers you left with, you have spent a project budget on a lateral move.
Fused came to us on WordPress with conversion sitting at 0.6 percent and a storefront that fought the team on every change. We moved them to Shopify 2.0 and restructured for conversion rather than lifting and shifting page for page. Conversion went to 4 percent, a 600 percent increase, on the same catalog and the same brand.
Nothing about what they sold changed. The platform underneath it did, and the storefront stopped losing people before they reached the product. That is what a migration is for.
Sequencing the cutover
Build on a preview theme with the redirect map loaded and the catalog imported. Test the map against your top thousand URLs before anything goes live. Keep the DNS change for last, and make it when your traffic is lowest rather than on a Friday afternoon.
Leave the old site reachable for a short window if your platform allows it, so you can compare rendered pages side by side rather than from memory. Submit the new sitemap the same day and watch Search Console coverage for a fortnight. Expect a dip in the first two weeks; it is the recrawl, not a failure, provided the redirects resolve in one hop.
The work that follows the cutover matters as much as the cutover. Custom theme work gets you a fast, well-structured base. Conversion work is what turns that base into revenue, and retention is what stops you paying to acquire the same customer twice.
The checklist
Export every indexed URL from Search Console, the sitemap and a crawl. Map each one to a single 301 with no chains. Delete what has no traffic, no links and no conversions. Fix the catalog structure while redirects are already in flight. Load the map before launch and test it on preview. Move DNS at a quiet hour. Submit the sitemap immediately and watch coverage for two weeks.
Do that and the traffic survives. Restructure for conversion while you are in there and the migration pays for itself.