WooCommerce Product CSV Template Generator
Pick your product types and columns, and get a correctly headed WooCommerce import CSV with example rows and notes for every column.
Your details
Your WooCommerce product CSV template
Type,SKU,"GTIN, UPC, EAN, or ISBN",Name,Published,Short description,Description,In stock?,Stock,Low stock amount,Backorders allowed?,Sold individually?,Weight (kg),Length (cm),Width (cm),Height (cm),Sale price,Regular price,Categories,Tags,Shipping class,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
simple,MUG-350,5012345678900,Stoneware Mug,-1,"Glazed stoneware mug, 350 ml.",Hand-glazed stoneware mug. Dishwasher and microwave safe.,1,40,5,0,0,0.4,12,9,10,15.00,18.00,Home > Kitchen,"mug, stoneware",,"https://example.com/wp-content/uploads/mug-front.jpg, https://example.com/wp-content/uploads/mug-side.jpg",,,,,,,,,,,
variable,TEE,,Organic Cotton Tee,-1,Midweight tee in 100% organic cotton.,Pre-shrunk organic cotton with a relaxed crew neck.,1,,,0,0,0.2,30,25,2,,,Clothing > T-shirts,"organic, cotton",,"https://example.com/wp-content/uploads/tee-black.jpg, https://example.com/wp-content/uploads/tee-white.jpg",,Color,"Black, White",1,0,Black,Size,"S, M, L",1,0,M
variation,TEE-BLA-S,5012345678924,"Organic Cotton Tee - Black, S",-1,,,1,15,,0,,0.2,30,25,2,24.00,28.00,,,,https://example.com/wp-content/uploads/tee-black.jpg,TEE,Color,Black,,0,,Size,S,,0,
variation,TEE-BLA-M,5012345678931,"Organic Cotton Tee - Black, M",-1,,,1,20,,0,,0.2,30,25,2,,28.00,,,,https://example.com/wp-content/uploads/tee-black.jpg,TEE,Color,Black,,0,,Size,M,,0,
variation,TEE-BLA-L,0812345678901,"Organic Cotton Tee - Black, L",-1,,,1,12,,0,,0.2,30,25,2,,28.00,,,,https://example.com/wp-content/uploads/tee-black.jpg,TEE,Color,Black,,0,,Size,L,,0,33 columns, 5 example rows. Replace the example values, keep the headers, save as CSV UTF-8, then import at Products → All Products → Import.
On the Column mapping screen, set the “GTIN, UPC, EAN, or ISBN” column by hand. WooCommerce doesn't map it automatically, and an unmapped column isn't imported.
Weight is in kg and dimensions in cm. If your store uses different units, change them above: WooCommerce doesn't convert values.
What goes in each column
| Column | What to enter |
|---|---|
| Type | simple, variable, variation, grouped or external. Add virtual or downloadable after a comma, for example simple, downloadable, virtual. |
| SKU | Must be unique across the store, variations included. Variations point to their parent through this value. |
| GTIN, UPC, EAN, or ISBN | The barcode number, unique in the store. The header contains commas, so keep it in quotes. WooCommerce doesn't map this column automatically: on the Column mapping screen, pick “GTIN, UPC, EAN, or ISBN” for it. |
| Name | Product name. For variations, WooCommerce builds the name from the parent if you leave it blank. |
| Published | 1 published, 0 private, -1 draft, 2 pending review. |
| Short description | Shown next to the product image in most themes. HTML is allowed. |
| Description | The main description. HTML is allowed; keep line breaks inside the quoted cell. |
| In stock? | 1 in stock, 0 out of stock, or backorder. |
| Stock | A number turns on stock management. Leave blank to turn it off. On a variation, parent uses the parent's stock. |
| Low stock amount | Optional threshold for the low stock email. |
| Backorders allowed? | 1, 0 or notify. |
| Sold individually? | 1 limits the product to one per order. |
| Weight (kg) | Numbers only, in kg. WooCommerce doesn't convert units, so the header and values must use your store's unit. |
| Length (cm) | Numbers only, in cm. |
| Width (cm) | Numbers only, in cm. |
| Height (cm) | Numbers only, in cm. |
| Sale price | Plain number with a period for decimals, no currency symbol. Must be lower than the regular price. |
| Regular price | Plain number, no currency symbol. On variable products, put prices on the variation rows. |
| Categories | Separate categories with commas and levels with >, for example Clothing > T-shirts. Missing categories are created. |
| Tags | Comma-separated tags. |
| Shipping class | The name of an existing shipping class. Leave blank for none. |
| Images | Comma-separated image URLs. The first is the featured image. URLs must load the image directly; redirecting cloud-storage links don't work. |
| Parent | On variation rows only: the parent's SKU, or id:123 for a product ID. |
| Attribute 1 name | The attribute's name, such as Color. Use the same name on the parent and its variations. |
| Attribute 1 value(s) | Parent: every value, comma-separated. Variation: one value, spelled exactly as on the parent. Blank on a variation means “any”. |
| Attribute 1 visible | 1 shows the attribute on the Additional information tab. |
| Attribute 1 global | 1 for an attribute set up under Products → Attributes, 0 for a product-level attribute. |
| Attribute 1 default | Parent row only: the value selected when the page loads. |
| Attribute 2 name | Same rules as Attribute 1. |
| Attribute 2 value(s) | Same rules as Attribute 1. |
| Attribute 2 visible | Same rules as Attribute 1. |
| Attribute 2 global | Same rules as Attribute 1. |
| Attribute 2 default | Same rules as Attribute 1. |
How the template is built
The column names come from WooCommerce's own exporter, in the order it writes them, so the importer recognizes them on the Column mapping screen. The one exception is the GTIN column, which you map by hand. Pick only the columns you need: WooCommerce leaves out any column that isn't in the file and keeps the product's existing value on updates.
Default settings
- Product types
- Simple and variable
- Attributes on variable products
- 2 (Color, Size)
- Columns on
- Descriptions, stock, shipping, categories, images, GTIN
- Units
- kg and cm
33 columns and 5 example rows: one simple product (a mug), one variable parent (a tee with Color and Size) and three of its variations. The weight column is headed Weight (kg) and the lengths Length (cm).
- GTIN uses the header
GTIN, UPC, EAN, or ISBN. It contains commas, so it's quoted in the file. WooCommerce doesn't map it automatically: pick “GTIN, UPC, EAN, or ISBN” for it on the Column mapping screen. - Brands is the column WooCommerce's built-in Brands feature reads. Missing brands are created.
- Cost of goods is only imported when the Cost of Goods Sold feature is on (WooCommerce → Settings → Advanced → Features).
- Meta columns are written as
Meta: your_key, the format the exporter uses, so plugin fields come across as custom meta.
Importing the file into WooCommerce
- 01
Fill in your products
Replace the example rows. Keep one product per row, and for variable products one parent row followed by one row per variation.
- 02
Save as CSV UTF-8
In Excel choose CSV UTF-8 (Comma delimited). Google Sheets, LibreOffice and Numbers export UTF-8 by default.
- 03
Open the importer
Go to Products → All Products and click Import, then choose your file.
- 04
Check the mapping
WooCommerce matches most headers for you. Map the GTIN column by hand, set any column you don't want to Do not import, then click Run the importer.
To update products you already have, choose Update existing products in the generator and tick the same box on the upload screen. WooCommerce matches rows by ID, then SKU. From WooCommerce 11.2 it also matches by GTIN when a row has no ID or SKU.
Mistakes that break imports
- Units that don't match the store. WooCommerce doesn't convert units. Set the weight and dimension units to match WooCommerce → Settings → Products → General.
- Currency symbols and comma decimals in prices. Use
24.99, not$24.99or24,99, unless your store's decimal separator is a comma. - Category paths with slashes. Levels are separated with
>, for exampleHome > Kitchen. A slash creates one category with a slash in its name. - Commas inside a single value. Escape them with a backslash, for example
Places\, Peoplefor one category. - Before a big import, run the file through the WooCommerce CSV validator.
Questions people ask
Where do I import a WooCommerce product CSV?
Go to Products → All Products and click Import at the top of the page. The importer accepts CSV and TXT files.
Which columns are required?
WooCommerce's schema marks SKU and Name as required, and generates a SKU if you leave it out. In practice a new product needs a Name and a Type, and a variation needs a Parent.
Can I leave columns out of the template?
Yes. The importer only touches the columns in your file, so a price-only update can be just SKU, Regular price and Sale price.
Why is the GTIN header in quotes?
WooCommerce's header is GTIN, UPC, EAN, or ISBN, which contains commas, and CSV needs quotes around any cell with a comma. It's also the one column you map by hand on the Column mapping screen.
Can I set product IDs for new products?
No. WooCommerce gives new products the next free ID whatever the ID column says. Use SKUs to link variations and related products instead.
Related tools
Last reviewed 30 September 2026.
Sources: WooCommerce: Product CSV Importer and Exporter · WooCommerce: Product CSV Import Schema · WooCommerce sample_products.csv · WooCommerce product CSV exporter (column names) · WooCommerce product CSV importer (parsing and matching rules) · WooCommerce 11.2.0 pre-release notes · WooCommerce: Brands
