WooCommerce Product Attributes in CSV: Complete Guide
How to correctly format WooCommerce product attributes in a CSV file — attribute naming, global vs. local attributes, variation attributes, and common mistakes.
- ✓How WooCommerce attribute columns are named and numbered in CSV
- ✓The difference between global and local attributes in CSV imports
- ✓How to set attributes for variable products and their variations
- ✓How to import multiple attribute values (e.g., a product available in Blue and Red)
- ✓How to fix the most common attribute import errors
How WooCommerce Attributes Work in CSV
WooCommerce product attributes define the dimensions by which a product varies — typically Size, Color, or Material. In a CSV import, attributes are represented as numbered column groups. Each group of four columns covers one attribute.
The column naming pattern is:
Attribute 1 nameAttribute 1 value(s)Attribute 1 visibleAttribute 1 global
For a second attribute, repeat with Attribute 2 name, Attribute 2 value(s), etc.
Column Reference
| Column | Format | Description |
|---|---|---|
| Attribute N name | Text | The attribute name (e.g., Color, Size) |
| Attribute N value(s) | Text, pipe-separated | The value(s) for this row (e.g., Blue or Blue | Red) |
| Attribute N visible | 1 or 0 | 1 = shown on product page; 0 = hidden |
| Attribute N global | 1 or 0 | 1 = global taxonomy attribute; 0 = local attribute |
Simple Products With Multiple Attribute Values
For a simple product that is available in multiple colors (but not as separate variations), list all values in the Attribute 1 value(s) column separated by a pipe |:
Name,Type,SKU,Regular price,Attribute 1 name,Attribute 1 value(s),Attribute 1 visible,Attribute 1 global
Blue Scarf,simple,SCARF-001,14.99,Color,Blue | Navy | Teal,1,1
This creates one product with a Color attribute that shows all three color values on the product page.
Variable Products With Variations
For variable products, attributes work differently. The parent row lists all possible attribute values. Each variation row lists only the specific value for that variation.
Parent row (Type: variable):
Name,Type,SKU,Regular price,Attribute 1 name,Attribute 1 value(s),Attribute 1 visible,Attribute 1 global
T-Shirt,variable,TSHIRT,20.00,Size,S | M | L | XL,1,1
Variation rows (Type: variation):
Name,Type,SKU,Regular price,Attribute 1 name,Attribute 1 value(s),Attribute 1 visible,Attribute 1 global
,variation,TSHIRT-S,18.00,Size,S,1,1
,variation,TSHIRT-M,18.00,Size,M,1,1
,variation,TSHIRT-L,20.00,Size,L,1,1
,variation,TSHIRT-XL,20.00,Size,XL,1,1
The Name column is blank on variation rows — WooCommerce generates the variation name from the attribute values.
Two Attributes (Size + Color)
For a product with two attribute dimensions:
Parent row:
Name,Type,SKU,Attribute 1 name,Attribute 1 value(s),Attribute 1 visible,Attribute 1 global,Attribute 2 name,Attribute 2 value(s),Attribute 2 visible,Attribute 2 global
Running Shoe,variable,SHOE,Size,7 | 8 | 9 | 10,1,1,Color,Black | White,1,1
Variation rows:
,variation,SHOE-7-BLK,Size,7,1,1,Color,Black,1,1
,variation,SHOE-7-WHT,Size,7,1,1,Color,White,1,1
,variation,SHOE-8-BLK,Size,8,1,1,Color,Black,1,1
Each variation row specifies exactly one value per attribute (not a pipe-separated list).
Global vs. Local Attributes
Global attributes (Attribute N global: 1)
Global attributes are defined in WooCommerce's attribute taxonomy (Products → Attributes in WordPress admin). Use global attributes when:
- Multiple products share the same attribute terms (same colors, same sizes)
- You want to filter products by attribute in shop pages
- You use WooCommerce's layered navigation widget
When importing with global: 1, WooCommerce creates the attribute term if it doesn't exist yet. Attribute names must match exactly (case-sensitive) for WooCommerce to match them to the existing taxonomy.
Local attributes (Attribute N global: 0)
Local attributes are specific to one product. Use local attributes for product-specific specifications that don't apply elsewhere (e.g., Material: 100% cashmere on one particular product).
Local attributes cannot be used for variation filtering or layered navigation.
Common Attribute Import Errors
Attribute columns not recognized
Cause: Column names don't follow the exact pattern — wrong spacing, wrong numbering, or abbreviated names.
Wrong: Attribute1 name, attribute 1 name, Attr 1 name
Correct: Attribute 1 name
Fix: Use the exact column names with a space between Attribute and the number.
Variation attributes don't match parent
Cause: The attribute name on a variation row doesn't match the attribute name on the parent row, or the variation specifies a value that wasn't in the parent's value list.
Fix: Attribute names must be identical on parent and variation rows. Variation values must be a subset of the values listed on the parent row.
Pipe separator with spaces
Cause: Using | (with spaces around the pipe) instead of | or | (without spaces). WooCommerce trims values, but inconsistencies can cause mismatches.
Fix: Use | with or without surrounding spaces consistently throughout the file. WooCommerce trims the whitespace around each value.
Fix This Automatically with StriveFormats
Upload your WooCommerce CSV to StriveFormats. The validator checks attribute column naming, parent/variation attribute consistency, and pipe-separator formatting — then flags issues with exact row and column locations.
Upload your CSV to StriveFormats for instant validation, auto-fixes, and a clean export. Our CSV validator checks for formatting errors, missing headers, and platform-specific requirements.