Ducted

Google Shopping
feeds.

Shopping ads and free listings in Google Search.

Google Shopping runs on the Merchant Center product feed: the feed is the ad. A product that is missing from it, or whose record is disapproved, cannot show in Shopping ads or free listings, and a feed-wide problem can take the whole account's items down with it.

The table below is the Google Shopping spec as Ducted enforces it: the required attributes, the identifier rules around brand, GTIN and MPN, and the apparel attributes that become required in Brazil, France, Germany, Japan, the UK and the US.

What the feed needs

Generated from the Ducted Google Shopping template, the same field rules your mapping is validated against.

55 fields: 8 required, 3 recommended, 44 optional. 10 fields change level with the market, the product or how the record is sent.

FieldLevelAccepted values / example
idrequiredSKU12345
titlerequired
required for products without a structured_title
Mens Trail Running Shoes - Black
descriptionrequired
required for products without a structured_description
linkrequired
image_linkrequired
availabilityrequiredin_stock · out_of_stock · preorder · backorder
pricerequired79.99 USD
brandrequired
required for new products with identifiers (Google exempts movies, books, music and products that truly have no brand - send identifier_exists: no for those)
Acme
gtinrecommended4006381333931
mpnrecommended
recommended for products without a GTIN
item_group_idrecommendedSHOE123
coloroptional
required for apparel products targeted to Brazil, France, Germany, Japan, the UK or the US
Black / Red
sizeoptional
required for clothing and shoes targeted to Brazil, France, Germany, Japan, the UK or the US
10
genderoptional
required for apparel products targeted to Brazil, France, Germany, Japan, the UK or the US (except accessory sub-categories such as shoelaces, watch bands, keychains and lanyards)
male · female · unisex
age_groupoptional
required for apparel products targeted to Brazil, France, Germany, Japan, the UK or the US (except accessory sub-categories such as shoelaces, watch bands, keychains and lanyards)
newborn · infant · toddler · kids · adult
energy_efficiency_classoptional
optional for country in CH, NO, GB; not applicable for products outside Switzerland, Norway and the UK (use certification instead)
A+++ · A++ · A+ · A · B · C · D · E · F · G
availability_dateoptional
required for preorder and backorder products
2026-05-24T13:00-0800

Field rules from the official spec, verified 2026-10-02.

Also supported, always optional (38): condition, google_product_category, product_type, sale_price, additional_image_link, video_link, identifier_exists, sale_price_effective_date, subscription_cost, mobile_link, size_type, size_system, material, pattern, shipping, shipping_weight, shipping_label, multipack, is_bundle, unit_pricing_measure, unit_pricing_base_measure, min_handling_time, max_handling_time, expiration_date, cost_of_goods_sold, promotion_id, ads_redirect, custom_label_0, custom_label_1, custom_label_2, custom_label_3, custom_label_4, certification, structured_title, structured_description, adult, excluded_destination, included_destination

Where Google Shopping feeds get rejected

Availability spelled for another channel

Google accepts in_stock, out_of_stock, preorder and backorder, in any casing. "In Stock" with a space, "available" or "yes" in that column rejects the record. Preorder and backorder products also need an availability_date.

Price without a currency

The format is an amount plus the ISO code, like 79.99 USD. A bare number or a currency symbol fails the format check; a price of 0 is flagged unless the product is sold with a subscription cost or is a mobile device sold on contract.

New product without a brand

brand is required for new products with identifiers. Books, music, movies and products that truly have no brand are the exception: send identifier_exists set to no for those, or the record is rejected.

Apparel without colour, size, gender and age group

For apparel targeted to Brazil, France, Germany, Japan, the UK or the US, color, gender and age_group become required (gender and age_group except accessory sub-categories) and size becomes required for clothing and shoes. An apparel feed that carries only a title is rejected once the country and category are known, and flagged until they are.

Duplicate ids

Every id must be unique in the feed. Two variants sharing the parent product id, or a re-used SKU, are rejected; item_group_id is where the parent id belongs.

Colours separated by commas

Red, Green, Black in one cell keeps only the first colour on Google. Separate up to three with a slash (Red/Green/Black); the same applies to a size that lists dimensions with a comma.

Validate your Google Shopping feed for free →

From source to a live feed URL

  1. Connect the source. A Shopify, WooCommerce, Teemill, Spring, Printify Pop-Up, Bonfire or Fourthwall store address, a file, a feed URL or a REST API. No source at all? Website Indexing builds one from the store itself.
  2. AutoMap the fields. Every source column is scored against the channel template and the best match is pre-filled. You confirm or tweak.
  3. Transform what needs it. Casing, currency and number formats, conditional values, fallbacks for fields the source sometimes leaves empty.
  4. Validate before you send. The health check names the field, counts the affected records and shows example rows from your own data.
  5. Serve a permanent URL. The platform fetches your feed on a schedule; feed pull tracking shows when it last did.

The rest of the shopping stack

One mapped catalog serves every channel; each page covers what that platform's feed needs.

E-commerce feedsMeta CatalogTikTok CatalogPinterestMicrosoft ShoppingSnapchatRedditX ShoppingCriteoChatGPT Ads

Merchant Center-ready, before you upload.

Connect a source and map it free, or check your current product feed against the Google Shopping rules first.

Create free accountCheck your Google Shopping feed