WooCommerce Variable Product CSV Builder

Turn attributes and values into a parent row and every variation, with defaults, SKUs, prices and stock you can fill in bulk or row by row.

Describe the result you need. AI will set up the tool and ask for any missing details.

Configure with AI

Enter to submit · Shift + Enter for a new line

Sent to AI. Leave out passwords and private customer data.

Your details

Parent product

Variations link to the parent through this SKU.

Use > for levels, commas between categories.

On sets Attribute global to 1. Off creates product-level attributes.

Attributes
Fill every variation

0 for no sale.

Adds to (or takes from) the regular and sale price of every variation with that value.

6 variations: edit any cell, or untick a combination you don't sell

SellColorSizeSKURegularSaleStock
BlackS
BlackM
BlackL
WhiteS
WhiteM
WhiteL

Import-ready WooCommerce CSV

organic-cotton-tee-variations.csv
Type,SKU,Name,Published,In stock?,Stock,Sale price,Regular price,Categories,Images,Parent,Attribute 1 name,Attribute 1 value(s),Attribute 1 visible,Attribute 1 global,Attribute 1 default,Attribute 2 name,Attribute 2 value(s),Attribute 2 visible,Attribute 2 global,Attribute 2 default
variable,TEE,Organic Cotton Tee,-1,1,,,,Clothing > T-shirts,,,Color,"Black, White",1,0,Black,Size,"S, M, L",1,0,M
variation,TEE-BLA-S,"Organic Cotton Tee - Black, S",1,1,10,,28.00,,,TEE,Color,Black,,0,,Size,S,,0,
variation,TEE-BLA-M,"Organic Cotton Tee - Black, M",1,1,10,,28.00,,,TEE,Color,Black,,0,,Size,M,,0,
variation,TEE-BLA-L,"Organic Cotton Tee - Black, L",1,1,10,,30.00,,,TEE,Color,Black,,0,,Size,L,,0,
variation,TEE-WHI-S,"Organic Cotton Tee - White, S",1,1,10,,28.00,,,TEE,Color,White,,0,,Size,S,,0,
variation,TEE-WHI-M,"Organic Cotton Tee - White, M",1,1,10,,28.00,,,TEE,Color,White,,0,,Size,M,,0,
variation,TEE-WHI-L,"Organic Cotton Tee - White, L",1,1,10,,30.00,,,TEE,Color,White,,0,,Size,L,,0,

1 parent row and 6 variations. Import at Products → All Products → Import. The parent row comes first so the file also works with “Update existing products” on WooCommerce 11.1 and later.

How the parent and variation rows fit together

A variable product in a WooCommerce CSV is one row with Type variable plus one row per variation with Type variation. Each variation names its parent in the Parent column (the parent's SKU, or id:123) and picks one value for each attribute.

RowTypeSKUParentAttribute 1 value(s)Attribute 1 default
ParentvariableTEEBlack, WhiteBlack
VariationvariationTEE-BLA-STEEBlack
VariationvariationTEE-WHI-STEEWhite

The builder fills every combination for you. The Fill every variation fields set the price, sale price and stock on all rows at once, and the table lets you change any single variation or untick combinations you don't sell.

Default settings

Color
Black, White (default Black)
Size
S, M, L (default M)
Regular price
28.00
Price changes by value
L +2
Stock per variation
10

7 rows: the TEE parent and 6 variations. The two size L variations cost 30.00, the other four 28.00, and each has 10 in stock.

Importing it

  1. 01

    Download the CSV

    Use Download above the output, or copy it into a spreadsheet.

  2. 02

    Import

    Go to Products → All Products → Import, choose the file and run the importer. Leave the column mapping as it is.

  3. 03

    Check the product

    Open it under Products and look at the Variations tab: every variation should show its price and stock, and the default should be selected on the product page.

Adding variations to a product that already exists? Tick Update existing products. Since WooCommerce 11.1 the importer creates new variations in an update, as long as the parent row comes first, each variation has a SKU, and its values are already on the parent. The builder puts the parent first for that reason.

Common problems

  • Values that don't match the parent exactly. For product-level attributes the variation value must match the parent's list exactly, capitals included, or the variation won't be selectable.
  • Global or local attributes. Turn on “Attributes already exist” only if they're set up under Products → Attributes. Otherwise WooCommerce creates product-level attributes, which is fine for most stores.
  • Duplicate SKUs. Short codes can clash (“Black” and “Blue” both start BL…). Switch to full-value SKUs if the builder warns you.
  • No price, no sale. A variation without a regular price can't be added to the cart.
  • For Shopify, use the product variant generator, which writes Shopify's CSV format.

Questions people ask

What goes in the Parent column?

The parent product's SKU, or its ID with the id: prefix, such as id:123. Without the prefix WooCommerce treats the value as a SKU.

How do I set the default variation?

Put the value in the parent row's Attribute N default column. The builder fills it from the default fields and leaves it out if the value isn't in the list.

Can a variation match any size or color?

Yes. Leave that attribute's value blank on the variation row and WooCommerce treats it as “any”.

Do I need prices on the parent row?

No. Shoppers see the range of the variation prices, so put prices on the variation rows only.

How many variations can I import?

WooCommerce's docs don't give a row limit. Large imports depend on your server's memory, upload and time limits, so split a big file into batches and test a small one first.

Want this builtinto your store?

I'm Emmanuel, a Shopify and WooCommerce developer. If this tool pointed at something you'd rather have fixed for you (a faster store, cleaner product data, a migration, a custom feature), send me a note.

Emmanuel Asika

Emmanuel Asika

Shopify & WooCommerce developer, Dublin

I build and fix online stores: new builds, migrations, speed, SEO and the custom bits apps can't do.

hello@emmanuelasika.com