Import attribute for a product

In this article we'll explain how to automatically import attributes for a WooCommerce product during a Product Set import/update. Plus, lots of code examples at the end of this article!

Examples of common attributes you might add to your products are:

  • Color
  • Size
  • Gender
  • Age Group
  • Material
  • Country


This article is about adding attributes to many products. If you just want to add an attribute to one product (ex. adding an EAN or UPC value to a specific product), you should use the this tutorial.


Please read these requirements before you begin.

1. Before you can import attributes for your products, the attributes you want to import must be added here: WordPress Admin Area > Products > Attributes > Add new attribute. Learn more about WooCommerce Attributes

2. Understand how to use WooCommerce's Product Attribute Filters.

3. Install the custom plugin if you haven't done so already.

OK, let's begin!

Import Attribute from a Specific Field

This is the most basic method of importing a single field as an attribute for a product.

Let's say all of your products have a color field that you want to import like this:

Example of a product with a "color" field.

The code you would add to your custom plugin would look like this:

Now after your Product Sets update, if a product has a color field, the value of the field will be imported for that product.

Import Attribute from Multiple Fields

Sometimes the attribute value you want to import exists in different fields depending on the merchant.

For example, here are 2 products from 2 different merchants where their "gender" information is stored in different fields: gender and attribute6

Example of gender information in different fields.

Now when the Product Set updates, first it will try to import the gender field's value. If that doesn't exist, it will try to import the attribute6 field's value. If neither of those fields exist, nothing will be imported.

Import Multiple Attributes from a Single Field

Sometimes a field will contain multiple attribute values separated by a character such as a comma.

For example, this product has many sizes in the size field separated by a comma.

Example of field with multiple values separated by a character.

In order to import each size as its own attribute we need to use the field_delimiter property and set it equal to a comma: $ai->field_delimiter = ',';

So our code will look like this:

Now when our Product Set updates, it will import multiple attributes for the size field instead of just one value.

Using Preferred Attribute Names and Attribute Name Variants

So far we've been importing the attribute name as the merchant has provided it. But what if you want more control.

For example, what if you want to use the word Purple for a product's color instead of the word Violet.

To add preferred attribute names and map them to their variants we can do something like this: $ai->add_term( "Black", [ "ebony", "onyx", "obsidian" ] ); That code will import the attribute name "Black" when the color is either "ebony" or "onyx" or "obsidian".

Here's an example where we set the preferred color name and its respective variants when importing the color field.

Now when we update our Product Set, it will only import our preferred color names as attributes if the preferred color name or its variants appear in the product's color field.

Adding a Fallback Field When Attribute Variants Aren't Found

Given the above example, if the color field contains one of our preferred terms or variant terms, then the preferred term will be imported.

But what happens if the color field does not contain one of the terms we've defined? Without a fallback field, no color will be imported.

In this example, we will provide a a fallback field so that the value from the color field still gets imported even if it doesn't exist in our list of terms.

For example, the following products has "orange" in the color field however none of our terms take the word "orange" into account. But, we still want to import it!

Example of color not defined in preferred terms.

Here's how to provide a fallback field:

Now after our Product Set updates the term "orange" will be added to our Color attribute despite the term not being defined in our preferred or variant attribute names.

Import Attribute From Multiple Fields with Preferred Terms

Not every product will have the value you want to import in the field you would expect. But if we have our preferred terms and their variants, we can use multiple fields to extract the values we want.

For example, let's say we have our preferred color names (like in the examples above) but the products we are importing do not have a dedicated color field. No problem, we can use other fields to deal with products like these:

Example of color not defined in preferred terms.

In these 3 products, we have colors in the description field, tags field and the attribute5 field.

To "look at" all of those field when we import the product and map them to our preferred terms, we can concatenate those fields into one field using a "." and provide a fallback field if needed.

Now after your Product Sets update, your colors should be imported properly.

Providing a Default Value if No Terms Found

Not every product has the attribute value you are targeting. Sometimes you want to provide a default value if not term was found.

For example, the following product is not associated with a Gender. So in that case, we want to use the term "unisex" to indicate that the product is appropriate for both men and women.

Example of product that is for men and women.

Here's how we set a default value if no matches were found.

Now once your Product Sets update, any product which does not contain a gender field will have the default value of "Unisex" applied to its Gender attribute.

Preferred Terms, Term Variants and Excluded Terms

One some occasions you might not want your Preferred Term to be associated with a product if that product contains some other word.

For example, let's say you have an "Age Group" attribute where you want to associate each product with either: Girls, Boys, Mens or Womens. So you write something like this:

$ai->add_term( "Womens", [ "female", "womens", "woman", "women" ] );

But what happens if we have a product like the following:

Example of product that is associated with 2 different terms.

For this product, our "Girls" product will be imported under the "Womens" Age Group because the gender field is set to "female".

In cases like these, we need to set some terms to exclude from our preferred "Womens" term. In this case, we will exclude "girl" and "girls" and "kids" from this term like this:

$ai->add_term( "Womens", [ "female", "womens", "woman", "women" ], [ "girl", "girls", "kids" ] );

So our final "Age Group" code will look like this:

Now after your Product Sets update, your Age Group attributes will be imported with the proper values.

Examples, Examples, Examples

You can find a bunch of pre-made attribute importers here. Feel free to use any/all of them!

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us