Guide

Importing WooCommerce variable products with a CSV

A variable product in a WooCommerce CSV is one parent row plus one row per variation. The parent lists every attribute value; each variation points to the parent by SKU and picks one value per attribute.

The structure

RowTypeKey fields
ParentvariableSKU, Name, description, categories, images, and each attribute with all its values
VariationvariationSKU, Parent (the parent’s SKU), Regular price, one value per attribute
Type,SKU,Parent,Name,Published,Regular price,Attribute 1 name,Attribute 1 value(s),Attribute 1 visible,Attribute 1 global
variable,TEE-ORG,,Organic Tee,-1,,Size,"S, M, L",1,1
variation,TEE-ORG-S,TEE-ORG,,1,22.00,Size,S,,1
variation,TEE-ORG-M,TEE-ORG,,1,22.00,Size,M,,1
variation,TEE-ORG-L,TEE-ORG,,1,24.00,Size,L,,1

Attribute columns in detail

  • Attribute 1 name: the attribute, such as Color or Size. Use the same name on the parent and its variations.
  • Attribute 1 value(s): on the parent, every value separated by commas; on a variation, exactly one value. A value that contains a comma is written with a backslash: 1\,5 L.
  • Attribute 1 visible: 1 shows the attribute in the product’s additional information.
  • Attribute 1 global: 1 uses (or creates) a global attribute under Products → Attributes, which you can use for filtering across products; 0 creates a custom attribute for this product only.
  • Attribute 1 default (optional): the value preselected on the product page.

Add Attribute 2 … columns for a second attribute, and so on.

Rules that keep variations linked

  1. Give the parent a SKU, and reference it exactly in each variation’s Parent column. For an existing product you can use id:123 instead.
  2. Put the parent row above its variations.
  3. Every variation value must be one of the values listed on the parent for that attribute.
  4. Give each variation its own unique SKU.
  5. Put prices on the variations. The parent’s price is derived from them.
  6. Leave the variation Name empty; WooCommerce names variations from the parent and attributes.

Troubleshooting

What you seeLikely cause
Variations appear as “Any Color” or aren’t linkedThe variation’s attribute name or value doesn’t match the parent.
Variations are missing after importWrong or missing Parent SKU, or SKUs that already exist when “Update existing products” is off.
The product shows no pricePrices were put on the parent row instead of the variations.
Duplicate attributes in Products → AttributesThe same attribute imported as global with slightly different names (Colour, Color).
Variations are out of stock“In stock?” set to 0 or stock managed with a quantity of 0.

Generate the file from a supplier list

Supplier price lists with one row per color or size map directly onto this structure. Sheet2Store’s WooCommerce export groups rows by a model or parent column, writes a variable parent with Color and Size attributes followed by one variation row per variant, links them with a parent SKU, applies your markup and sets products to draft (Published = -1). A product with a single row becomes a simple product. See also the WooCommerce CSV template.

Frequently asked questions

Do I need to create attributes before importing?

No. With Attribute global set to 1, the importer uses a matching global attribute or creates it.

Can I import the parent and variations in one file?

Yes, as long as the parent row comes first and each variation references the parent’s SKU.

Why use -1 in the Published column?

It imports the parent product as a draft so you can review it. Variations are enabled with their parent.

Convert a supplier file to a WooCommerce CSV

Upload a supplier PDF, Excel or CSV price list and download a CSV for WooCommerce’s built-in product importer, with variable products, variations and your selling prices. Preview five rows free.

Start converting Get the free template