Guide

Google Shopping feed: the complete guide

A Google Shopping feed is a file, or a live data source, that lists every product you sell with Google's attribute names: id, title, description, link, image_link, price, availability, brand, gtin and the rest. You add it to Google Merchant Center, which uses it for Shopping ads and free listings. This guide covers the specification and its limits, the three ways to submit it, the scheduled feed URL, the errors that keep products out and what to optimize once it is approved.

We connect your store, build the feed and keep it in sync. Updated 2026-10-27.

At a glance

  • Required for every product: id (max 50 characters), title (max 150), description (max 5,000), link, image_link, availability, price, plus brand for new products and gtin wherever one exists.
  • Formats: tab-delimited .txt or .tsv, or XML (RSS 2.0 or Atom 1.0), UTF-8 or UTF-16, up to 4 GB; Google Sheets and the Merchant Center API are the alternatives to a file.
  • A scheduled fetch pulls the feed from a URL (http, https, ftp or sftp), every 24 hours by default. Products expire 30 days after their last refresh.
  • Apparel sold in Brazil, France, Germany, Japan, the UK and the US also needs color, size, gender and age_group; variants need item_group_id.
  • Textfinity builds the feed from Shopify, a CSV export, a Google-shaped XML feed or a Google Sheet as a CSV on a stable URL; we register that URL in Merchant Center as a scheduled fetch with you.

What a Google Shopping feed is

A Google Shopping feed (also called a Google Merchant Center feed or product data feed) is a structured list of your products, one row or item per product or variant, with values in the attribute names Google defines in its product data specification. Merchant Center reads it, checks each product against its policies and requirements, and makes approved products eligible for Shopping ads, Performance Max and free listings across Google surfaces.

The feed is the only product information Google uses for those listings. If a size, color or GTIN is not in the feed, Google does not know it, whatever your product page says. That is why the feed is usually built by a tool or app from the store's own data rather than typed by hand, and why its quality has a direct effect on which searches a product can show for.

Google Shopping feed specification: the attributes and limits

AttributeStatusFormat and limit
idRequiredUnique per product, max 50 characters; keep it stable across updates (the SKU is ideal)
titleRequiredPlain text, max 150 characters, no promotional text or all caps
descriptionRequiredPlain text, max 5,000 characters, product information only
linkRequiredLanding page on your verified domain, starting with http or https
image_linkRequiredJPEG, WebP, PNG, non-animated GIF, BMP or TIFF; at least 500 x 500 pixels, enforced from January 31, 2027
availabilityRequiredin_stock, out_of_stock, preorder or backorder (availability_date for preorder)
priceRequiredNumber plus ISO 4217 code, e.g. 29.90 EUR; excludes tax in the US and Canada, includes VAT elsewhere
brandRequired for new productsMax 70 characters; never N/A or Generic
gtinStrongly recommendedUp to 14 digits, no dashes or spaces, valid under GS1 rules
mpnRequired if no gtinMax 70 characters, manufacturer-assigned only
conditionRequired if used or refurbishednew, refurbished or used
item_group_idRequired for variants (6 countries)Max 50 characters, same value on every variant
color, size, gender, age_groupRequired for apparel (6 countries)gender: male, female, unisex; age_group: newborn, infant, toddler, kids, adult
google_product_categoryOptionalOne taxonomy ID or full path; the ID is recommended
product_typeOptionalYour own category path, max 750 characters
custom_label_0 to 4OptionalMax 100 characters each, up to 1,000 unique values per label
shippingRequired in some countriesShipping costs are required for listings in Australia, Canada, Germany, Japan, the UK and the US; set them in the feed or in Merchant Center

From Google's product data specification, checked 2026-10-27. The six apparel and variant countries are Brazil, France, Germany, Japan, the UK and the US.

How to submit a Google Merchant Center feed

Merchant Center accepts product data in three ways. A file, uploaded once or fetched on a schedule: tab-delimited .txt or .tsv, or XML in RSS 2.0 or Atom 1.0, compressed with gzip, zip or bz2 if you like, up to 4 GB and encoded in UTF-8 or UTF-16. A Google Sheet, which suits a small catalog maintained by hand. Or the Merchant Center API, which apps and platforms use to push updates programmatically.

For most stores the scheduled file is the right default: the store or feed tool publishes the feed at a stable URL, and Google fetches it on a timetable. A store app (Shopify's Google & YouTube channel, a WooCommerce plugin) uses the API instead and needs no URL, but gives you less control over titles, filters and labels. Textfinity publishes a comma-delimited CSV that Merchant Center fetches as a file data source on a schedule; we register the URL and the fetch time in your account with you, through access you give us or on a short call.

The Google Shopping feed URL and scheduled fetch

  • The URL must start with http, https, ftp or sftp, and the file must be under 4 GB.
  • Googlebot and AdsBot-Google must be able to reach the file: a robots.txt block or a login wall makes every fetch fail.
  • Google fetches every 24 hours by default; you can change the time and frequency in the data source settings.
  • Every product expires 30 days after its last refresh. A feed URL that stops updating, or a schedule that is paused, empties the account a month later.
  • Keep the URL stable. A tool that publishes a new file name on each run forces you to re-enter it in Merchant Center every time.
  • Time the fetch after your own sync: if the store syncs at 02:00 and the feed rebuilds by 02:15, a 03:00 fetch gets fresh prices.

Common Google Shopping feed errors and how to fix them in the feed

Error in Merchant CenterUsual causeFix in the feed
Missing or invalid GTINBarcode column empty, or placeholder values like 0Join barcodes from a supplier sheet; send brand + mpn where none exist; identifier_exists no only when truly none
Price mismatchFeed refreshed less often than prices change, or sale shown on site but not in the feedRebuild after each store sync; map sale prices to sale_price
Availability mismatchStock changes between fetchesMore frequent sync and fetch; exclude low-stock items if the gap is large
Image too small or missingThumbnail URLs from the export, placeholder imagesMap the full-size image column; exclude rows where that source column is blank
Missing apparel attributesColor and size inside the title or an option stringSplit option values into color and size; add gender and age_group by rule
Title too long or promotionalStore titles with "FREE SHIPPING" or SKU codesRemove from regexp; rebuild titles from attributes under 150 characters
Missing shippingNo shipping settings for a required countrySet shipping in Merchant Center or map a shipping column
Encoding errorsExport saved in a legacy encodingRe-export as UTF-8 or let the feed tool rewrite it

Textfinity does not import Merchant Center diagnostics; read the error there, fix it in the feed, and the next fetch picks it up.

After approval: optimizing the feed

An approved feed is eligible; an optimized one matches more searches. The work after approval is mostly titles (put brand, product type and the attributes people search for in the first 70 characters), descriptions that state facts, accurate google_product_category and product_type, complete identifiers and custom labels that let you split campaigns by margin, season or bestseller status.

On the feeds Textfinity has profiled, the average product title uses about 20 of Google's 150 characters, and 18 of 20 feeds had at least one critical data issue, so there is usually room before any bidding change. The optimization guide linked below goes through each attribute.

Examples

Worked examples, by situation

Five stores, five different starting points for the same Google Shopping feed.

Fashion · Shopify, Google Shopping US · 2,000 variants

Apparel attributes the store never stored

Before

Title: Linen Shirt
variant.title: Sand / M
product.productType: Women's Shirts

After

color: Sand
size: M
gender: female
age_group: adult
item_group_id: 8812004

How we set it up

We map color with remove from regexp \s*/.*$ on variant.title and size with remove from regexp ^.*/\s* ; gender is a static value female with a condition if product.productType includes Women, else unisex; age_group is a static value adult; item_group_id is a rename of the product id.

Homeware · WooCommerce CSV export, Germany · 800 SKUs

German price format to Google's

Before

Preis: 29,90 €

After

price: 29.90 EUR

How we set it up

We read the WooCommerce CSV export by URL and map price with replace from regexp ^(\d+),(\d{2}).*$ to \1.\2 EUR. Prices stay VAT-inclusive, as Google expects outside the US and Canada.

Electronics · Magento with a custom XML export · 3,500 SKUs

From an unreadable XML to a clean feed

Before

<product><attributes><ean>…</ean></attributes></product>
(nested custom schema)

After

Magento CSV export by URL → gtin, mpn, brand mapped by rename

How we set it up

Textfinity reads Google-shaped RSS or Atom XML with flat fields, not arbitrary schemas, so we switch the Magento source to its CSV export by URL, map gtin as a rename of ean and strip HTML from description with remove from regexp <[^>]+>.

Ceramics studio · Google Sheet catalog · 60 SKUs

A hand-kept sheet published as a feed URL

Before

Sheet columns: name, price_sek, photo, in_stock (yes/no)

After

title, price (450.00 SEK), image_link, availability (in_stock / out_of_stock)

How we set it up

We read the Google Sheet as the source and map availability as an advanced expression: if [in_stock] equals "yes" then "in_stock" else "out_of_stock"; price gets add suffix " SEK". The studio keeps editing the sheet, and each sync picks up the changes.

Toys · Shopify, missing barcodes · 1,400 SKUs

GTINs joined from the supplier's sheet

Before

Barcode: (empty on 41% of products)

After

gtin filled from supplier data; 3% still empty and excluded

How we set it up

We join the supplier CSV as a merged source on SKU, map gtin as a rename of the merged EAN column, and add an exclude filter if EAN is blank (the merged column; filters run before mapping) for the remainder until the buyer sources them.

Copy this plan

Plan: a working Google Shopping feed today

Step 1 is yours in Google Merchant Center; steps 2 to 5 we set up in Textfinity for you; step 6 we do together.

  1. 01

    Set up Merchant Center

    Create the account, verify and claim your website, and set shipping and tax (US) settings. This happens in Google's interface.

  2. 02

    Connect your product source

    Shopify connects natively; other platforms use a CSV export URL or a Google-shaped XML feed, and small catalogs can use a Google Sheet. Textfinity profiles the data so gaps show before mapping.

    What we set up: We connect your source: Shopify natively, or a CSV URL, Google-shaped XML URL or Google Sheet.
  3. 03

    Start a feed from the Google Shopping template

    The template pre-fills Google's mandatory and recommended attributes. Map each from your columns using the specification table above.

    What we set up: We start your feed from the Google Shopping channel template and map each attribute from your columns.
  4. 04

    Fix values to Google's format

    Price with currency code, availability spelling, plain-text description, apparel attributes, identifiers from a merged sheet if needed.

    What we set up: We fix each value with rename, add suffix, remove from regexp or an advanced expression, and join a merged sheet for missing identifiers.
  5. 05

    Filter out what should not be listed

    Out-of-stock items, products without images, gift cards, anything you cannot ship.

    What we set up: We add exclude filters on the source columns, such as is equal to for stock status and is blank for the image column.
  6. 06

    Register the feed and check diagnostics

    Add the feed URL in Merchant Center as a file data source with a scheduled fetch, timed after your store sync. Check product diagnostics in Merchant Center a few hours later.

    What we set up: We register the feed URL as a scheduled fetch in your Merchant Center, with access you give us or on a short call, and go through the first diagnostics with you.

Customization tips

Make it yours

File feed or store app

A store app pushes products over the API with no URL to manage, but titles and filters follow the store. A file feed through a feed tool adds a step and gives you per-channel titles, rules and labels. Small catalogs with good titles can live with the app.

Variant SKU as id, forever

Google keys performance history to id. Changing ids, for example switching from product handles to SKUs, resets that history for every product. Pick the variant SKU once and keep it.

Fetch timing beats fetch frequency

A daily fetch scheduled an hour after the store sync is fresher than two fetches at random times. Align the Merchant Center schedule with your sync before asking for more frequent fetches.

Plan for the 500 x 500 image rule now

Google enforces a 500 x 500 pixel minimum for all product images from January 31, 2027. Map the original image URL rather than a resized thumbnail, and use feed hygiene's URL check to find broken links.

FAQ

Questions about google shopping feed

What is a Google Shopping feed?

A structured file or data source listing your products with Google's attribute names, such as id, title, description, link, image_link, price, availability, brand and gtin. Google Merchant Center reads it to show products in Shopping ads and free listings.

What format does a Google Merchant Center feed use?

Tab-delimited .txt or .tsv, or XML in RSS 2.0 or Atom 1.0, encoded in UTF-8 or UTF-16 and up to 4 GB, optionally compressed. Google Sheets and the Merchant Center API are the alternatives. Merchant Center also fetches comma-delimited CSV feeds such as the ones Textfinity publishes.

How often does Google fetch a feed URL?

Every 24 hours by default for a scheduled file fetch, at a time you can change. Products expire 30 days after their last refresh, so the feed must be fetched or resubmitted regularly.

What are the Google Shopping feed requirements for clothing?

On top of the standard required attributes, apparel targeted to Brazil, France, Germany, Japan, the UK or the US needs color, size, gender and age_group, and variants need item_group_id. Free listings require color, gender and age_group for all Apparel & Accessories products.

Do I need a feed if I use Shopify's Google channel?

No, the channel sends products through the API. A separate feed is worth it when you want different titles for Shopping, filtered product sets, custom labels, or channels the app does not cover.

Set up for you

We'll build your Google Shopping feed and register it with you.

Send us your store URL. We start from the Google Shopping template, fix the values to Google's format, filter what should not be listed and set up the scheduled fetch in your Merchant Center.

Have us build my Google Shopping feedOr email support@textfinity.io

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