View Categories

Importing and Exporting Variable Products

Variable products are the most common source of import confusion, because one product occupies several rows in the file.

How variations are structured #

A variable product with three colour options becomes four rows:

  • One parent row, with product type variable. It carries the name, description, categories, and the attribute definitions.
  • Three variation rows, with product type product_variation. Each carries its own SKU, price, stock, and the attribute value that distinguishes it.

The variation rows link back to the parent through parent_sku or parent_id.

Exporting variable products #

Choose the Product module and, on the filters step, make sure Product Type either includes both Variable and Variation or is left empty. Selecting only Variable gives you parents with no variations, which is almost never what you want.

Include product_id, sku, parent_sku, and parent_id in your column selection. Those four are what make the file re-importable.

Importing variable products #

  1. Keep parent and variation rows in the same file.
  2. Put the parent row above its variations. The importer processes rows in order and needs the parent to exist before it can attach a variation.
  3. Fill in parent_sku on every variation row.
  4. Map product_id or sku so existing products are recognised.

Variations came in as separate simple products #

This is the classic symptom, and it has three usual causes:

CauseFix
parent_sku is empty or unmappedFill the column in and map it on step 4
The parent row is missing from the fileInclude it, or import parents first in their own pass
The parent SKU does not match any productCheck for trailing spaces and case differences

Updating variation prices in bulk #

Export with just product_id, sku, parent_sku, and regular_price. Filter Product Type to Variation so you get only the rows you intend to change. Edit the prices, then import with duplicate handling set to Update.

Because your file contains only four columns, the update cannot touch descriptions, images, or stock. Narrow files are safer than wide ones.

Attributes #

Attribute columns carry the tax: prefix in exports. Export a variable product you already have before building an attribute file by hand, so you can see the exact column names your store uses.

Large variable catalogs #

A store with 2,000 variable products and eight variations each produces an 18,000-row file. Split it into chunks that keep each parent together with its variations, and lower the import batch size if the run stalls.

We develop trusted WooCommerce import and export plugins that help store owners, developers, and agencies move products, orders, customers, coupons, and reviews to build successful online businesses.