# What are product attributes in an online store?

> What product attributes are, where they are stored, how filters, Merchant Center and schema.org read them, and which attributes create variants.

URL: https://clione.ai/glossary/product-attributes/
Lang: en

Someone buying a backpack does not decide by the product name but by its attributes: how many liters it holds, how much it weighs, whether it takes the rain, whether a 15-inch laptop fits. Here "attributes" are not the ones on an HTML tag or the "brand attributes" of a marketing plan, which are about how a company is perceived: they are **the concrete data that describes an item and can be checked**. They matter because your store's filters depend on them, along with what you send to Google and what an AI assistant can compare when someone asks for the best 30-liter backpack.

## How it works

An attribute is a name and value pair: "material: merino wool", "capacity: 30 liters", "compatibility: iPhone 15". What makes it an attribute, and not a sentence, is that **it lives in a field of its own**. A commerce platform stores it in the product's fields, in the options of its variants, or in [custom fields](/glossary/bigcommerce-custom-fields/), like Shopify's [metafields](/glossary/shopify-metafields/) or BigCommerce's [custom fields](/glossary/bigcommerce-custom-fields/); a large catalog is usually managed in a [PIM](/glossary/pim/). From that field, the same value reaches three places:

- **The store's filters.** The [faceted navigation](/glossary/faceted-navigation/) on a [category page](/glossary/category-page/) can only filter by what is in a field. "Waterproof" written in the description does not show up as a filter.
- **The page's markup.** [Schema.org](/glossary/schema-org/) defines properties in its [Product](/glossary/product-schema/) type for the most common attributes, such as `color`, `material`, `size`, `pattern` and `weight`, and a generic one, `additionalProperty`, for any characteristic without a property of its own.[^schema-product] Google recommends including color, material, pattern and size in the markup of [merchant listings](/glossary/merchant-listings/), with examples such as "Cotton/Polyester" for the material or "XL" for the size.[^google-merchant-listing]
- **The feed.** The product data specification of [Google Merchant Center](/glossary/google-merchant-center/) has an attribute for each of those data points, with its own rules. Color is written as text, with no numbers, no codes like `#fff000` and no values like "multicolor"; material takes up to two secondary materials separated by a slash, like "cotton/polyester/elastane"; and technical specifications go in `product_detail`, each with its section name, its attribute name and its value.[^gmc-spec]

In some categories, the attribute stops being optional. For clothing and accessories, Merchant Center **requires color, size, gender and age group on free listings**. Color is also required for all clothing targeted at Brazil, France, Germany, Japan, the United Kingdom or the United States, and for any product sold in several colors.[^gmc-spec]

## Attributes that separate variants and attributes that describe

Not all attributes do the same job. Some separate one version of the same product from another: size, color, material. Each combination is one of the [product variants](/glossary/product-variants/), with its own price, its own stock and its own identifier. Google supports six of those axes in its variant markup: color, size, suggested age, gender, material and pattern.[^google-variants] The other attributes describe all the variants the same way: the weight of the backpack does not change with the color.

The distinction has practical consequences. An attribute that separates variants is stored once per variant; one that describes is stored once per product. If you mix them up, you end up with the weight repeated across twelve variants, or with the color written on the parent product when each child has a different one.

## In a store

**Fictional example.** A mountain gear store sells a 30-liter backpack in two colors. Its original page says, in a single paragraph: "30-liter backpack ideal for hiking, light and water-resistant, with space for a laptop". Split into attributes, it looks like this:

| Attribute        | Value                          | Type               | Where it is used                                               |
| ---------------- | ------------------------------ | ------------------ | -------------------------------------------------------------- |
| Capacity         | 30 L                           | Describes          | Filter, markup (`additionalProperty`), feed (`product_detail`) |
| Weight           | 2.1 lb                         | Describes          | Filter, markup (`weight`), feed                                |
| Material         | Recycled polyester             | Describes          | Markup (`material`), feed (`material`)                         |
| Water resistance | Coated fabric; not submersible | Describes          | Page and feed (`product_detail`)                               |
| Laptop           | Up to 15 inches                | Describes          | Filter, page                                                   |
| Color            | Olive green / Black            | Separates variants | Variant option, markup (`color`), feed (`color`)               |

Notice two things. "Light" and "ideal for hiking" are not attributes: they are opinions, and they stay in the [product description](/glossary/product-description/). And "water-resistant" has become a value that can be checked, which is what someone about to compare needs. For the Merchant Center feed, Clione builds a supplemental feed that fills in color, material, size, gender and age group only when the store provides them, without guessing them.


A color's marketing name is not its color. "Desert Sand" or "Polar Night" sell well on the page, but in Merchant Center's color field the value has to be text that describes the color you see, with no hexadecimal codes and no "multicolor".[^gmc-spec] Keep the marketing name as the variant name and the actual color in its attribute.


## How to check it

1. **Open your best-selling category page** and note which filters it offers. Every filter that is missing is an attribute that is not in a field.
2. **Open three product pages and underline each checkable fact in the description** (dimensions, materials, capacities). What only exists in the text is not yet an attribute.
3. **Check the markup of one page**, the one Google reads to show [rich results](/glossary/rich-results/): run it through the [Rich Results Test](/glossary/rich-results-test/) and see whether the product carries `color`, `material`, `size` or `pattern` in its markup.[^google-merchant-listing]
4. **Review the Merchant Center diagnostics** for clothing and accessories: a missing color, size, gender or age group shows up as a product issue.[^gmc-spec]
5. **Check the units**: "30 l", "30 liters" and "30L" on three similar products are three different values to a filter.

## Related concept: product description

A product description is running text written for a person: it says who the item is for, how it is used and why to pick it. Attributes are the data that description leans on. A good description does not replace them, it cites them; and a fact that only exists in the description reaches neither the filters nor the feed. When attributes are missing, the work of filling them in is part of [catalog enrichment](/glossary/catalog-enrichment/).

To keep going, [the catalog and entities reading path](/learn/catalog-and-entities/) puts the other terms in order, from the [product page](/glossary/product-page/) to [product taxonomy](/glossary/product-taxonomy/).
