To migrate Shopify to WooCommerce, you export your data from Shopify, set up WordPress and WooCommerce on hosting you control, import products, customers and orders into a staging site, rebuild the storefront and replace your apps with plugins, map every old URL to a new one with 301 redirects, then test and switch the domain over. The data move is the easy part. Redirects, apps and the things that don't export at all are where migrations go wrong.
Merchants usually make this move because they want to own the stack, cut monthly app fees, control URLs and content, or because the store is really a content site with a shop attached. Each is a good reason, and none of them makes the migration simpler, so this guide goes through it step by step, in the order we'd run it.
What moves, what needs work, and what doesn't move
Before picking a tool, know which data Shopify will actually give you. Shopify's admin exports products, customers, orders and discounts as CSV files. Everything else either needs an export app, the Admin API, or rebuilding by hand. Our comparison of Shopify to WooCommerce migration plugins and tools covers what each option moves and misses.
- ✓Products and variants: export as CSV from the admin, import into WooCommerce as simple and variable products. Straightforward, but option names and attribute values need cleaning first.
- ✓Product images: the export contains image URLs, which WooCommerce's importer can fetch into the Media Library while the Shopify store is still live.
- ✓Collections: manual collections become categories. Automated collections are rules, so they have to be rebuilt as category assignments or filter rules. Check how your export tool carries collection membership before you rely on it.
- ✓Metafields: the standard product CSV may not include every metafield. Check the export columns, and use the Admin API or an export app such as Matrixify for anything missing.
- ✓Customers: export as CSV with the default address, tags and email marketing consent. Import needs a plugin or migration service, because WooCommerce's core importer handles products only.
- ✓Customer passwords: don't move. Shopify never exposes password hashes, so every customer resets their password on the new site.
- ✓Orders: export as CSV. Importing them with status, line items and customer links needs a migration tool or a custom script.
- ✓Discount codes: exportable, but they have to be recreated as WooCommerce coupons, and automatic discounts rebuilt from scratch.
- ✓Gift cards: Shopify's export shows only the last four characters of each code, so balances can't be recreated from the export alone. Plan how you'll honour outstanding balances.
- ✓Blog posts and pages: Shopify has no native export for these. Use an export app, the Admin API or a migration service.
- ✓URL redirects: the existing redirects in Shopify can be exported as CSV and belong in your redirect map.
- ✓Apps and their data, the theme, Shopify Flow automations, Shop Pay, saved payment methods and checkout customisations: none of these move. Each is replaced or dropped.
Two items tend to catch people out. Passwords can't come across, so you need a launch email and a painless reset flow. Saved cards from Shopify Payments stay with Shopify, so subscription customers will usually have to enter payment details again unless your subscription app and new gateway support moving payment tokens. Ask both vendors before you promise customers anything.
Choose a migration method
There are three realistic routes. The right one depends on catalog size, how much order history you want to keep, and how much custom data sits in metafields and apps.
- ✓Manual CSV: export from Shopify, reshape the files in a spreadsheet, and use WooCommerce's product importer. Free and fine for a few hundred products. Customers and orders still need a plugin, and the reshaping is fiddly for variants.
- ✓Migration services and plugins: tools such as Cart2Cart and LitExtension connect to both stores and move products, customers and orders with field mapping, while WP All Import with its WooCommerce add-on gives you fine control over CSV imports. They're paid, usually priced by record volume, and they're the quickest route for mid-sized stores.
- ✓Custom scripts: a developer reads from the Shopify Admin API and writes to the WooCommerce REST API, mapping every field including metafields, SEO data and app data. More work up front, and the route that gives you full control over edge cases on a large or unusual catalog.
Whichever route you pick, import into staging first, compare the result against the Shopify exports, fix the mapping, wipe and import again. Don't fix data by hand on the first pass. You'll be importing at least twice, plus a final delta at cutover.
Step 1: Audit the Shopify store and freeze the scope
Crawl the live store and list every URL, app, integration and custom feature. Note which apps hold customer data, such as reviews, subscriptions, loyalty balances and wishlists. Pull twelve months of analytics and Search Console data so you know which pages carry traffic, revenue and backlinks and must not break.
- ✓Full URL list from a crawler, plus the top pages from Google Search Console
- ✓App inventory, with a WooCommerce plugin, custom build or drop decision for each
- ✓Integrations: ERP, 3PL, email platform, accounting, marketplaces, ad pixels
- ✓Custom theme features and checkout customisations that need rebuilding
- ✓A note of your current tax, shipping zone and rate setup
Step 2: Set up hosting, WordPress and WooCommerce
On Shopify, hosting was invisible. On WooCommerce it's part of the job. Pick managed WordPress hosting with object caching, a CDN, staging environments and automatic backups, and size it for your traffic peaks rather than an average day. Install WordPress, WooCommerce, an SEO plugin, a redirect manager, backups and security before importing anything.
Decide the permalink structure now, before import. If you want to keep Shopify-style paths such as /products/handle and /collections/handle, set WooCommerce's product and category bases to match and keep the slugs identical. If you'd rather use WooCommerce defaults such as /product/slug/, you're committing to a full redirect map. Either works, as long as you decide before the first import.
Step 3: Export everything from Shopify
From the Shopify admin, export products with all variants, customers, orders and discounts as CSV, and export the URL redirects. Export blog posts and pages with an export app or the Admin API. Download the current theme as a reference for the rebuild, and ask each app vendor that holds customer data for an export. Keep everything in a dated folder, because you'll repeat the exports for the final delta before launch.
Step 4: Map the data
- ✓Variants become WooCommerce variable products with attributes. Shopify allows up to three options per product and WooCommerce doesn't cap options at three, but attribute names and values must be consistent across products or filters break.
- ✓Manual collections become product categories. Automated collections need rebuilding as category rules or filter plugins.
- ✓Metafields become custom fields or product attributes, depending on whether they're display data or data customers filter by.
- ✓SEO titles and descriptions map to your SEO plugin's fields. Don't let them fall back to defaults.
- ✓Orders import with status, line items, totals and customer links, so reporting and order history survive.
- ✓Customer tags and marketing consent map to WooCommerce roles or meta and to your email platform's lists.
Step 5: Import into staging and compare
Run the first import on staging. Then check counts (products, variations, customers, orders) against the Shopify exports, and spot-check a sample of complex products: variant prices, stock, images, descriptions with embedded media, and any metafield-driven content. Fix the mapping rather than the data, wipe, and import again until a clean import needs no hand edits.
Step 6: Rebuild the storefront and replace the apps
Shopify themes don't run on WordPress, so the storefront is a rebuild. Use the old theme as the design reference and build with a block theme or a purpose-built WooCommerce theme, keeping the product page structure that was converting. If something on the old store wasn't working, fix it now instead of cloning it.
Replace apps one at a time from the audit list. Reviews, subscriptions and loyalty need their data exported from the Shopify app and imported into the WooCommerce plugin, which often means a support ticket to the old vendor. Bundles, upsells and pricing rules are sometimes simpler to rebuild in WooCommerce than to buy again.
Step 7: Payments, shipping, taxes and email
Connect your payment gateway, typically Stripe or PayPal, in test mode. Recreate shipping zones and rates from your notes on the Shopify setup, then set up tax with a tax service or WooCommerce's tax tables. Send transactional email through a dedicated SMTP or email API service, so order confirmations don't land in spam.
Step 8: Build the redirect map
This step decides whether the migration costs you traffic. Take the URL list from step 1 and map every Shopify URL to its WooCommerce equivalent as a 301 redirect. Shopify's URL patterns are fixed, which makes the map predictable:
- ✓/products/handle to your product URL, usually /product/handle/ or the same path if you kept Shopify-style bases
- ✓/collections/handle to the matching category URL
- ✓/collections/handle/products/handle, the collection-scoped product URLs Shopify themes often link to, to the same product URL
- ✓/pages/handle to the matching WordPress page
- ✓/blogs/blog-name/post-handle to the matching WordPress post
- ✓Your existing Shopify redirects, exported as CSV, updated so they point at the final WooCommerce URLs rather than chaining
Load the map into your redirect plugin or the server config. Redirect plugins handle query strings such as ?variant= differently, so test a few variant URLs from your ads and product feeds. Keep the same domain if you possibly can. A platform move and a domain move at the same time doubles the risk.
Step 9: Test before cutover
- ✓Place test orders on mobile and desktop with every payment method, including one real order in live mode, then refund it
- ✓Check shipping rates and taxes for each country you sell to
- ✓Run every URL in the redirect map through a checker and confirm each returns a single 301 to a 200 page
- ✓Confirm titles, descriptions and canonical tags on a sample of top pages
- ✓Check GA4, ad pixels and consent tooling fire on product, cart and purchase
- ✓Measure Core Web Vitals on product and category pages
- ✓Send test order, shipping and password reset emails to two mail providers
Step 10: Cutover and the first two weeks
Pick a low-traffic window. Freeze product edits on Shopify, run the final delta export and import of orders and customers created since your last import, and switch DNS to the new host. If Shopify manages your domain, transfer it or move its DNS well before launch day, because that can take days. Submit the new XML sitemap in Search Console on launch day and send the password reset email to customers.
Keep the Shopify store on a plan, closed to the public, until you've confirmed nothing is missing, so you can still export anything you forgot. For the first two weeks, watch Search Console for 404s and coverage drops, check that orders are reaching fulfilment and accounting, and compare conversion rate against the Shopify baseline.
What the migration costs
Doing it yourself costs time, hosting and the plugins you pick. Migration services are priced by the number of products, customers and orders. A managed migration that includes discovery, data mapping, the theme build, app replacement, redirects, tracking and post-launch support starts at $5,000 with us and grows with catalog size, order history and custom features.
If you're weighing WooCommerce against other platforms before committing, our comparison of Magento and Shopify in 2026 covers the same decision from the other direction.
If you want the migration handled end to end, including data mapping, redirects, the storefront build and launch QA, see how we run it.
Shopify to WooCommerce migration service →



