Stores move from Shopify to WooCommerce for good reasons: lower monthly app costs, full ownership of the code and data, content-heavy sites that fit WordPress better, or custom features that are hard to build inside Shopify. The move itself has a reputation for being messy, mostly because Shopify's export files don't match what WooCommerce expects.
This guide covers what moves, the import options that actually work, and the redirect rules that protect your search rankings.
What moves, and where it lands
| Shopify | WooCommerce | Notes |
|---|---|---|
| Products with variants | Variable products with variations | Shopify options become WooCommerce attributes |
| Collections | Product categories | Automated collections become plain categories |
| Tags | Product tags | |
| Metafields | Custom fields | Usually managed with ACF or similar |
| Customers | WordPress users with the Customer role | Passwords can't move |
| Orders | WooCommerce orders | Linked to customers by email address |
| Blog articles | Posts | |
| Pages | Pages | |
| Discount codes | Coupons | Automatic discounts need rebuilding |
| Apps | WordPress plugins or custom code | Each app needs a replacement decision |
Step 1: Audit the Shopify store
- Counts: products, variants, collections, customers, orders, blog articles, and pages.
- Apps: list every installed app and what it does. Subscriptions, reviews, loyalty, and product personalization apps store their own data, and it needs its own export.
- Metafields: product data shown on the storefront that doesn't come from the standard product fields.
- URLs and top pages: export your sitemap and note your best-performing pages from Google Search Console.
- Domain: if you bought the domain through Shopify, plan to transfer it or point its DNS to your new host.
Step 2: Choose an import method
| Method | What it covers | Good for |
|---|---|---|
| WooCommerce's built-in product CSV importer | Products only | Small catalogs with simple products, after reformatting Shopify's CSV |
| WP All Import | Products, plus customers and orders with add-ons | Flexible field mapping for unusual data |
| S2W – Import Shopify to WooCommerce | Products through the Shopify API; customers, orders, pages, blogs, and coupons in the paid version | Most stores, because it reads Shopify directly instead of CSVs |
| Cart2Cart or LitExtension | Products, customers, orders, and more | A hosted service that runs the transfer for you |
Why Shopify's CSV doesn't import directly
Shopify's product export puts each variant on its own row, grouped by a Handle column, with up to three option name and value pairs. WooCommerce's importer expects a parent "variable" product row followed by "variation" rows, each with attribute columns. The data is all there, but it needs reshaping first. That's why API-based tools are usually less painful than CSV for anything beyond simple products.
Note that the S2W plugin's documentation says importing customer details requires the Shopify store to be on the Shopify plan or higher, so check your plan before relying on it for customers.
Step 3: Set up WooCommerce before importing
- Install WordPress and WooCommerce on reliable hosting with SSL.
- Set your permalinks first (Settings → Permalinks). Choose the URL structure you'll keep, because your redirect rules depend on it.
- Create product attributes that match your Shopify option names, such as Size and Color.
- Configure currency, tax, and shipping zones.
Step 4: Run a test import
Import into a staging site first, then compare:
- Counts against your audit.
- Variable products: check that every variation has the right attributes, SKU, price, stock, and image.
- Customers and orders: confirm that past orders appear in the right customer accounts. Orders are matched to customers by email address.
- Content: Shopify blog articles and pages may contain Liquid tags or app embeds that WordPress won't render.
Step 5: Redirect Shopify's URLs
Shopify's URL patterns are predictable, which makes redirects easier in this direction. If you keep the same slugs, a few rules cover the whole store.
On an Apache or LiteSpeed server, add rules like these to .htaccess, adjusted to your permalink settings:
RewriteEngine On
RewriteRule ^collections/[^/]+/products/([^/]+)/?$ /product/$1/ [R=301,L]
RewriteRule ^products/([^/]+)/?$ /product/$1/ [R=301,L]
RewriteRule ^collections/([^/]+)/?$ /product-category/$1/ [R=301,L]
RewriteRule ^blogs/[^/]+/([^/]+)/?$ /$1/ [R=301,L]
RewriteRule ^pages/([^/]+)/?$ /$1/ [R=301,L]
The first rule matters: Shopify often links products inside a collection path, like /collections/hoodies/products/blue-hoodie, and those URLs need to land on the product too. If you'd rather not edit server files, the Redirection plugin supports the same patterns as regular expressions.
Any product or post whose slug changed during the move needs its own individual redirect.
Step 6: Plan customer accounts
Passwords can't move between platforms, because they're stored as one-way hashes. Customer accounts, addresses, and order history do move. After launch, send customers an email explaining the change with a link to set a new password through WooCommerce's "Lost your password?" flow.
Step 7: Launch
- Pause changes on Shopify, or note the time of the final export.
- Import orders and customers created since the test run.
- Re-check the counts.
- Point your domain to the new host and confirm SSL is active.
- Place a real test order, including payment, emails, and stock updates.
- Keep your Shopify store on a paused plan until you're sure everything you need has been exported.
After launch
- Submit your new sitemap in Google Search Console and watch for 404 errors.
- Check that analytics, conversion tracking, and marketing feeds (such as Google Merchant Center) point to the new store.
- Review page speed. WooCommerce performance depends on your hosting and plugins, which are now your responsibility.
Is moving to WooCommerce the right call?
WooCommerce gives you full control and freedom from per-app subscriptions. In return, you take on hosting, updates, security, and performance. It suits stores with a lot of content, custom requirements, or a team comfortable managing WordPress. If your main reason for leaving is a missing feature, check first whether a custom Shopify app could solve it. That's sometimes cheaper than a migration.