A WooCommerce export, going into Shopify

Two grammars that disagree about what a variant is. Woo points a child row at a parent SKU; Shopify groups by a handle that repeats.

How you recognise it

  • An ID column, a Type column reading simple or variable or variation, and a SKU.
  • Variation rows that reference their parent rather than repeating a group key.
  • Attribute columns spelled as Attribute 1 name and Attribute 1 value(s).

What goes wrong

Worst first, and the worst one is nearly always the one that reports nothing.

  • The parent-child relationship has no equivalent in the Shopify file. It has to become a repeated handle, and a mechanical rename of the column does not do that.
  • A variable parent row carries no price of its own. Copied across as a product row it becomes a product priced at nothing.
  • Woo lets one attribute hold several values in one cell. Shopify wants one value per variant row, and the expansion is where variant counts silently change.

What we do about it

  • Row roles are classified before anything is mapped, so a parent row and a variation row are never treated as the same kind of thing.
  • Rows in and rows out are counted and reported on every run. A transformation that changes the count says so.
  • The WooCommerce grammar is published in full, next to the Shopify one, so the two models can be compared rather than assumed to match.

Where this came from

Each of these is a real file in our test corpus, run through the engine on every change. We publish the shape and what it proved, never a cell — these are catalogues with real buying prices in them.

woocommerce_product_export.csv
101 rows · 17 columns. A real WooCommerce export with parent-child variation rows, which is the structural difference this page is about.

What we did not measure. Our Woo work is a published grammar and a parser that reads these files. The export writer for WooCommerce is not built, and this page does not claim a round trip we have not run.

Other shapes

All export shapes · Import errors, measured · The Shopify product CSV grammar

Run the file you have.

Whatever shape it arrived in, the Pre-Flight Report names every blocker in it before you upload anywhere. Free, no account.

Check a file free