Migration & Replatform · Cluster Anchor
Migrating to Shopify from WooCommerce: The SEO Playbook
The full technical migration playbook. URL mapping strategy, redirect chains, meta preservation, schema recreation, sitemap re-submission, and the honest 4-8 week traffic-dip expectation. Downloadable URL-mapping template and redirect strategy flowchart, from a UK Shopify SEO agency.
This is the anchor article for our migration cluster - see also our guides on Magento to Shopify migration and Shopify 1.0 to 2.0 migration. If you'd rather have this executed for you than DIY it, talk to our Shopify SEO agency team.
By Chris Coussons · 10 August 2026 · 23 min read
The honest starting point
Migrating from WooCommerce to Shopify without losing SEO is possible - but it requires deliberate execution across five workstreams: URL mapping (WordPress's flexible URLs into Shopify's rigid structure), redirect strategy (301s that preserve link equity), meta preservation (title tags, descriptions, H1s), schema recreation (Shopify's default schema differs materially from WooCommerce's), and sitemap re-submission timing. Expect a 4-8 week traffic dip in most cases - the recovery timeline and the fastest-recovery pattern are both covered in detail below. This is the full migration playbook we run on client engagements, including three anonymised recovery curves.
Why WooCommerce → Shopify migrations lose SEO (and how to prevent it)
Every platform migration - regardless of how carefully it's planned - triggers a temporary shakeup in how Google understands your site. This isn't a failure of execution; it's a structural consequence of changing URLs at scale. Three forces are at work simultaneously.
First, URL structure change forces a re-crawl and re-index of effectively your entire site. WooCommerce's permalink structure is fully configurable - many stores run flat product URLs (/product-name/), category-prefixed URLs (/category/product-name/), or fully custom permalink patterns. Shopify enforces a fixed structure: products live at /products/[handle], collections at /collections/[handle], and blog posts at /blogs/[blog-handle]/[article-handle]. There is no way to negotiate this - Shopify's core routing is not configurable at the platform level without a headless build. That means almost every URL on your site changes on migration day, even where the visible content doesn't.
Second, canonical signals reset. Google has built up years of confidence about which URL is the canonical version of a given page, how it relates to near-duplicates, and how much authority to assign it. A wholesale URL change asks Google to rebuild that model from scratch - even with perfect 301s in place, this rebuilding takes time measured in weeks, not hours.
Third, freshness and stability signals get disrupted. Google has historically shown a mild preference for URLs with a long, stable crawl history. A brand-new URL, even one that 301-redirects perfectly from an established one, doesn't inherit that stability signal instantly - it has to earn it back through consistent crawling and continued backlink and engagement signals pointing at the new address.
The contrarian point worth stating plainly: a popular claim in migration marketing is that "migrations don't hurt SEO if done right." This is wrong, and it sets store owners up for a nasty surprise mid-migration. Even textbook-perfect migrations - full URL mapping, clean 301s, preserved meta, recreated schema, same-day sitemap resubmission - typically lose 15-30% of organic traffic in weeks 1-4. The skill in a migration isn't avoiding the dip entirely; it's controlling its depth and shortening its duration. Anyone promising zero traffic impact either hasn't run enough migrations to have seen the pattern, or is quietly excluding branded search (which is genuinely more resilient) from the claim.
Pre-migration audit - what to catalogue before you touch anything
The single biggest predictor of a smooth migration is the quality of the pre-migration audit. Skipping this step - or rushing it - is the root cause of almost every horror-story migration we've been called in to fix. Before a single WooCommerce page is switched off, catalogue the following, in this order.
- Full URL inventory. Run a complete Screaming Frog crawl of the live WooCommerce site with JavaScript rendering enabled, and cross-reference against your XML sitemap and Google Search Console's indexed-pages report. You want three lists that agree with each other - crawled, sitemapped, and indexed - and a clear list of any discrepancies.
- Meta data per URL. Export every title tag, meta description and H1 from Yoast, Rank Math or All-in-One SEO. Most of these plugins support a bulk CSV export - use it rather than manually copying data page by page.
- Existing redirect chains. WooCommerce sites accumulate redirect plugins over years - Redirection, Yoast's redirect manager, or manual .htaccess rules. Map every existing redirect and resolve any chains (A → B → C) down to a single hop before migration, so you're not building Shopify redirects on top of an already-broken chain.
- Schema present per URL. Document what structured data currently renders on each template type - product, category, blog, static page - using Google's Rich Results Test or a schema-scraping crawl. You'll need this list to know what must be recreated on Shopify.
- Backlink profile per URL. Pull a full backlink export from Ahrefs (or Search Console's links report as a free fallback) and flag any URL with meaningful referring domains. These are your highest-priority redirects - a broken 404 on a page with 40 referring domains is materially worse than one with zero.
- Historical ranking data per URL. Export 12 months of Search Console performance data (queries, clicks, impressions, average position) per URL. This becomes your baseline for measuring the dip and recovery post-migration, and it also tells you which pages are worth extra manual care during mapping.
Budget real time for this stage. On a 2,000-SKU catalogue, a thorough audit typically takes three to five working days. It feels slow when the business wants to launch, but every hour spent here saves multiples of that hour in post-launch firefighting.
URL mapping: WordPress flexible URLs to Shopify's fixed structure
This is the highest-leverage single workstream in the entire migration. Get URL mapping wrong and no amount of clean redirects or recreated schema will fully compensate.
Product URLs are usually the most contentious. WooCommerce's default permalink is /product/[slug]/, but many stores customise this to remove the /product/ segment entirely, or nest products under a category (/category/product-slug/). Shopify has no equivalent flexibility: every product lives at /products/[handle], full stop. Where the WooCommerce slug and the desired Shopify handle differ, decide upfront whether to preserve the exact slug text (best for redirect simplicity and minimising the visible URL change) or take the opportunity to clean up poorly optimised slugs (better long-term, but it means every single one of those URLs needs an explicit redirect rule rather than a pattern-based rule).
Category URLs map to Shopify collections at /collections/[handle]. WooCommerce category URLs are frequently nested two or three levels deep (/shop/womens/dresses/); Shopify collections are flat by default. Nested category structures need a decision: either flatten to a single collection level and rely on collection filtering/faceting to recreate the hierarchy, or build a custom navigation structure that simulates nesting through menus while the underlying URLs stay flat. Either approach works - what doesn't work is leaving the decision until launch week.
Blog URLs are the pattern most migrations get wrong. WooCommerce/WordPress blog URLs are typically flat: /blog/article-slug/ or even just /article-slug/. Shopify forces a deeper structure: /blogs/[blog-handle]/posts/[article-handle] (or without the /posts/ segment depending on theme). This extra path depth is unavoidable on native Shopify - it is a structural feature of the platform, not a configuration choice. The mitigation is to keep the article-handle segment identical to the original WordPress slug, so the change in the URL is additive (extra path segments) rather than substitutive (a completely different slug), which meaningfully reduces the disruption to Google's understanding of the page.
Common conflicts worth planning for specifically: duplicate slugs across products and blog posts (WooCommerce allows this more loosely than Shopify), non-Latin characters in slugs that WooCommerce handles differently to Shopify's handle-sanitisation rules, and trailing-slash inconsistency (WordPress typically forces a trailing slash, Shopify typically forces the absence of one) - trivial individually, but multiplied across thousands of URLs they generate a meaningful chunk of your 404 risk if not handled as a blanket rule.
Interactive: URL mapping generator
Paste a batch of WooCommerce URLs below and this tool applies the pattern-matching logic described above to suggest a Shopify equivalent for each - a useful first pass before you build your full mapping spreadsheet.
Paste WooCommerce URLs (one per line - full URLs or paths) below. This applies the same pattern-matching rules we use on client migrations to suggest a Shopify equivalent for each. Treat the output as a first-pass draft, then verify each mapping manually against your live product and collection handles before building the redirect rules.
Redirect strategy - 301 chains that preserve link equity
301 (permanent redirect) is the only status code that should be used for a platform migration. 302s (temporary redirects) signal to Google that the move isn't permanent, which means link equity and ranking signals are not fully passed to the destination URL - a common and costly mistake when redirect rules are built quickly under launch-day pressure using whatever a plugin defaults to. Meta-refresh redirects are worse still, and should never be used for migration purposes; they're slow, poorly supported for equity transfer, and increasingly flagged by Google's crawlers as a soft-404 pattern.
Chained redirects are the most common technical failure we see. Because WooCommerce sites accumulate redirect plugins over years, it's common to find a URL that already redirects once or twice before it even reaches its current live page (A → B → C). If you build your new Shopify redirect from the original A URL straight to the new Shopify URL without first resolving that existing chain, you can inadvertently create a four- or five-hop chain once Shopify's own redirect is added. Google will generally still follow up to a handful of hops, but each additional hop slows crawling, dilutes equity transfer, and increases the chance of a chain simply timing out or erroring during a crawl. Resolve every chain down to a single hop as part of the pre-migration audit - don't discover them during launch week.
Bulk redirect setup on Shopify is handled either through the native URL Redirects admin panel (fine for a few hundred rules, painful to manage at scale) or by bulk CSV upload, which Shopify supports natively for exactly this use case. For catalogues above roughly 2,000 URLs, always use the CSV bulk-upload route - build your redirect map in the same spreadsheet as your URL mapping work, export the from/to columns in Shopify's required format, and upload in batches to catch formatting errors early rather than after 5,000 rows have failed.
Testing workflow before launch: crawl the full list of old URLs against the staging (or soft-launched) Shopify domain using Screaming Frog's redirect-checking mode, confirm every URL returns a single 301 hop to the correct destination, and specifically spot-check your highest-backlink-count URLs by hand rather than relying solely on the automated crawl. After launch, monitor Search Console's Page Indexing report daily for the first two weeks and weekly for the following six, watching specifically for a spike in "Not found (404)" or "Page with redirect" errors that would indicate a mapping gap.
Interactive: redirect strategy decision tree
Not sure how to redirect a specific WooCommerce URL pattern? Work through the decision tree below.
What type of WooCommerce URL are you redirecting?
Meta preservation - title tags, descriptions, H1s
Meta data preservation sounds simple in principle and is routinely botched in practice, usually because it's treated as an afterthought rather than a discrete workstream with its own QA pass. Start by exporting the full meta dataset from whichever SEO plugin the WooCommerce site runs - Yoast, Rank Math and All-in-One SEO all support a bulk CSV export of titles, descriptions and any custom canonical settings.
Import into Shopify is, unfortunately, still a largely manual process for anything beyond product titles - Shopify's native product import (via CSV or Matrixify) supports SEO title and meta description fields directly, which covers your product catalogue reasonably efficiently. Collection, blog and page-level meta typically needs to be set individually through the Shopify admin's "Search engine listing preview" field on each resource, or via a bulk-editing app if your plan and catalogue size justify one.
Verification workflow: after import, crawl the new Shopify site and export title tags and meta descriptions, then diff that export against your original WooCommerce export, matched by URL mapping. Any row with a blank, truncated, or Shopify-default-template title (a surprisingly common failure mode where a bulk import silently falls back to "{{ product.title }} - {{ shop.name }}" instead of your curated title) should be flagged and manually corrected before the migration is considered complete.
Schema recreation - Shopify vs WooCommerce schema differences
This is one of the most under-discussed parts of a WooCommerce-to-Shopify migration, and one of the most damaging to skip. WooCommerce sites running Yoast or Rank Math typically ship a fairly complete structured data stack out of the box - Product schema with an Offers block, BreadcrumbList, Organization schema, and often Article schema on blog posts. Shopify's default theme schema is noticeably thinner, and the gap varies significantly by theme.
The table below names the specific differences we see most often, and what needs manual recreation - typically via theme.liquid or template-specific snippets, covered in more technical depth in our structured data article.
| Schema area | Yoast / Rank Math (WooCommerce) | Shopify default theme | Recommended stack |
|---|---|---|---|
| Product schema | Product schema via WooCommerce SEO plugin, often incomplete offers block | Basic Product schema in most themes, missing review/rating in many free themes | Full Product schema with Offer, AggregateRating and Review injected via theme.liquid or a metafield-driven snippet |
| Breadcrumb schema | Yoast BreadcrumbList, generally reliable | Inconsistent across themes - several ship none at all | Explicit BreadcrumbList JSON-LD added to every template |
| Organization / LocalBusiness | Configured once in Yoast, applied sitewide | Not included by default | Add Organization schema sitewide via theme.liquid, LocalBusiness if applicable |
| Article schema (blog) | Full Article schema with author, datePublished, image | Shopify blog templates often omit Article schema entirely | Recreate Article schema for every migrated blog post |
| FAQPage schema | Yoast FAQ block generates schema automatically | No native FAQ block or schema | Hand-build FAQPage JSON-LD for any page carrying FAQ content |
| Sitelinks search box | WebSite + SearchAction schema common on WooCommerce | Rare in default themes | Add WebSite schema with SearchAction pointing at Shopify's native search |
Validate every recreated schema block with Google's Rich Results Test before rolling it out sitewide - a single malformed JSON-LD block in a shared snippet can silently break structured data across your entire catalogue rather than on a single page, which is a far more painful bug to trace after launch than before it.
Content migration (product pages, collection pages, blog articles)
Product descriptions, collection descriptions and blog article bodies all need to move across in a way that preserves formatting, internal links and embedded media. WooCommerce stores content as standard WordPress post content (Gutenberg blocks or classic HTML), while Shopify stores it as rich-text HTML in the product, collection or article body field. The conversion is usually mechanical but rarely completely clean - Gutenberg-specific block markup, shortcodes from page-builder plugins, and WordPress-specific gallery shortcodes commonly break or render as raw text if migrated without cleanup.
Matrixify (formerly Excelify) is the tool we use most often for bulk content migration into Shopify - it supports CSV/Excel-based import of product, collection and blog content at scale, including custom fields mapped to Shopify metafields. For smaller catalogues, or where content quality matters more than speed, manual migration with a proofing pass is worth the extra time; a botched automated content migration that leaves shortcode debris across 500 product pages is a worse outcome than a slower, cleaner manual pass on 50.
Whichever route you take, preserve internal links within body content deliberately - an automated content migration will happily carry across a hyperlink pointing at the old WooCommerce URL, which then becomes a broken internal link on the new Shopify site unless your redirect map catches it. Audit internal links within migrated content specifically, rather than assuming your URL-level redirect strategy alone will catch link-level references buried in body copy.
Image migration (URLs, alt text, file names)
Image URLs change during a platform migration whether you plan for it or not - Shopify serves all images through its own CDN with its own URL structure, so there is no way to preserve the exact /wp-content/uploads/... paths WooCommerce used. This matters for image search visibility, which for many eCommerce categories (fashion, homeware, jewellery) is a meaningful traffic source in its own right.
Alt text preservation is the part most commonly dropped during bulk image migration, because many import tools focus on the image file itself and treat alt text as a secondary field. Export alt text alongside your meta data audit, and verify post-migration that every migrated image retains its original alt attribute rather than falling back to a generic "product image" default, which some import paths will silently apply if the field is left blank during CSV mapping.
File naming matters more than most migration checklists acknowledge. Descriptive, keyword-relevant file names (navy-wool-overcoat-front.jpg rather than IMG_4021.jpg) contribute a small but real signal to image search ranking. If your WooCommerce images already have descriptive file names, preserve them through the migration rather than letting an automated tool rename them to a generated ID during upload - check this specifically, as several bulk-upload paths into Shopify do rename files by default.
Sitemap re-submission workflow
Shopify generates its own XML sitemap automatically at /sitemap.xml, and you cannot fully customise its structure the way you could with a WordPress SEO plugin - but you can and should control when and how it's submitted to search engines post-launch.
The moment your Shopify store goes live on the production domain, submit the new sitemap to Google Search Console and to Bing Webmaster Tools the same day - don't wait for Google to discover it organically through crawling alone, which can add days of unnecessary delay to the recrawl process. If your Search Console property is verified for the domain (not just a subfolder), the sitemap submission should process within hours.
For your highest-priority URLs - your top revenue-generating products and any page carrying significant backlink equity - go beyond passive sitemap submission and use the Indexing API or IndexNow protocol (both covered in more depth in our sitemap architecture article) to actively request an expedited crawl. This is one of the five recovery-acceleration tactics covered in the next section, and in our experience it's the single highest-leverage lever for shortening the traffic dip.
The traffic-dip curve - realistic expectations
Below are three anonymised organic traffic recovery curves from client migrations we've run, indexed to 100 at week zero (the week before launch) so the shapes can be compared directly regardless of each store's absolute traffic volume. All three are genuine client engagements - LADC, Biopreventative and AB Ellie - with the specific tactics that produced each curve's shape covered in the recovery-acceleration section that follows.
Reading the curve: all three stores dip in the first two to three weeks, which is the expected pattern as Google recrawls and reindexes the new Shopify URL structure. LADC's fast-recovery curve - the shallowest dip and quickest return to baseline - reflects a migration where the pre-migration audit was unusually thorough and Indexing API submission was used aggressively on launch day. Biopreventative's mid curve reflects solid, standard execution without the extra acceleration tactics. AB Ellie's slower curve reflects a larger, more complex catalogue where content migration ran slightly behind schedule and schema recreation was completed in a second pass rather than at launch - a useful illustration that sequencing, not just quality, affects the depth and length of the dip.
By week 12-16, all three stores had not only recovered to pre-migration traffic levels but exceeded them - consistent with the wider pattern that a well-executed Shopify migration tends to outperform the legacy WooCommerce baseline once the dust settles, largely due to Shopify's stronger default technical performance (page speed, mobile rendering, uptime) acting as a tailwind once indexing stabilises.
Recovery timeline + acceleration tactics
Five tactics reliably reduce recovery time from the 8-week baseline down towards 4 weeks. None of these are exotic - the value is in doing all five in combination and immediately at launch, rather than trickling them in over subsequent weeks.
- Indexing API / IndexNow submission on launch day. Don't wait for organic recrawl. Submit your priority URL list - top revenue products, top-linked pages - the moment the new domain is live.
- Aggressive internal linking rebuild. Rebuild internal link paths from your highest-authority pages (usually the homepage and top collections) to priority product pages within the first 48 hours of launch, rather than leaving the default theme navigation as the only internal link signal.
- GSC removal-recovery requests. If old WooCommerce URLs were prematurely removed from the index (rather than left to redirect and age out naturally), use Search Console's URL inspection tool to request indexing of the correct new URLs directly.
- Freshness signal boost via content updates. A light content refresh - even a genuinely useful addition, not padding - to your top 20-30 pages in the two weeks following launch gives Google an additional freshness signal that can help re-establish ranking confidence faster than an untouched page waiting passively to be recrawled.
- Sitemap re-submission cadence. Don't submit the sitemap once and move on - resubmit weekly for the first month, and monitor the Search Console coverage report for stalled or excluded URLs that need manual intervention.
Applied together and started on launch day rather than reactively after a dip is noticed, these five tactics are what separate an 8-week recovery from a 4-week one in our client data.
Migration checklist (downloadable)
Use the interactive checklist below to track your migration in-browser, or unlock the downloadable versions of both the checklist and the URL mapping spreadsheet template further down.
0 of 17 steps checked off.
Downloadable URL mapping template
Enter your email to unlock the URL mapping spreadsheet template.
Downloadable migration checklist
Enter your email to unlock the full migration checklist PDF.
Frequently Asked Questions
Work With Visionary Marketing
Planning a WooCommerce to Shopify migration?
We run the full playbook above on client engagements - audit, URL mapping, redirects, schema recreation and post-launch monitoring, so the traffic dip is as shallow and short as possible.
Visionary Marketing is a UK-based SEO and Google Ads agency that takes a data-led approach to growth. We don't guess - we analyse your market, competitors, and performance data to build strategies that drive measurable revenue. Every campaign is grounded in real numbers, not assumptions.
About the Author
Chris Coussons
Founder · Visionary Marketing
Chris is the founder of Visionary Marketing, a UK SEO and Google Ads agency featured in Digital Reference's Best UK Digital Marketing Agencies 2026. With 15+ years running senior-level performance campaigns for SaaS, B2B and eCommerce brands, he writes about what actually moves revenue - not vanity metrics. Every article is published from first-hand client data, audits and live account work.
Related Services