Shopify to WooCommerce: product CSVs, /products/ URLs and store redirects
Moving from Shopify to WooCommerce keeps your rankings when three things line up: products arrive with their handles as slugs, WooCommerce's permalink bases are set to imitate Shopify's /products/ and /collections/ paths, and every URL that still changes gets a 301 on WordPress before DNS moves. Shopify's own URL redirects stop working when your domain points elsewhere, and a store on a .myshopify.com address cannot redirect at all.
The product CSV is the richest export Shopify offers, with SEO titles, descriptions and image URLs. Blog posts and pages have no built-in export, and customer passwords never leave, so shoppers will set new ones.
What each Shopify export gives you
- Products (Products → Export) come as a CSV where one product spans several rows: the first carries the title, body HTML, vendor, tags, SEO title and SEO description, and later rows sharing the same
Handlecarry each variant and extra image. Image columns holdcdn.shopify.comURLs that an importer can download. - Customers export with names, emails, addresses and marketing consent, but no passwords. Plan a reset invitation for launch day.
- Orders export as a CSV for your records; importing history into WooCommerce is optional and usually handled by a migration plugin.
- Blog posts and pages have no export button. Copy them, or use a tool that reads them through Shopify's API.
WooCommerce's own importer (Products → Import) reads a CSV and lets you map columns, but it expects variable products as a parent row plus variation rows, which is not how Shopify lays them out. For anything beyond simple products, S2W (Import Shopify to WooCommerce, free on WordPress.org with a paid version) connects with a Shopify API key and brings products, variants, collections as categories, pages, blogs and customers across in one pass. Whatever you use, confirm the handle became the slug.
Recreating Shopify's URL structure
Shopify forces fixed prefixes, and WooCommerce can copy most of them under Settings → Permalinks:
| Shopify | WooCommerce default | Setting to match |
|---|---|---|
/products/linen-shirt | /product/linen-shirt/ | Custom product base /products/ |
/collections/summer | /product-category/summer/ | Product category base collections |
/pages/shipping | /shipping/ | Redirect, or a parent page named pages |
/blogs/news/spring-lookbook | /spring-lookbook/ | Post permalink /blogs/news/%postname%/ |
With those settings, most product and collection URLs survive with only a trailing slash added. Two Shopify-specific patterns still need rules. Products linked through a collection, /collections/summer/products/linen-shirt, have no WooCommerce equivalent; send them to the product. And /collections/all should go to the shop page. A server rule covers the first pattern for every product at once:
RewriteRule ^collections/[^/]+/products/([^/]+)/?$ /products/$1/ [R=301,L]
If you would rather stay in wp-admin, Hydrogen SEO's Redirection Manager can do it per product with an Ends With rule on /products/linen-shirt, which catches the product under every collection path. Links with ?variant= parameters land on the product page and are handled by its canonical, since WooCommerce variations do not have their own URLs.
Cutting over the domain
Run the new store on a staging address until products, checkout, shipping rates, taxes and emails all work. Then copy Shopify's URL redirect list, since each rule there records a past rename and should now point directly at its WooCommerce URL, and add it to WordPress alongside your new rules. The redirect rule generator flags any entry that points at another old URL.
Only then change DNS. A domain bought through Shopify can stay registered there while you edit its records, or be transferred out once the 60-day lock after registration has passed. Keep the Shopify plan active for a short overlap in case you need to roll back, and pause it once the new store has taken real orders.
Rankings, revenue and the post-launch list
Ecommerce moves carry more risk than blog moves because product pages rank on many small signals: structured data, reviews, internal links from collections, page speed. Expect some movement for a few weeks even with perfect redirects, and schedule the switch outside your busiest season. Products that drop and stay down usually lost their reviews, a large part of their description, or their place in category navigation.
- Test a sample of product, collection, blog and
/collections/.../products/...URLs for one 301 or a 200. - Validate a product page in the Rich Results Test and compare with what Shopify output; see Product schema.
- Update your Google Merchant Center feed so product links point at the new URLs.
- Send the password reset invitation to imported customers.
- Submit the new sitemap and run Hydrogen SEO's site audit for broken links and missing descriptions. For category pages, the WooCommerce category guide covers what to add.
Common questions
Can WooCommerce keep my Shopify /products/ URLs?
Yes. Set a custom product base of /products/ in Settings, Permalinks, and keep each product's Shopify handle as its slug. WordPress adds a trailing slash with its own redirect.
Can I move customer passwords from Shopify?
No. Shopify does not export passwords. Import customers without them and send each one an invitation to set a new password on the WooCommerce store.
Will Shopify's URL redirects still work after I switch?
No. They run on Shopify's servers and stop once your domain points to your WordPress host. Recreate them on WordPress, pointing each at its final URL.
Do SEO titles and descriptions come across from Shopify?
They are in the product CSV as SEO Title and SEO Description columns. Check that your importer maps them; if not, copy them for your best-selling products first.