ezomfy
All posts
April 29, 20269 min read

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.

A

Ashraful

Shopify Select Partner

Migrating from WooCommerce to Shopify in under 10 days: the real playbook

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

DayPhaseWhat ships
1Discovery + inventoryMigration spec doc, gap list
2–3Data extraction + transformationClean CSV bundle
4–5Shopify setup + importLive data on dev store
6–7Theme + checkout configurationVisually complete dev store
8Redirect map + analyticsRedirect CSV, GA4 reconfigured
9Soft launch (staging)Final QA pass
10Cutover (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:

  1. WP All Export for products, orders, customers — gives you CSV with the right columns
  2. Direct SQL for things All Export struggles with (custom fields, ACF data, custom order line items)
  3. 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:

  1. Create the store, choose plan (Plus only if Plus features are required)
  2. Define metafield definitions (these are easier to create before the import)
  3. Import customers first, then products, then orders
  4. 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:

WooCommerceShopify
/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.

  1. Final inventory sync (orders placed on Woo in the last 24h)
  2. Update DNS apex A record → Shopify's IP
  3. Update www CNAME → shops.myshopify.com
  4. Wait ~10 min for propagation
  5. Validate: store loads on the canonical domain, checkout completes a real order
  6. 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.

A

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 story

Working on a Shopify project?

That's what I do every day. Pick whichever feels lower-friction.