Migrating from WooCommerce to Shopify in under 10 days: the real playbook
Step-by-step: how to move from WooCommerce to Shopify without losing orders, SEO, or customer trust. The exact playbook we use on every migration.
Ashraful
Shopify Select Partner

WooCommerce stores migrate to Shopify for the same reasons every year: hosting headaches, security patches, plugin conflicts, payment-gateway tax, and the slow realization that "self-hosted = cheaper" was never actually true.
The migration itself is what scares people. Everyone has a horror story — lost orders, broken redirects, search rankings tanked for 6 months. We've done 30+ of these and the bad outcomes are 100% preventable with a real plan.
Here's the actual 10-day playbook.
The phases
| Day | Phase | What ships |
|---|---|---|
| 1 | Discovery + inventory | Migration spec doc, gap list |
| 2–3 | Data extraction + transformation | Clean CSV bundle |
| 4–5 | Shopify setup + import | Live data on dev store |
| 6–7 | Theme + checkout configuration | Visually complete dev store |
| 8 | Redirect map + analytics | Redirect CSV, GA4 reconfigured |
| 9 | Soft launch (staging) | Final QA pass |
| 10 | Cutover (DNS) | Live on Shopify |
Day 1: Discovery and inventory
The single most expensive mistake is starting the migration without a written inventory of what exists.
Make a doc with these sections:
- Products — how many SKUs, variants, custom fields, downloadable products, subscriptions?
- Customers — how many, GDPR-compliant export available?
- Orders — how many to migrate? (Hint: usually only last 12 months matters)
- Pages — every CMS page, blog post, landing page URL
- Custom code — checkout customizations, custom plugins, custom checkout fields
- Integrations — email (Klaviyo / Mailchimp), reviews (Judge.me / Yotpo), shipping, ERP, analytics, ads
- Payment gateway — Stripe, PayPal, both?
- SEO state — current rank for top 50 queries, current sitemap
Without this doc, you'll discover surprises on day 8 that push launch by 2 weeks.
Day 2–3: Data extraction + transformation
WooCommerce stores data as WordPress post-types with serialized PHP arrays in postmeta. It's a mess.
Three tools we use:
- WP All Export for products, orders, customers — gives you CSV with the right columns
- Direct SQL for things All Export struggles with (custom fields, ACF data, custom order line items)
- Custom Node scripts to transform Woo's data shape into Shopify's import shape
The transformations that always need custom code:
- Variants — Woo stores them as child products; Shopify wants them on the parent
- Categories → Collections — Woo's nested hierarchies don't map 1:1 to Shopify
- Custom fields — ACF data goes into Shopify metafields; you have to define the metafield definitions first
- Tax classes — Woo lets you mix shipping classes per item in ways Shopify can't replicate exactly
Pro tip: dedupe customer emails before import. Woo allows multiple customer rows with the same email; Shopify doesn't.
Day 4–5: Setup + import
In Shopify:
- Create the store, choose plan (Plus only if Plus features are required)
- Define metafield definitions (these are easier to create before the import)
- Import customers first, then products, then orders
- Use Matrixify or a custom CSV importer — Shopify's built-in CSV import truncates long descriptions
Validate after each import:
# Quick sanity checks:
# 1. Product count matches export
# 2. Random sample of 10 products — open and verify all images, variants, descriptions
# 3. Customer count matches; one random customer's order history is intact
# 4. Total order count matches; one paid order's line items match Woo's
Catch problems here, not on day 10.
Day 6–7: Theme + checkout
If the merchant wants a same-look-as-before migration, we build a custom theme that mirrors the old WooCommerce design. This is usually a mistake — the migration is the cheapest moment to redesign.
If you want a redesign instead, this is where you'd plug in Verso or commission a custom theme build.
Shopify checkout-specific config to verify:
- Express payments (Apple Pay, Shop Pay, Google Pay) — enable all
- Address autocomplete — on
- Email vs. phone at checkout — match what customers expect
- Custom checkout fields → Functions (Shopify Plus) or scripts
- Discount stacking rules
Day 8: Redirects and analytics
This is the single most important phase for SEO. Mess this up and you'll lose 6 months of rankings.
Build a redirect CSV from your old WooCommerce URL structure to Shopify's structure. The patterns differ:
| WooCommerce | Shopify |
|---|---|
/product/awesome-tee/ | /products/awesome-tee |
/product-category/men/ | /collections/men |
/blog/post-slug/ | /blogs/news/post-slug |
/page-name/ | /pages/page-name |
Import into Shopify → Navigation → URL Redirects. Test 20 URLs manually before launch.
Analytics:
- Set up GA4 with new view; tag every Shopify event (purchase, add_to_cart, etc.)
- Reconnect Facebook Pixel / Meta CAPI
- Reconnect Google Ads conversion tracking — this will break for a week if you don't reconfigure conversion IDs
Day 9: Soft launch (staging)
Run the dev store under a password. Have your team place real test orders end-to-end:
- One paid order (use Bogus Gateway or live with $0.50 product)
- One refund
- One discount-code order
- One shipping-method test order
- One email signup
- One abandoned-cart recovery email check
If all six work clean, you're ready for cutover.
Day 10: Cutover
The actual DNS swap takes 5 minutes; the work is everything around it.
- Final inventory sync (orders placed on Woo in the last 24h)
- Update DNS apex A record → Shopify's IP
- Update
wwwCNAME →shops.myshopify.com - Wait ~10 min for propagation
- Validate: store loads on the canonical domain, checkout completes a real order
- Switch off WooCommerce orders (set it to maintenance mode for 48h, then archive)
We do every cutover during the merchant's slowest 2-hour window. For most stores that's Tuesday 3am UTC. Sales tank during that window anyway; if anything breaks, we have time to fix before the morning rush.
What we don't migrate (on purpose)
Three things we deliberately leave behind:
- Old reviews if the original review widget data is malformed. Cleaner to start fresh with a real review-ask flow.
- Stale customers — anyone who hasn't bought in 24 months. Importing them just bloats your Shopify customer count (and Plus bill).
- Cancelled / refunded historical orders — only migrate orders that actually represent revenue.
When 10 days isn't enough
Three scenarios where the timeline stretches:
- Subscriptions — Woo Subscriptions → Shopify Subscriptions API takes another 3–5 days
- B2B / wholesale — custom catalogs, customer-specific pricing tiers
- Multi-currency — if you're going Shopify Markets and need country-specific stores
If any of these apply, we'd quote 14–20 days instead.
We do this end-to-end as a fixed-quote service starting at $1,999. Send us your store and we'll quote yours.
About the author
Ashraful
Shopify Select Partner, Top Rated Plus on Upwork. 700+ Shopify projects shipped over 7+ years — themes, apps, migrations, speed, Hydrogen. Solo shop, no agency middlemen.
Read the full storyWorking on a Shopify project?
That's what I do every day. Pick whichever feels lower-friction.
More from the blog
Keep reading

Custom Shopify app vs. App Store: when to build vs. buy
Building a custom Shopify app costs $4k–$20k. Installing one from the App Store costs $9–$99/month. Here's the real decision framework.
Read
Custom Shopify theme vs. premium theme: which one should you actually buy?
An honest comparison of building a custom Shopify theme vs. buying a premium one. With real costs, real timelines, and the decision framework we use with clients.
Read
Why your Shopify store is slow (and the 4 fixes that actually work)
Most Shopify speed advice is fluff. Here are the 4 fixes that actually move Lighthouse scores — and the popular ones that don't.
Read