
Most migration guides on the internet go one way: WordPress store owners moving to Shopify for an easier life. A Shopify to WooCommerce migration is the reverse journey, and it is more common than the marketing suggests – store owners who have outgrown the monthly fees, the transaction cuts and the locked-down checkout, and who want to own their platform instead of renting it. I have moved stores in both directions over 12+ years of WordPress work, and the traffic is far from one-way.
The move is absolutely worth doing for the right store – and absolutely worth doing properly, because an ecommerce migration has two failure modes that a brochure-site migration does not: losing orders during the switch and losing rankings after it. This guide covers the whole job honestly: why stores move, what migrates automatically and what needs manual work, the tools I actually use, the URL mapping that protects your SEO, the payment-token reality nobody warns you about, and a cutover plan that gets you to WooCommerce with zero lost orders. Real timelines and real cost ranges are at the end.
Table of contents
- Why stores move from Shopify to WooCommerce
- What migrates – the honest overview
- Products, categories and content: the tools compared
- Customers, orders, reviews and gift cards
- URL mapping and SEO protection
- Design: a rebuild, not a conversion
- Shopify apps and their WooCommerce equivalents
- Payments and subscriptions: the hard part
- The testing matrix before you switch
- Cutover with zero order loss
- Timeline, costs and the first month after
- Frequently asked questions
Why stores move from Shopify to WooCommerce
Shopify is a good platform, and for many stores it is the right one – I said as much in my WooCommerce vs Shopify comparison. But the reasons stores leave are consistent, and they get stronger as the store grows:
- Fees that scale with success. The monthly plan is the small part. Add transaction fees if you are not on Shopify Payments (0.5-2% of every order), app subscriptions that creep to USD 200-500 per month on a mature store, and higher plan tiers for features like better reports. A store doing EUR 30,000 a month can easily pay EUR 400-700 monthly for the privilege of selling. On WooCommerce the software costs nothing; you pay for hosting (EUR 20-60 for most stores) and a handful of plugin licences you own the choice of.
- Checkout control. On standard Shopify plans the checkout is a locked template. Want to reorder fields, add a trust element, tweak logic per product, or remove a step? Mostly you cannot without Shopify Plus money. On WooCommerce the checkout is yours – every field, every step, every rule.
- B2B and pricing complexity. Wholesale price lists, per-customer pricing, quote requests, VAT-exempt EU orders with validated VAT IDs, minimum quantities – all of this is app-stacking and workarounds on Shopify, and native or one-plugin territory on WooCommerce.
- Content and SEO ambitions. WordPress is the strongest content platform there is. Stores that live off content marketing – guides, comparisons, category landing pages – hit Shopify’s blogging and URL-structure limits quickly.
- Ownership. Your Shopify store exists at Shopify’s pleasure, under Shopify’s terms, on Shopify’s servers. Your WooCommerce store is yours: the code, the data, the hosting choice, the export path.
Be honest about the other side too: WooCommerce means you (or someone you hire) are responsible for updates, backups, security and hosting. If the fee savings are under EUR 100 a month and you have no other reason to move, staying put is a legitimate answer. Most stores I migrate save several hundred euros a month and gain capabilities they could not buy on Shopify at any price – that is the profile where the move pays for itself within the first year.
What migrates – the honest overview
Before any tools, set expectations. Everything in a Shopify store falls into one of three buckets:
- Migrates cleanly (automated): products with variants and images, customer records (name, email, addresses), collections (which become WooCommerce categories), order history, blog posts and pages. Tools handle these with high fidelity.
- Needs manual work (planned, not painful): customer passwords (they cannot be exported – every customer resets, more below), discount codes (rebuilt by hand or CSV), app configuration (recreated in the plugin equivalents), navigation menus, and the theme – which is not converted but rebuilt.
- Genuinely painful (needs a strategy): saved payment tokens, active subscriptions, gift card balances, and data locked inside Shopify-only apps that offer no export.
The single most important mindset shift: a migration is not “copy the store”. It is “move the data, rebuild the experience, redirect the URLs”. Stores that go in expecting a one-click clone get frustrated; stores that plan the three buckets separately have a boring, successful migration. Boring is the goal.

Products, categories and content: the tools compared
Products are the easiest part, and you have three realistic routes:
Shopify CSV export + WooCommerce importer (free)
Shopify exports products to CSV; WooCommerce has a built-in product CSV importer. It works for simple catalogues, but the formats do not match perfectly: variant structures need massaging, image galleries beyond the first image need attention, and metafields do not come along. Fine for 50 simple products; tedious for 500 with variants.
WP All Import + the Shopify feed (my usual choice)
WP All Import (with the WooCommerce add-on, around USD 200 for the pro bundle) can read Shopify’s product feed or CSV and gives you full mapping control: every Shopify field, metafield and tag goes exactly where you decide in WooCommerce, including custom fields and attributes. It is re-runnable, which matters – you will import at least twice (once to build, once to sync before cutover). This is what I use on most projects because the mapping is explicit and repeatable.
Migration services: Cart2Cart, LitExtension and friends
Paid services (typically USD 100-500 depending on entity counts) connect to both stores and move products, customers and orders in one job. They are convenient and handle order history well, but you accept their mapping decisions, their per-entity pricing, and the need to check their output carefully – I have seen variant images scrambled and HTML descriptions mangled. Good for stores with large order histories where API-level order import saves days; always run their demo migration and inspect 20 products closely before paying.
Collections become categories, tags become tags, and Shopify’s blog posts and pages import cleanly through WordPress’s standard importers or the same tools. Product descriptions come across as HTML – budget an hour or two to fix formatting oddities on your top 50 products, because those pages earn your money.
Customers, orders, reviews and gift cards
Customers and the password reality
Customer records migrate: names, emails, addresses, marketing consent. Passwords do not – Shopify will not export password hashes, and they would not match WordPress’s hashing anyway. Every customer will need to set a new password. Handle it deliberately: after cutover, send a friendly “we have upgraded our store – set your new password here” email with a one-click reset link, and make the account page’s reset flow obvious. Stores that skip this email get support tickets for weeks; stores that send it get a small wave of resets and silence. Expect a percentage of dormant customers never to reset – that is fine, their data and history are still attached to their email for when they return.
Order history – worth it?
Yes, almost always. Order history powers customer-facing “my orders” pages, support lookups, repeat-purchase marketing and accounting continuity. The migration services handle it best (orders link to the right customers and products automatically); WP All Import can do it with more setup work. For very large stores (100,000+ orders) I sometimes migrate the last two years into WooCommerce and archive the rest as an exported CSV – old orders are read-only history, and keeping the database lean helps performance. One thing to verify: order numbers. Continue the sequence from Shopify’s last order number so accounting and invoices stay unambiguous – a small plugin or setting handles the starting number.
Reviews
If reviews live in Shopify’s own review system, they export to CSV and import into WooCommerce’s native reviews. If they live in a third-party app (Judge.me, Loox, Yotpo), export from the app – most allow it – and import via CSV. Check that star ratings, dates and author names survive; review counts are ranking and conversion assets you do not want to zero out.
Gift cards and discounts
Discount codes do not migrate as active objects – export the list and recreate the ones that matter as WooCommerce coupons (usually a shortlist; most stores have dozens of dead codes). Gift cards are harder: outstanding balances are liabilities you must honour. Export the balance list from Shopify, then either issue equivalent codes in a WooCommerce gift card plugin (PW Gift Cards or the official WooCommerce Gift Cards extension) or – simplest for a small list – issue store credit coupons per customer. Reconcile the total outstanding balance before and after so finance is happy.
URL mapping and SEO protection
This is where migrations are won or lost, because Shopify forces a URL structure that WooCommerce does not use. Every indexed Shopify URL must 301-redirect to its WooCommerce equivalent, individually. The patterns:
| Shopify URL pattern | WooCommerce equivalent | Redirect approach |
|---|---|---|
| /products/product-slug | /product/product-slug/ | Pattern rule if slugs kept identical |
| /collections/collection-slug | /product-category/category-slug/ | One-to-one map (names often differ) |
| /collections/x/products/slug | /product/product-slug/ | Pattern rule stripping the collection |
| /blogs/news/post-slug | /post-slug/ | Pattern rule if slugs kept |
| /pages/page-slug | /page-slug/ | One-to-one map |
| /cart, /account pages | /cart/, /my-account/ | Handful of manual rules |
The working method: crawl the live Shopify store (Screaming Frog) and pull every URL that has impressions from Google Search Console, merge the lists, and build a spreadsheet with old URL, new URL and status. Keep product and post slugs identical wherever possible – then three pattern rules cover 90% of the map and only collections and pages need row-by-row attention. Implement the map with the Redirection plugin or, better on busy stores, at server level. Shopify’s forced /products/ and /collections/ prefixes disappear on WooCommerce, which is a small long-term SEO win – but only after the 301s carry your existing equity across. The full discipline – what to redirect, what to verify in Search Console, how long to keep redirects (answer: years) – is the same as any move; I wrote it up in detail in website migration without losing SEO rankings.
Beyond redirects: recreate title tags and meta descriptions (export them with the products – do not let them regenerate as defaults), keep your product content identical at switch time (migrate first, improve later, so you never confuse a ranking change with a content change), and regenerate structured data – WooCommerce plus an SEO plugin outputs product schema natively, often better than the Shopify theme did.
Design: a rebuild, not a conversion
I will say this plainly because plenty of sales pages will not: there is no such thing as converting a Shopify theme to WordPress. Liquid templates do not translate to PHP; the theme is rebuilt. Treat that as an opportunity, not a cost. You have three honest options:
- Rebuild your current design as a custom WooCommerce theme. Pixel-faithful where it matters (product page, category grid, checkout), improved where Shopify constrained you. This is what most of my migration clients choose – customers barely notice the platform changed, which is exactly right for SEO and trust.
- Use the migration to redesign. Sensible if the store looked dated anyway – but it doubles the number of variables. If you redesign, keep the URL map and content identical and change only the presentation, so you can still attribute any traffic movement.
- A quality off-the-shelf WooCommerce theme, customised. The budget route. Acceptable for small stores; expect compromises in exactly the places you left Shopify to escape.
Whichever route: the product page and checkout deserve most of the design budget, because they earn the money – and because WooCommerce finally lets you shape the checkout, use the freedom. Fewer fields, trust signals near the pay button, express payment buttons up top. Migrating stores often see conversion improve simply because the checkout stopped being a locked template.
Shopify apps and their WooCommerce equivalents
Go through your Shopify app list (and its monthly bill) and map each app to its WooCommerce answer. The common ones:
| Shopify app / feature | WooCommerce equivalent | Cost reality |
|---|---|---|
| Klaviyo / email flows | Klaviyo works on Woo too; or FluentCRM | Same, or cheaper self-hosted |
| Judge.me / Loox reviews | Native reviews + a reviews plugin | Often free |
| Bold / Recharge subscriptions | WooCommerce Subscriptions | Yearly licence, no per-order cut |
| Wholesale / B2B apps | B2B plugin or custom roles + pricing | One licence replaces app stack |
| Bundles and upsells | Product Bundles / FunnelKit | Yearly licence |
| Shipping rates apps | Table Rate Shipping / carrier plugins | Yearly licence |
| Search / filtering apps | FiboSearch / filter plugins | Free to yearly licence |
| Page builder sections | Custom blocks in the theme | Built once, owned forever |
Two patterns emerge from this exercise every time. First, the monthly app bill largely converts into yearly licences or one-off builds – the recurring cost drops sharply. Second, one or two apps will have no direct equivalent, and one or two WooCommerce plugins will do things the apps never could. List the features you actually use inside each app (not the app names) and match features, not logos. And check for data lock-in early: if an app holds data you need (reviews, subscription records, loyalty points), confirm its export path in week one, not the week before cutover.
Payments and subscriptions: the hard part
Here is the part that deserves the most planning. Saved card details are not stored in Shopify – they are tokenised at the payment gateway. Whether those tokens survive the move depends on the gateway:
- Shopify Payments: this is Stripe under the hood, and Shopify supports exporting the underlying Stripe customer and payment-method data to your own Stripe account on request. It is a formal process with lead time – start it early. Once the data is in your Stripe account, WooCommerce’s Stripe integration can charge those saved methods.
- Direct Stripe or PayPal: easier – the account is already yours. Tokens stay valid; you connect the same account to WooCommerce and reference the same customer objects.
- Other gateways: ask about token portability explicitly. Some support PCI-compliant token migration between platforms; some do not, and saved cards are simply lost (customers re-enter card details on their next order – annoying, not fatal, for one-off purchases).
For one-off purchases, lost tokens cost a little friction. For subscriptions, tokens are the business: an active subscriber whose token does not move is a cancelled subscriber. The safe sequence is: export subscription records (customer, plan, next billing date, payment method reference) from the Shopify subscription app; complete the gateway-level token migration; import subscriptions into WooCommerce Subscriptions with each record attached to its migrated token; then run a small test batch of real renewals before cutover week. Recharge and the other major apps have export paths, and Stripe-based stacks migrate well – but this is the workstream that decides your timeline, so start it first, not last. I cover how subscription billing works on the WooCommerce side in my subscriptions and memberships guide. If your store has no subscriptions, breathe out – your payment migration is a week of care instead of a month.
While you are in the payments workstream, revisit fees: on WooCommerce there is no platform transaction cut on top of gateway fees, and you can add region-appropriate methods freely – which for my EU clients usually means adding local favourites alongside cards at no extra platform cost.
The testing matrix before you switch
The WooCommerce store runs on staging, fully built, while Shopify still takes orders. Do not cut over until every row of this matrix passes:
- Catalogue integrity: product counts match the export; spot-check 30 products across categories for price, variants, images, stock and description formatting; category pages show the right products in a sensible order.
- Orders end to end: place test orders with every payment method, plus a discount code, plus a refund. Verify stock decrements, order emails send (to customer and admin), and taxes calculate correctly for every region you sell to – EU VAT rules, US sales tax, whatever applies to you.
- Shipping: every rate scenario – free-shipping threshold, weight bands, each zone. Compare five real carts against what Shopify charges today; mismatched shipping is the most common silent margin leak after a migration.
- Accounts: register, reset password, view a migrated historical order, change an address.
- Redirect map: run the full old-URL list through a crawler against staging (host-file trick or a staging domain) and confirm every row returns a single 301 to the right target – no chains, no 404s.
- Integrations: email platform receives new customers and order events; accounting/ERP sync works; analytics and conversion tracking fire on the order confirmation page; feeds (Google Shopping) regenerate with the new URLs.
- Performance and devices: the store tested on real phones, and product/category pages hitting good Core Web Vitals – you left Shopify partly for control, so use it.
This overlaps deliberately with my WooCommerce store launch checklist – a migration cutover is a store launch with the extra constraint that the old store is still trading. Run the full checklist; the hour it takes is the cheapest insurance in this whole project.
Cutover with zero order loss
The moment everyone fears: switching the domain. Done right, it is undramatic. The plan I use:
- Days before: lower the DNS TTL. Set your domain’s TTL to 300 seconds at least 48 hours ahead, so the eventual switch propagates in minutes, not a day.
- Pick the freeze window. Check your analytics for the quietest trading hour of the week (often very early morning your main market’s time). Schedule the cutover there and put the right people on standby.
- Freeze checkout on Shopify. At the window, pause checkout (password-protect the store or disable checkout) with a polite “back in a couple of hours” notice. The freeze means no order can land on Shopify while you move – this is what makes zero order loss a guarantee instead of a hope.
- Final delta sync. Import the orders, customers and stock changes that happened since your last import – a re-runnable import job (this is why I like WP All Import) makes this a 20-minute step, not a day.
- Point DNS at the new store. With the low TTL, the WooCommerce store is live worldwide within minutes. Redirect map active from the first request; SSL verified.
- Live test order immediately. A real order with a real card on the live domain, then refund it. Confirm the order email, the payment in the gateway dashboard, the stock decrement and the analytics event.
- Unfreeze and announce. Checkout open, password-reset email queued to customers, monitoring on.
Total checkout downtime: one to two hours, in the quietest hour you have – for most stores that is zero to a handful of orders delayed, none lost. Keep the Shopify store on its cheapest paused plan for two to three months afterwards: it is your reference for data questions (“what did this customer order in the old system?”), your safety net for anything the exports missed, and cheap insurance while the new store proves itself. Then close it and stop the last fee.

Timeline, costs and the first month after
Realistic numbers from projects I have done, assuming a store with a few hundred products and a standard app stack:
- Weeks 1-2: foundation. Hosting, WooCommerce setup, data exports, product and customer import to staging, gateway/token migration started, app-to-plugin mapping agreed.
- Weeks 2-4: build. Theme rebuild (product page, category, checkout first), plugin configuration, order history import, URL map built.
- Week 4-5: testing. The full matrix above, fixes, a second delta import, redirect crawl, client walkthrough.
- Cutover: the two-hour window, then 72 hours of close monitoring.
So: four to six weeks elapsed for a typical store; simple catalogues with an off-the-shelf theme can compress to two to three weeks; large stores with subscriptions, B2B pricing or heavy integrations run eight to twelve. Cost, equally honestly: at my rate (EUR 15 per hour, or a fixed price quoted within 24 hours), typical migrations land between EUR 900 and 2,500 all-in for a standard store – data, rebuild, redirects, cutover; subscription stores and complex B2B builds range EUR 2,500-6,000. Against a Shopify bill of EUR 300-700 a month, the payback window is usually well under a year, and the capability gains come free with it.
The first month after cutover is part of the project, not an afterthought:
- Daily for the first week: order volume vs the Shopify baseline, payment success rate in the gateway dashboard, and the 404 log – fix any redirect miss the moment it appears.
- Search Console: submit the new sitemap on day one; watch indexing move from the /products/ URLs to the new ones over four to eight weeks; investigate any page whose impressions drop without a redirect explanation.
- Email deliverability: order emails now come from your domain – confirm SPF/DKIM are set and watch for spam-folder complaints.
- Customer friction: track password-reset emails and support tickets; a second gentle reset reminder after two weeks catches the stragglers.
- Ranking patience: expect a few weeks of mild fluctuation as Google re-crawls; with a clean 301 map, rankings settle at or above the old level. Panic changes in week two cause more damage than the migration ever did.
Want your migration done without the drama?
I migrate Shopify stores to WooCommerce for store owners and agencies: data, rebuild, redirects, payment migration and the cutover itself, with zero order loss as the standard, not the stretch goal. See my WordPress migration service and WooCommerce development service, look at the portfolio, or send me your store’s details – I reply with questions and a fixed quote within 24 hours.
Frequently asked questions
Is a Shopify to WooCommerce migration worth it?
If your Shopify bill (plan, transaction fees, apps) runs into hundreds per month, or you need checkout control, B2B pricing or serious content marketing, yes – the move typically pays for itself within a year. For small stores happy on a basic plan, staying is legitimate.
How long does a Shopify to WooCommerce migration take?
Four to six weeks for a typical store, including a rebuilt theme and full testing; two to three weeks for simple catalogues; eight to twelve for stores with subscriptions or heavy B2B logic.
Will I lose my Google rankings when leaving Shopify?
Not with a complete 301 redirect map from every Shopify URL pattern (/products/, /collections/, /blogs/) to its WooCommerce equivalent, identical content at switch time, and a few weeks of Search Console monitoring. Expect mild fluctuation, then recovery.
Do customer passwords migrate from Shopify?
No – Shopify does not export password hashes. Customer records migrate; every customer sets a new password via a friendly reset email you send after cutover.
Can I keep my customers’ saved cards and subscriptions?
Often, yes. Shopify Payments data can be exported to your own Stripe account on request, and subscription records plus tokens can be moved into WooCommerce Subscriptions. It is the workstream to start first – token portability depends on your gateway.
Does order history migrate to WooCommerce?
Yes – migration services and import tools bring orders across linked to the right customers and products. For very large stores, migrating the last two years and archiving the rest keeps the database lean.
How much does a Shopify to WooCommerce migration cost?
At my rate, typically EUR 900-2,500 all-in for a standard store including the theme rebuild and cutover, and EUR 2,500-6,000 for subscription or complex B2B stores. Fixed prices quoted within 24 hours.