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

AttributeWhen Google requires itValues / limit
genderApparel targeting BR, FR, DE, JP, UK, US; free listings of Apparel & Accessoriesmale, female, unisex
age_groupSame countries; free listings of Apparel & Accessoriesnewborn, infant, toddler, kids, adult
colorSame countries; any product sold in several colorsMax 100 characters, 40 per color, primary color first
sizeClothing and Shoes in those countries; any product sold in several sizesMax 100 characters; one-size items can use OSFA or one_size
item_group_idVariants in those countries; all variants in free listingsMax 50 characters, same value across the style
size_typeOptionalregular, petite, maternity, big, tall, plus (up to two)
size_systemOptionalUS, UK, EU, DE, FR, JP, CN, IT, BR, MEX, AU
material / patternOptional, recommendedMaterial 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

ProductFormulaExample
DressBrand + gender + style + material + color + sizeMarlowe Women's Linen Wrap Dress, Black, M
JeansBrand + gender + fit + product + wash + waist/lengthNorthfold Men's Slim Selvedge Jeans, Indigo, 32/32
SneakersBrand + gender + model + product + color + sizeKestrel Unisex Court Low Sneakers, White, EU 42
KidswearBrand + age + product + material + color + sizeLittle 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.

Womenswear · Google Shopping US · Shopify, 1,800 variants

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.

Footwear · Meta Ads and Google, EU · Shopify, 900 variants

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'.

Kidswear · Google Shopping UK · CSV export, 600 SKUs

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.

Menswear · Google Shopping Germany · English Shopify store, 700 SKUs

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

Get your feeds set upOr email support@textfinity.io

Tell us your store and channels. We reply within 24 hours.