For
Product feeds for fashion ecommerce
A clothing store's feed fails in ways a gadget store's never does. Every size and color is its own offer, Google requires gender, age group, color and size for apparel in its biggest markets, and a dress in five sizes and three colors is fifteen rows that must agree with each other. Here is what a fashion product feed needs, the rules that fill it from a Shopify or CSV export, and a set-up sized to a real catalog.
We connect your store, build the feed and keep it in sync. Updated 2026-10-27.
At a glance
- For apparel targeting the US, UK, Germany, France, Japan or Brazil, Google requires gender, age_group and color, and size for Clothing and Shoes; every variant needs an item_group_id.
- Each size and color is one feed row with its own id, so a 150-style catalog in 10 variants each is 1,500 SKUs. Count variants, not styles.
- The title formula that works: brand + gender + product + material or fit + color + size, with the words shoppers filter by in the first 70 characters.
- Textfinity reads Shopify variants and options natively; we set up the rules that derive the apparel attributes and publish Google, Meta, Pinterest and TikTok feeds from one source.
The apparel attributes a fashion product feed must carry
| Attribute | When Google requires it | Values / limit |
|---|---|---|
| gender | Apparel targeting BR, FR, DE, JP, UK, US; free listings of Apparel & Accessories | male, female, unisex |
| age_group | Same countries; free listings of Apparel & Accessories | newborn, infant, toddler, kids, adult |
| color | Same countries; any product sold in several colors | Max 100 characters, 40 per color, primary color first |
| size | Clothing and Shoes in those countries; any product sold in several sizes | Max 100 characters; one-size items can use OSFA or one_size |
| item_group_id | Variants in those countries; all variants in free listings | Max 50 characters, same value across the style |
| size_type | Optional | regular, petite, maternity, big, tall, plus (up to two) |
| size_system | Optional | US, UK, EU, DE, FR, JP, CN, IT, BR, MEX, AU |
| material / pattern | Optional, recommended | Material max 200, up to three separated by / |
From Google's Merchant Center product data specification, checked 2026-10-27. Microsoft Advertising requires gender, age_group, color and size for apparel in the US, UK, France and Germany.
Variants: the part of a clothing feed that breaks first
A Google Shopping feed for a clothing store is a variant feed: one row per size and color, each with its own id (the variant SKU), its own price and availability, and an image of that color. All rows of a style share one item_group_id. When the group is missing, Google treats the sizes as unrelated duplicates; when the id repeats across variants, channels drop rows. Meta, Pinterest and TikTok use the same item_group_id field, so getting it right once fixes four channels.
Shopify stores variants with option names and values ('Size', 'Color'), which Textfinity reads natively, so size and color are renames or a regex split. CSV exports from other platforms often put 'Black / M' in one column; replace from regexp splits it. The hard part is gender and age group, which most stores never stored as fields: derive them with an advanced rule from the product type, vendor or a metafield (a native Shopify connection does not import tags; a CSV export with a Tags column can use those), and let feed hygiene's completeness check show the rows a rule missed.
Title formulas for a Google Shopping feed for clothing
| Product | Formula | Example |
|---|---|---|
| Dress | Brand + gender + style + material + color + size | Marlowe Women's Linen Wrap Dress, Black, M |
| Jeans | Brand + gender + fit + product + wash + waist/length | Northfold Men's Slim Selvedge Jeans, Indigo, 32/32 |
| Sneakers | Brand + gender + model + product + color + size | Kestrel Unisex Court Low Sneakers, White, EU 42 |
| Kidswear | Brand + age + product + material + color + size | Little Fern Kids' Organic Cotton Hoodie, Sage, 6Y |
Google allows 150 characters; keep the words a shopper filters by (gender, product, color) in the first 70.
Channel mix and catalog size for a fashion store
Most clothing stores run Google Shopping for search intent and Meta Ads for discovery and retargeting, then add Pinterest Ads (strong for womenswear and occasion wear, with its 1000 × 1500 portrait image rule) or TikTok Ads. Each is its own feed with its own filters and titles. A label with 20 styles in 5 sizes is 100 SKUs; a store with Google, Meta, Pinterest and TikTok feeds plus AI titles or a translated feed carries the same variants four or five times over. The variant count and the number of feeds are what a quote is based on.
Examples
Worked examples, by situation
Four clothing catalogs, four different gaps between the store data and what channels need.
Gender and age group from product type
Before
Product type: Women > Dresses Option1: Black Option2: M (no gender or age_group field)
After
gender: female age_group: adult color: Black size: M item_group_id: 8114470
How we set it up
We map gender with an advanced rule: if [product_productType] includes "Women" then "female" else if [product_productType] includes "Men" then "male" else "unisex", and give age_group the static value adult. color and size are renames from the option values; item_group_id renames the product id.
EU shoe sizes with the size system declared
Before
Option2: EU 39 title: Court Low Sneakers
After
size: 39 size_system: EU title: Kestrel Women's Court Low Sneakers, White, EU 39
How we set it up
We map size with remove from regexp ^EU\s* on the option value and give size_system the static value EU. The title is an advanced rule: [product_vendor] + " Women's " + [product_title] + ", " + [variant_color] + ", " + [variant_size] for this women's collection, so shoppers still read 'EU 39'.
Toddler and kids age groups from the size label
Before
size: 3T (and 6Y, 8Y, 2T …) age_group: (empty)
After
size: 3T age_group: toddler size: 6Y age_group: kids
How we set it up
We give age_group a conditional rule: if size matches regexp \d+T$ then the static value toddler, else the static value kids. Mapping conditions are anchored at the start of the value, so the pattern begins with the digits.
German titles for a German feed, without a translator
Before
title: Men's Merino Crew Sweater, Navy, L
After
title: Herren Merino Rundhalspullover, Marineblau, L
How we set it up
We set up an AI config that translates the title field into German; once the generations are reviewed and accepted, title uses replace from AI config with the English title as fallback, so unaccepted products keep the source title.
Copy this plan
Plan: a fashion product feed set up in an afternoon
Shopify or CSV, the steps are the same; Shopify skips the regex split.
01
Send us the store and read the profile
Feed hygiene shows the percentage of variants with color, size and gender filled, color spelling variants (Navy, navy, NAVY) and titles over 150 characters before anything is mapped.
What we set up: We connect your Shopify store or CSV / XML export URL and run feed hygiene.02
Build the Google Shopping feed
Map id from the variant SKU, item_group_id from the product id, color and size from the options.
What we set up: We start from the Google Shopping channel template and map these fields by rename.03
Derive gender and age group
Use the product type, vendor or a metafield (tags only from a CSV export); static values where the whole store is one audience.
What we set up: We map gender with an advanced rule and age_group with a static value or a conditional rule.04
Build the title
Brand, gender, product, material or fit, color, size. Use AI title enhancement if your product names are thin.
What we set up: We map title as a combine, or set up an AI config that enhances titles.05
Filter what should not get ad spend
Gift cards, samples, final-sale items you do not want to push, and sizes with one unit left.
What we set up: We add exclude filters: product.productType is equal to Gift Card; variant.inventoryQuantity is less than 2. Filters read source columns: on a CSV export, they use its own headers.06
Clone the set-up for Meta, Pinterest and TikTok
Each channel gets its own feed from the same shop with its own template; adjust availability spelling and images per channel. Each feed is a URL that Merchant Center, Commerce Manager and the other channels fetch on a schedule.
What we set up: We build the Meta Ads, Pinterest Ads and TikTok Ads feeds and register the feed URLs with you: you give us access or we walk you through it.
Customization tips
Make it yours
Keep out-of-stock sizes in, marked out of stock
Dropping a sold-out size breaks the size picker on the product page Google shows and loses its history. Send it with availability out of stock; filter whole styles out only when every size is gone. The trade-off is a longer feed with rows that never serve.
Normalize colors before you map them
Fashion catalogs drift: 'Off White', 'off-white', 'Ecru'. A replace from google sheet rule with the variants in column A and the clean name in column B of the sheet's first tab fixes them; it is a substring replace, so list 'Off-White' before 'White' and keep entries specific.
One image per color, not per product
Google and Meta show the variant's image_link. If every color shares the main product image, the black dress shows up in red searches. Map the variant image and fall back to the product image with an advanced rule.
Seasonal custom labels
A custom_label_0 of 'SS26' or 'carryover' lets campaigns bid down on last season without a second feed. Derive it with an advanced rule from a season metafield (or the Tags column of a CSV export) so it updates when the store data changes.
FAQ
Questions about product feed for fashion ecommerce
What attributes does a Google Shopping feed for a clothing store need?
Beyond the basics (id, title, description, link, image_link, price, availability, brand), apparel targeting the US, UK, Germany, France, Japan or Brazil needs gender, age_group and color, size for Clothing and Shoes, and item_group_id on every variant. size_type, size_system, material and pattern are optional and help matching.
Does every size need its own row in a fashion feed?
Yes. Each size and color combination is its own item with a unique id, price, availability and image, and all variants of a style share one item_group_id. That is also how SKUs are counted: a style in ten variants is ten SKUs.
How do I add gender to a feed if my store does not store it?
Derive it from data you have. A rule that reads the product type, vendor or a product metafield (for example, if the product type includes 'Women' then female) fills it for every product; a static value works for single-gender stores. Check the completeness report for rows the rule misses.
Which channels work best for fashion product feeds?
Google Shopping for search demand and Meta Ads for discovery and retargeting are the usual base; Pinterest Ads and TikTok Ads add reach for visual and trend-led catalogs. Each needs its own feed because availability spelling, image rules and title length differ.
Set up for you
Have your clothing store's feeds built from your variants.
Send us your store. We use hygiene to find the missing colors and sizes, set up rules in Textfinity that derive gender and age group once, and publish Google, Meta and Pinterest feeds from one source.
Tell us your store and channels. We reply within 24 hours.