Import Product Attributes
Product attributes describe products (Colour, Size, Brand, Material, etc.). In WooCommerce they can be:
- Global — managed under Products → Attributes, reusable across products (
pa_colour,pa_size, …) - Local (custom) — stored only on that product
Attributes that define variations must be marked Used for variations? on the parent variable product.
Table of Contents
Product Attributes section
In the WooCommerce Products template, open Product Attributes and click Add Row for each attribute you need.
Field reference
| Field | Description |
|---|---|
| Name | Attribute label, e.g. Colour or Size. Required — empty names are skipped. |
| Terms | One or more values, separated by a delimiter (default ,). Example: Red,Blue,Green |
| Is Global? | Yes to use / create a store-wide attribute under Products → Attributes. No for a product-level attribute. |
| Is Visible? | Yes to show the attribute on the product page additional information tab. |
| Append terms? | No (default) replaces that attribute’s terms on the product. Yes merges with existing terms. |
| Used for variations? | Yes marks the attribute as a variation attribute on variable products. |
Global vs local attributes
Global (Is Global? = Yes) | Local (Is Global? = No) | |
|---|---|---|
| Created in | Products → Attributes (auto-created on import if missing) | Only on the product |
| Taxonomy | pa_{slug} e.g. pa_colour | Custom product attribute |
| Best for | Shared attributes used on many products / variations | One-off attributes |
| Variation value stored as | Term slug | Term string as provided |
Tips for global attributes:
- Use a consistent Name spelling (
ColourvsColor) so Import WP matches the existing attribute label. - If the attribute does not exist yet, Import WP creates it during import.
Used for variations
On a variable parent:
- Set Used for variations? = Yes for every attribute that variations are based on.
- Include all terms that child variations will use.
On a variation row:
- Map the same attribute Name.
- Set Terms to the single value for that variation.
- Leave Used for variations? blank or Yes.
- Do not set Used for variations? = No for attributes that define the variation — those rows are skipped for the variation.
If Used for variations? is left empty on a new parent attribute, it defaults to not used for variations. Always set Yes explicitly on parents when you need variations.
Multiple attributes
Add one Product Attributes row per attribute:
- Row 1 — Name:
Colour, Terms:Red,Blue, Used for variations: Yes, Is Global: Yes - Row 2 — Name:
Size, Terms:S,M,L, Used for variations: Yes, Is Global: Yes
See Import Variable Products and Variations for a full parent + variation CSV.
Keep existing attributes on update
By default, importing attributes replaces the product’s attribute set.
To merge with attributes already on the product, enable Keep existing Product Attributes on the Product Attributes section (or use the iwp/woocommerce/append_attributes filter — see WooCommerce Filters and Code Snippets).
Use this when your feed only sends some attributes (for example Colour) and you do not want to wipe Size / Brand already stored on the product.
Delimiters
Default term delimiter is a comma ,.
If your feed uses pipes or another separator:
add_filter( 'iwp/woocommerce/attribute/delimiter', function () {
return '|';
} );
Or per attribute name:
add_filter( 'iwp/woocommerce/attribute/Colour/delimiter', function () {
return '|';
} );
Common problems
| Symptom | Likely cause |
|---|---|
| “Please, provide an attribute name.” | Attribute Name is empty or not mapped |
| Variations import but cannot be selected | Parent missing Used for variations? = Yes, or terms not listed on parent |
| Attributes disappear on update | Keep existing Product Attributes is off and the feed only sends a subset |
| Global attribute not linked | Name spelling differs from Products → Attributes, or Is Global? is No |
| Only first value applied on a variation | Variation rows only use the first term — split into separate variation rows |