Product vertical
Apparel and accessories
Apparel is the one vertical where a feed that satisfies the baseline specification still gets disapproved. Items in the Apparel & Accessories branch of the Google taxonomy additionally require colour, size, gender and age group in most major markets, and every variant must be grouped so a shopper can pick between them.
Categories this covers
The Google product taxonomy branches these rules apply to. Match your own products against these paths before assuming the extra requirements are yours.
- Apparel & Accessories
- Apparel & Accessories > Clothing
- Apparel & Accessories > Shoes
- Apparel & Accessories > Clothing Accessories
- Apparel & Accessories > Jewelry
- Apparel & Accessories > Handbag & Wallet Accessories
Attributes this vertical changes
These sit on top of the attributes every feed needs. A requirement shown here applies because of the category, not because of the channel.
| Attribute | Requirement here | Why |
|---|---|---|
| color | Required | Required for apparel items in the major target markets, and used to build the colour filter and swatch a shopper picks from. |
| size | Required | Required for clothing and shoes. Submitted as a single value per variant, using the size as a shopper would recognise it rather than an internal code. |
| gender | Required | Required for apparel. One of male, female or unisex, and it drives a filter shoppers use heavily in this vertical. |
| age_group | Required | Required for apparel. One of newborn, infant, toddler, kids or adult, which is how children's ranges are separated from adult ones. |
| item_group_id | Required | Conditional in general but effectively mandatory here, because an apparel product without grouped variants loses the size and colour picker entirely. |
| size_type | Recommended | Distinguishes regular from petite, plus, big and tall, maternity and similar cuts. Without it a plus-size range competes directly against regular sizing. |
| size_system | Recommended | States which country's sizing the value belongs to. A UK 10 and a US 10 are different garments, and the system is what tells them apart. |
| material | Recommended | Used for filtering and for matching similar items. Often available in a Shopify metafield or parsed reliably from the product description. |
| pattern | Recommended | Striped, floral, plain and so on. Low effort where the data exists, and it separates otherwise identical listings in a crowded result. |
| gtin | Required in some cases | Own-label fashion frequently has no manufacturer barcode at all, which makes the brand and mpn fallback the normal case here rather than the exception. |
What catches apparel and accessories stores out
Jewellery and handbags inherit the apparel rules
The extra requirements attach to the Apparel & Accessories branch of the taxonomy, not to clothing as a concept. Jewellery, watches, bags, belts and sunglasses all sit inside that branch, so a jewellery store that never thought of itself as apparel is still asked for colour, size, gender and age group.
Shopify option names do not map themselves
Shopify stores variant options as option1, option2 and option3 with whatever names the merchant typed. One product calls it Colour, another Color, a third Shade. The feed needs a mapping that reads the option name rather than trusting the position, because position two is size on one product and colour on the next.
Size values are written for humans, not for channels
Catalogues carry "M", "Medium", "M/L", "EU 40", "40" and "UK 8" in the same size option, sometimes on the same product. Channels accept a single size value and will take any of those, but filtering and grouping only work well when one convention is used consistently, which usually means normalising at generation time.
Gender and age group rarely exist anywhere in the store
Almost no Shopify catalogue has a gender or age group field. The values are usually implied by collection membership, by a tag, or by the product type, and have to be derived from one of those. Defaulting everything to unisex adult silences the requirement and quietly removes your children's range from the filters shoppers actually use.
A colour swatch is not a colour name
Fashion colour names are marketing copy: Midnight, Oatmeal, Sand. Channels want a recognisable colour for filtering, so the useful mapping keeps the marketing name in the title and sends a normalised colour, with the primary colour first when an item has several.
Where these values come from in Shopify
Shopify has a field for some of these and nowhere to put the rest. Both cases are worth knowing before you start mapping.
- color
- From the variant option named Colour or Color, read by option name rather than by position. Stores that sell one colour per product often hold it in a metafield or in the product title instead.
- size
- From the variant option named Size, again by name. Normalise the value at generation time so one convention reaches the channel, and keep the original for the title.
- gender
- Not a Shopify field. Derived from collection membership, a tag such as womens, or the product type. Worth mapping explicitly per collection rather than guessed from the title.
- age_group
- Not a Shopify field either. Usually derived from the same signal as gender, with kids and baby ranges identified by collection or tag.
- material
- Usually a metafield where the store has invested in one, otherwise present in the description as a composition line that can be parsed with care.
- size_system
- A static value per market in most stores, since a single store generally sizes in one system. Multi-market stores need it per feed rather than per product.
Frequently asked questions
What extra attributes does an apparel feed need?
Colour, size, gender and age group on top of the baseline, and item_group_id to group the variants. Size type, size system, material and pattern are recommended and are what make filtering work properly.
Does jewellery count as apparel for a product feed?
Yes. Jewellery sits inside the Apparel & Accessories branch of the Google taxonomy, so it inherits the same extra requirements as clothing, including gender and age group. The same applies to bags, belts, watches and sunglasses.
Where do gender and age group come from in Shopify?
Nowhere directly, which is why they are the two that catch stores out. They are normally derived from collection membership, a tag or the product type, and setting them deliberately per collection is more reliable than inferring them from the title.
How should Shopify variant options be mapped to size and colour?
By reading the option name rather than its position. Shopify stores options as option1, option2 and option3 in whatever order the merchant created them, so position two is size on one product and colour on another.
Can I submit one row per apparel product instead of per variant?
No. Each size and colour is its own item with its own id, grouped by a shared item_group_id. A product-level apparel feed loses exactly the choices a shopper in this vertical wants to make.
Attributes involved
- item_group_id The item_group_id attribute groups the rows that are variants of the same product, so a channel can show one listing with a size or colour picker instead of several unrelated listings. On Shopify the natural source is the product ID, shared by every variant row generated from that product.
- gtin The gtin attribute is the globally unique barcode number a manufacturer assigns to a product, covering UPC, EAN, JAN and ISBN formats. Channels use it to match an item against the same product sold elsewhere, and on Shopify it comes from the variant's barcode field, which is optional in the admin and therefore frequently empty.
- brand The brand attribute is the name of the brand a product belongs to, and it is what makes a manufacturer part number meaningful and a listing eligible for brand-based matching. On Shopify it maps most often from the vendor field, which is unreliable because merchants commonly use vendor to record a supplier or distributor rather than the consumer-facing brand.
- title The title attribute is the product name a channel shows in a listing and matches against search queries, which makes it the single highest-leverage field in a product feed. On Shopify it usually needs building from the product title plus the variant's options, because the raw product title alone does not describe an individual variant.
Errors this vertical runs into
- Missing value: GTIN The "Missing value: GTIN" issue means a channel believes a product has a manufacturer-assigned barcode but the feed did not supply one. On Shopify it almost always traces back to the variant barcode field, which is optional in the admin and therefore left empty across large parts of most catalogues.
- Missing value: brand The "Missing value: brand" issue means a channel expects a brand name for a product and the feed did not supply one, or supplied a placeholder it treats as empty. On Shopify it usually means the vendor field is blank, or holds a supplier or internal category rather than the brand a shopper would recognise.
Related concepts
- Variant-level feed A variant-level feed emits one row for each purchasable variant rather than one row per product, because sales channels treat every size, colour and material as a separately buyable item with its own price, stock and barcode. A Shopify product with four sizes in three colours is one product in the admin and twelve items to a channel.
- Product identifiers Product identifiers are the values that let a sales channel recognise that your listing and someone else's describe the same physical product: a GTIN, or a manufacturer part number together with a brand. They matter because a channel that can identify a product can attach reviews, specifications and competing offers to it, and one that cannot has to treat your listing as an unknown object.
Channels this applies to
- Google Shopping Google Shopping is the surface where Google displays product listings from a merchant's catalogue, fed by a product feed uploaded to Google Merchant Center. Google's product data specification is the most detailed of the major channels, and the one whose attribute names the other channels tend to borrow.
- Meta Meta's product catalogue is the data source behind Facebook and Instagram Shops, Advantage+ catalogue ads and dynamic retargeting, populated by a product feed uploaded to Commerce Manager. Its attribute names largely mirror Google's, but its accepted values and its handling of variants differ enough to break a feed copied straight across.
- Microsoft Advertising Microsoft Advertising runs product ads across Bing, Yahoo and the Microsoft Audience Network from a catalogue uploaded to Microsoft Merchant Center. Its feed specification is closely modelled on Google's, which makes it the cheapest additional channel to launch once a Google Shopping feed already exists.
- Pinterest Pinterest turns an uploaded product feed into Product Pins, which are shoppable pins that carry live price and availability from the catalogue. Its feed specification borrows Google's attribute names, and its distinguishing requirement is that every item needs a genuinely usable image, because the image is the entire unit of discovery on Pinterest.
Primary sources
Channel specifications change. These are the official documents this page is based on.