WooCommerce and Shopify look similar on the surface — both sell products with options, images, and custom fields. Under the hood, they model data very differently. That gap is where most migrations quietly break: variants collapse, custom attributes vanish, and product pages lose the exact details that made them rank and convert.
If you’re planning a move, here’s where the data actually gets lost — and how to prevent it.
Why WooCommerce Variants Don’t Map One-to-One
WooCommerce treats variations as child products under a parent, with attributes stored loosely and often reused inconsistently across the catalog. Shopify enforces a stricter model:
- Maximum 3 options per product (e.g. Size, Color, Material)
- 100 variants per product limit (higher on newer plans, but still capped)
- Every variant must be a complete combination — no partial or “hanging” attributes
So a WooCommerce product with 4+ attributes or thousands of generated combinations won’t transfer cleanly. It has to be restructured, not just copied.
The Most Common Variant Mapping Failures
| WooCommerce source | What breaks on import | Fix before migrating |
|---|---|---|
| 4+ attributes per product | Exceeds Shopify’s 3-option cap | Consolidate or split into separate products |
| Global attributes reused loosely | Variants merge or mismatch | Normalize attribute names first |
| Custom fields (ACF, meta) | Dropped silently | Map to Shopify metafields explicitly |
| Per-variation images | Only one image maps | Rebuild variant-image assignment |
| SKU gaps | Inventory desyncs | Audit and backfill SKUs pre-export |
Metafields: The Silent Data Loss
Most WooCommerce stores rely on custom fields — ingredients, specs, warranty info, GTINs — added via ACF or custom meta. These almost never migrate automatically because there’s no default destination for them.
On Shopify, they belong in metafields, but you have to define the structure yourself.
How to Preserve Custom Fields Correctly
- Create metafield definitions (namespace, key, type) before import
- Map each WooCommerce field to a matching Shopify metafield
- Validate data types — a date, a rich-text block, and a number all need different metafield types
Skip this and you lose structured data that powers filtering, SEO schema, and product-page detail. This is exactly the kind of restructuring where teams lean on a specialized service to handle a Woocommerce to Shopify migration, since the mapping logic is far more involved than a simple CSV export-import.
A Pre-Migration Checklist That Saves You
- Audit attributes — list every attribute and how many products exceed 3 options.
- Inventory custom fields — export a full list of meta keys in use.
- Define Shopify metafields first — build the schema before touching product data.
- Test with a sample — migrate 20–30 products, verify variants and metafields render correctly.
- Check SEO-critical data — GTINs, specs, and schema fields must survive the move.
Key Takeaways
Variant and metafield loss isn’t a “bug” in the migration — it’s a data-modeling mismatch that shows up only after you’ve already imported. Map the structure before you move the data, validate on a sample set, and you’ll avoid the post-launch scramble of rebuilding product pages by hand.