Docs

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.

Product Attributes section

In the WooCommerce Products template, open Product Attributes and click Add Row for each attribute you need.

Field reference

FieldDescription
NameAttribute label, e.g. Colour or Size. Required — empty names are skipped.
TermsOne 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 inProducts → Attributes (auto-created on import if missing)Only on the product
Taxonomypa_{slug} e.g. pa_colourCustom product attribute
Best forShared attributes used on many products / variationsOne-off attributes
Variation value stored asTerm slugTerm string as provided

Tips for global attributes:

  • Use a consistent Name spelling (Colour vs Color) 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:

  1. Row 1 — Name: Colour, Terms: Red,Blue, Used for variations: Yes, Is Global: Yes
  2. 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

SymptomLikely cause
“Please, provide an attribute name.”Attribute Name is empty or not mapped
Variations import but cannot be selectedParent missing Used for variations? = Yes, or terms not listed on parent
Attributes disappear on updateKeep existing Product Attributes is off and the feed only sends a subset
Global attribute not linkedName spelling differs from Products → Attributes, or Is Global? is No
Only first value applied on a variationVariation rows only use the first term — split into separate variation rows