← Back to Blog

WooCommerce to Shopify Migration Checklist (Free Download)

Cardboard boxes with fragile stickers packed in a delivery van

I have migrated dozens of stores from WooCommerce to Shopify. The actual data transfer is not the hard part. The hard part is everything around it: the attribute restructuring, the URL redirects you forgot, the inventory that silently vanished, the shortcodes littered through every product description.

Most migrations fail not because people picked the wrong tool but because they skipped a step they didn't know existed. This checklist covers all 40 of those steps, organized into 6 phases.

Free WooCommerce to Shopify Migration Checklist
40-step CSV with phase groupings, detailed notes, and common gotchas for every step. Open in Google Sheets or Excel and check off tasks as you go.

Phase 1: Pre-Migration Audit

Before touching any data, you need a full inventory of what you're working with. Not just product count: the structural details that determine how complex this migration will be.

Count products by type. WooCommerce has simple products, variable products, grouped products, and external/affiliate products. Variable products are the ones that cause problems on Shopify because of attribute and variant limits.

Map every attribute your store uses: size, color, material, length, wattage, whatever. Note which attributes drive variations and which are display-only. This matters because of Shopify's 3-option limit per product.

Find the shortcodes. If you ever used Elementor, WPBakery, or any page builder on product descriptions, there are shortcodes embedded in your content. They look like [vc_row] or [fusion_builder_column] in the database. On WooCommerce they render as layouts. On Shopify they render as raw text. Search your database before exporting so you know the scope of cleanup ahead.

Document your URLs. WooCommerce uses /product/your-slug. Shopify uses /products/your-slug. That one letter (singular vs. plural) breaks every inbound link and Google ranking if you don't set up redirects.

Baseline your SEO before you start

Export your top landing pages, organic keywords, and traffic data from Google Search Console and Google Analytics before touching anything. Without a baseline, you cannot measure post-migration SEO impact. If rankings drop, you need data to diagnose why.

Phase 2: Data Export

Export everything before you change anything. Products, customers, orders, reviews, images, blog posts. Even data you think you won't need.

Use WooCommerce's built-in exporter or WP All Export for more control. Verify that long HTML descriptions weren't truncated. Download your wp-content/uploads folder separately via FTP, because Shopify fetches images from URLs during import and if your WooCommerce site goes offline before the import finishes, you end up with products missing images and no recovery path without a backup.

Shopify cannot import passwords, so every customer will need to reset after migration. Orders require an app like Matrixify or custom API scripting; Shopify's native CSV import doesn't support them. Reviews go into a reviews app like Judge.me or Stamped, not into Shopify natively.

Take a full backup before anything else

Full database dump plus file copy. Use UpdraftPlus, All-in-One WP Migration, or manual mysqldump. You need a clean restore point in case the migration goes sideways.

Phase 3: Data Transformation

This is the phase that takes the most time and causes the most failures. WooCommerce and Shopify store product data in fundamentally different structures. You cannot just rename columns and import.

The variant structure problem

WooCommerce stores all variations in a single row with pipe-separated values. A t-shirt with sizes S, M, L and colors Red, Blue looks like:

Attribute 1 name: Size
Attribute 1 value(s): S|M|L
Attribute 2 name: Color
Attribute 2 value(s): Red|Blue

Shopify needs a separate row for every combination:

Row 1: Option1 Name: Size, Option1 Value: S, Option2 Name: Color, Option2 Value: Red
Row 2: Option1 Name: Size, Option1 Value: S, Option2 Name: Color, Option2 Value: Blue
Row 3: Option1 Name: Size, Option1 Value: M, Option2 Name: Color, Option2 Value: Red
...

That t-shirt goes from 1 row to 6 rows. A product with 10 sizes, 5 colors, and 3 materials goes from 1 row to 150 rows, except it can't, because Shopify caps at 100 variants per product. Shopify also limits you to 3 option types maximum. If a product in WooCommerce uses Size, Color, Material, and Length as separate variation attributes, you need to consolidate. Common approach: merge two attributes into one ("Small - Cotton", "Small - Polyester") so the combined option takes one slot.

Shopify silently drops variants beyond 100

The CSV import does not throw an error when a product exceeds 100 variants. It imports the first 100 and discards the rest. You will not know variants are missing unless you check.

Column mapping

Key field mappings from WooCommerce to Shopify:

WooCommerce ColumnShopify ColumnWatch Out For
NameTitleOnly on the first row per product
DescriptionBody (HTML)Strip shortcodes first
Regular PriceVariant Compare At PriceThis is the "was" price, not the selling price
Sale PriceVariant PriceThis is the actual selling price
SKUVariant SKUMust be unique across entire store
StockVariant Inventory QtyOnly works if Variant Inventory Tracker = "shopify"
WeightVariant GramsMust convert to grams regardless of WooCommerce unit
ImagesImage SrcMust be publicly accessible URLs

The price mapping catches everyone. WooCommerce's "Regular Price" is what customers normally pay, and "Sale Price" is the discounted price. In Shopify, "Variant Price" is what customers pay and "Variant Compare At Price" is the original crossed-out price. Map them wrong and every product looks like it's on permanent sale when it isn't.

The Variant Inventory Tracker column doesn't exist in WooCommerce exports. You need to add it and set it to shopify on every single row. Without it, Shopify ignores your Variant Inventory Qty values entirely. I covered this in detail in the Shopify CSV import template guide.

Save your final CSV as UTF-8. Excel on Windows defaults to Windows-1252, which corrupts accented characters, currency symbols, and special punctuation. Use Google Sheets or "Save As > CSV UTF-8" in Excel.

Phase 4: Shopify Import

Configure your Shopify store settings before importing products: currency, timezone, weight unit, tax settings. Then test with 3-5 products before uploading the rest. Fixing errors in a 5-product import takes minutes; fixing them across 500 products takes days.

URL redirects are not optional. Every product URL changes from /product/slug to /products/slug. Every category URL changes from /product-category/slug to /collections/slug. You need 301 redirects for every single one. Shopify has a bulk redirect import under Settings > Navigation > URL Redirects > Import. It takes a CSV with two columns: "Redirect from" and "Redirect to." Build that CSV before going live.

Customer import triggers emails

Shopify sends account invitation emails by default when you import customers. Disable notification emails in Settings before importing unless you want customers contacted immediately.

Phase 5: Post-Migration Verification

Spot-check at least 10% of products before calling the migration done. Check descriptions for leftover shortcodes, prices for mapping errors, variants for missing options, images for broken URLs.

Compare Shopify's total inventory against your WooCommerce export. If they don't match, check for missing Variant Inventory Tracker values. Place a test order using Shopify's Bogus Gateway (Settings > Payments) to verify the full checkout flow. Test at least 20 redirects manually. Confirm your analytics tracking fires on every page type: home, collection, product, cart, checkout, thank-you. Shopify's checkout runs on checkout.shopify.com, which requires additional configuration for full tracking.

Phase 6: Cleanup

After go-live, send all imported customers a password reset email. Shopify can send bulk account invitations, or you can send a branded email through your ESP. Do this after launch, not before: customers will try to log in immediately.

Wait 2-4 weeks before decommissioning WooCommerce. Keep it running in maintenance mode until you're confident the migration is stable and SEO has settled. Archive the full backup from Phase 2 indefinitely.


The checklist

The downloadable checklist has all 40 steps with phase groupings, detailed notes for each task, and a "Common Gotcha" column that flags the specific thing most likely to go wrong at each step. Open it in Google Sheets, duplicate it, and check off tasks as you go.

Free WooCommerce to Shopify Migration Checklist
40-step CSV with phase groupings, detailed notes, and common gotchas for every step. Open in Google Sheets or Excel and check off tasks as you go.

If you have a migration coming up and formatting CSVs, cleaning shortcodes, and rebuilding variant structures sounds like a bad use of your time, send me what you have at flash@tryflash.ai. I handle the data transformation, the import, the redirect setup, and the verification. First 3 jobs are free.


Frequently asked questions

How long does a WooCommerce to Shopify migration take? For a store with under 500 products and no complex variant structures, plan for 2-4 weeks if you're doing it yourself. The actual data migration can be done in a few days, but you need buffer for fixing data quality issues in the export, rebuilding variants that don't fit Shopify's 3-option limit, setting up redirects, and testing thoroughly before switching DNS. Rushing the testing phase is the #1 cause of post-migration SEO damage.

Will my SEO rankings drop when I migrate from WooCommerce to Shopify? They can drop temporarily if you don't handle URL redirects correctly. WooCommerce and Shopify use different URL structures — product URLs, category pages, and blog posts often change. Every old URL needs a 301 redirect to the new equivalent. If you set up redirects before switching DNS and submit an updated sitemap to Google Search Console immediately after, rankings typically recover within 4-8 weeks. Skipping redirects causes permanent loss of link equity.

What data can be migrated from WooCommerce to Shopify? Products (titles, descriptions, images, prices, SKUs, variants), customers (names, emails, addresses), and orders can all be migrated. Product categories migrate as Shopify collections. Tags, metafields, and custom attributes need manual remapping. WooCommerce product variations with more than 3 attributes or 100 variants per product require restructuring before import — Shopify's hard limit is 3 options and 100 variants per product.

Does Shopify have a variant limit that will affect my migration? Yes. Shopify allows a maximum of 3 options (e.g., Size, Color, Material) and 100 variants per product. If your WooCommerce store has products with 4+ attributes or more than 100 combinations, those must be restructured before migration. Common solutions: split into separate products, use metafields for additional attributes, or use a Shopify app like Infinite Options for display-only customization. This is the most commonly missed migration blocker.

How do I migrate product images from WooCommerce to Shopify? Export your WooCommerce product data with image URLs. If images are hosted on your WooCommerce server, they stay accessible during migration. In your Shopify import CSV, include the full image URLs — Shopify will download and host them automatically during import. After migration, verify every product has images in Shopify admin before switching DNS. Image download failures are silent in the importer and easy to miss.

Should I use the Shopify migration app or do it manually? Shopify's built-in importer handles simple stores well but struggles with complex variant structures, custom fields, and large catalogs. For stores with 100+ products, non-standard variants, or metafields, manual migration via CSV gives you more control and is less likely to create messy data you'll spend weeks cleaning up afterward. The migration app is faster; manual is cleaner.

Stop doing it yourself.

Send me the tedious stuff. Product uploads, data cleanup, catalog migrations. First 3 jobs are free.

Try Flash free