Migrate a WordPress site to Shopify without a properly built redirect map and you will lose organic rankings. Not might. Will. The redirect map is the contract between your legacy URL inventory and your new platform, and it is the single most consequential SEO artifact in any re-platform. This piece walks through how to build that contract: what to include, what to exclude, and how to validate the result before cutover.
What Is a Redirect Map, and Why Does It Matter So Much?
A redirect map is a file, typically a CSV or structured JSON document, that lists every URL on your legacy site alongside the URL it should resolve to on the new site. For WordPress-to-Shopify migrations, that means mapping every post, every page, every product (if you are running WooCommerce), every category, every tag archive, every author archive, and every static asset that has earned an inbound link.
The map matters because Google and other crawlers treat 301 redirects as a signal that the destination URL is the new canonical home for the content. Link equity, ranking signals, and content history transfer through the 301. They do not transfer through 404s. They do not transfer cleanly through 302s. And they do not transfer at all if a legacy URL simply stops resolving.
Our migration SEO methodology covers the full validation suite. This post focuses on the redirect map itself.
How Do WordPress URLs Map to Shopify URLs?
WordPress's permalink structure is flexible. Most production sites use /%postname%/ for posts and a custom hierarchy for pages. WooCommerce adds /product/<slug>/ and /product-category/<slug>/ by default. Shopify is far less flexible. Pages live under /pages/, blog posts under /blogs/<blog-handle>/<post-handle>, products under /products/<handle>, and collections under /collections/<handle>. Those path segments are not negotiable.
That means a WordPress site with example.com/about/ redirects to example.com/pages/about. A blog post at example.com/2024/03/why-we-migrated/ redirects to example.com/blogs/news/why-we-migrated or similar. The path structure changes, which is exactly why the redirect map cannot be skipped.
Building the Map: A Step-by-Step Approach
Step 1: Crawl the Legacy Site Exhaustively
The first input is a complete URL inventory. Run a full crawl with a tool like Screaming Frog or Sitebulb, configured to follow internal links, render JavaScript, and respect the live robots.txt. Export every URL the crawler discovers, including pagination pages, tag archives, author archives, attachment pages, and any URL returning a 200 status code.
In parallel, pull the URL list from Google Search Console (Coverage and Performance reports) and from the legacy XML sitemap. Sitemap-only URLs reveal pages the crawler may have missed; Search Console URLs reveal pages with actual indexed status and inbound impressions.
The merged list, typically deduplicated and normalized to lowercase, is the canonical legacy inventory. For a content-heavy WordPress site this can run from a few hundred to tens of thousands of URLs.
Step 2: Classify Every URL
Not every URL deserves a 301. The classification step decides what redirects, what gets marked gone, and what consolidates.
Three buckets:
Redirect. Any URL with inbound links, organic traffic, or strategic value. Most product pages, most blog posts that drew search traffic, the homepage, the about page, the contact page, major service pages. These all get a destination URL on Shopify.
410 Gone. Thin tag archives, empty author archives, expired campaign landing pages, attachment pages, and stale published drafts. Returning a 410 tells crawlers the page is intentionally gone, cleaner than letting them rediscover a 404 repeatedly.
Canonical merge. When multiple legacy URLs covered the same topic, whether pagination noise, near-duplicate category pages, or two posts on the same subject, redirect them all to a single canonical destination.
Classification is judgment work, not a script. For a 2,000-URL inventory, expect a half-day to a full day of work classifying by hand or with semi-automated rules driven by Search Console data.
Step 3: Match Destinations
For each Redirect-class URL, identify the destination on Shopify. For most pages this is straightforward: the about page maps to /pages/about, contact maps to /pages/contact. For blog posts, the handle is typically the post slug, so /2024/03/why-we-migrated/ becomes /blogs/news/why-we-migrated. For WooCommerce products, the product handle on Shopify usually matches the WooCommerce slug, but matches need verification, especially when slugs include special characters that Shopify normalizes.
Category pages are the trickiest. WooCommerce categories often map to Shopify collections, but the URL structure changes (/product-category/<slug>/ becomes /collections/<slug>), and faceted category permutations may not have a one-to-one Shopify equivalent. Some merchants need filtered collection URLs with query strings as destinations.
Step 4: Stage the Redirects in Shopify
Shopify accepts URL redirects via the admin (Online Store → Navigation → URL Redirects) and via the Bulk Editor or the Admin API. For migrations with more than a few hundred redirects, the Admin API or a CSV upload is the only practical approach.
Two technical details that regularly catch teams:
Shopify trims the domain. Redirects are stored as path-to-path mappings, /old-path to /new-path. The domain is not part of the rule.
Shopify does not natively support regex redirects. Pattern-based redirects, such as redirecting an entire /category/x/* tree, need to be expanded into individual rules or handled via a reverse proxy in front of Shopify. For most WordPress migrations, the rule count stays manageable and direct mapping works.
Step 5: Validate Before Cutover
Validation is non-optional. Build a script that takes the redirect map and runs every legacy URL through the new site in staging, confirming that each one returns a 301, that the destination URL returns a 200, and that the redirect chain is at most one hop. Multi-hop redirect chains leak ranking signal and slow crawlers.
Cross-check the map against the live XML sitemap of the legacy site. Any URL in the sitemap that is absent from the redirect map is either missed or intentionally excluded, and the team should know which.
Edge Cases That Catch People
Hreflang and Multilingual WordPress Sites
If the legacy site ran WPML or Polylang, every language variant has its own URL structure (/es/about/, /fr/about/). Shopify Markets handles multilingual content via subdirectories or subdomains, but the URL shapes differ. Every language permutation needs its own redirect rule, and the hreflang tags on the new site must reference the correct destination URLs.
Custom Post Types and ACF Pro Templates
WordPress sites with custom post types registered via ACF Pro or a custom plugin often have URLs like /case-studies/<slug>/ or /locations/<slug>/. These have no native Shopify equivalent. They typically become Shopify Pages with custom metafields and a templated section. The redirect rule itself is straightforward; the underlying content model is where the engineering work lives.
Search Result and Filter URLs
Indexed search result URLs (/?s=<query>) and faceted filter URLs should not be redirected. They are interaction surfaces, not content pages. Excluding them from the redirect map and letting them 404, or noindexing their equivalents on the new site, is the correct call.
Author and Date Archives
Author archives (/author/<slug>/) and date archives (/2024/03/) rarely earn ranking signal. The standard approach is to 410 them rather than build redirect rules pointing to a generic blog index. Pointing dozens of date archives at one destination dilutes signal more than letting them go cleanly.
WordPress to Shopify Redirect Strategy FAQ
How long does the redirect map work take?
For a typical content-led WordPress site with 1,000 to 5,000 indexed URLs, expect three to five working days across crawling, classification, destination matching, and validation. Catalog-heavy WooCommerce migrations run longer.
Should I use a plugin to maintain redirects on WordPress before the cutover?
If the legacy WordPress site already has a Redirection or similar plugin managing redirects, export those rules and merge them into the new map. Existing redirects represent prior decisions about content consolidation that should be honored, not re-litigated.
Can a WordPress-to-Shopify migration happen without losing organic traffic?
Yes, but only with a disciplined redirect map and the validation steps above. We have run migrations where organic traffic recovered to pre-migration baseline within four to six weeks. We have also been asked to clean up migrations where the redirect work was rushed. Those recoveries take months and rarely return to baseline without additional content work. Our WordPress to Shopify migration practice and our Shopify migration services team have run this play across content-led and catalog-led WordPress migrations.
When does WordPress make more sense than Shopify?
For content-led businesses where commerce is secondary to publishing, WordPress or WordPress with WooCommerce often remains the right answer. Our WordPress development and WooCommerce development practices serve those merchants. Migration is the right call when catalog and checkout demands exceed what WooCommerce reliably delivers at scale.
Talking to a Migration Team
If you are weighing a WordPress-to-Shopify migration and the SEO consequences feel like the biggest unknown, that instinct is correct. The redirect map is where most migrations either preserve or lose the rankings the legacy site spent years earning. We scope the redirect work as its own deliverable so it is not buried inside an engineering sprint.
Start a conversation with our team and we can walk through your URL inventory, your Search Console data, and the realistic migration timeline.
