---
title: "Google product feed: how it works, IDs, sync and fixes"
description: "A Google product feed sends your products to Merchant Center. The attributes Google requires, why the ID never changes, how often to sync and what to fix first."
canonical: "https://www.productmetrics.io/blog/google-product-feeds"
pageType: article
language: en
publisher: "Product Metrics"
author: "Berend Vrakking"
datePublished: 2026-10-24
dateModified: 2026-10-25
image: "https://www.productmetrics.io/og/blog/google-product-feeds.png"
---

> Content index: https://www.productmetrics.io/llms.txt

# Google product feed: how it works, IDs, sync and fixes

## Key takeaways

- Google drops a product 30 days after its last refresh. Refresh the whole file every day, and send price and stock the moment they change.
- Use the SKU as the product ID, keep it within 50 characters and never change it: a new ID creates a new product without its history.
- Approval only makes a product eligible. Give each approved product one of four actions: fix now, promote, delay, or keep the free listing only.

A Google [product feed](https://www.productmetrics.io/glossary/product-feed "A product feed is a file or data source that lists your products, one per row, with attributes such as ID, title, price and availability.") is the product data you send to [Google Merchant Center](https://www.productmetrics.io/glossary/google-merchant-center "Google Merchant Center (GMC) is a free Google tool where a shop uploads and manages its product data, so its products can appear on Google Shopping and across Google."): one item per product, with attributes such as `id`, title, price and availability.

Every Shopping ad and free listing starts from it.

Approval is the easy half. The feed also has to keep each product's identity fixed and its price current, and approval says nothing about which products earn paid clicks.

I checked every Google rule here against Google's documentation on 24 October 2026.

## How does a Google product feed work?

A Google product feed works as a data source: Merchant Center reads it, checks each item against Google's rules and uses approved items in Shopping ads, [Performance Max](https://www.productmetrics.io/glossary/performance-max "Performance Max is a goal-based Google Ads campaign type that uses automation to reach customers across Google advertising channels.") and free listings.

In a text file, one line is one item. Google uses the attributes "to match your products to the right queries", says its [product data specification](https://support.google.com/merchants/answer/7052112?visit_id=639204752066312021-202242567&hl=sr&rd=1). A vaguely described product matches the wrong searches, or none.

Products reach Merchant Center in four ways (Google Merchant Center Help and Google Ads Help, checked 24 October 2026):

| Data source | How it updates | Fits |
|---|---|---|
| File at a URL | Google fetches it, every 24 hours by default | Any shop that exports a feed |
| File by upload or SFTP | Each time you send it | Exports from a [PIM](https://www.productmetrics.io/glossary/pim "A product information management (PIM) system is software for maintaining and enriching product information so teams can publish consistent details across sales channels.") or ERP |
| Google Sheets template | When the sheet changes | A short product list |
| Merchant API or platform connection | When your system pushes a change | Fast-moving prices and stock |

If a plugin or feed tool still uses the Content API for Shopping, check its move to the Merchant API now. Google's [sunset notice](https://developers.google.com/shopping-content/guides/deprecation-and-sunset), checked 24 October 2026, sets these dates:

| Date | Content API for Shopping |
|---|---|
| 18 August 2026 | Sunset; the Merchant API is its successor |
| 1 September 2026 | Requests without an extension start failing intermittently |
| Early 2027 | Full shutdown; every request fails |

### How does Shopify or WooCommerce product data reach Google Merchant Center?

Shopify and WooCommerce product data reaches Google Merchant Center through an official app that syncs each product change automatically, so neither store needs a feed file. Shopify Help, Merchant Center Help and WooCommerce.com, checked 25 October 2026:

| | Shopify | WooCommerce |
|---|---|---|
| App | Google & YouTube, managed by Google | Google for WooCommerce, by Woo |
| Before you connect | Merchant Center admin's Google email, a store without a password, refund policy and terms | A WordPress.com account |
| Merchant Center account | Standalone; no Multi-Client Account | Standalone; no Multi-Client Account |

Once connected, each app keeps the products in step:

| | Shopify | WooCommerce |
|---|---|---|
| What syncs | Products available to the online store | Simple and variable products; no services or digital products |
| When it syncs | When product information changes | On create or update, plus a daily re-sync before products expire |
| Identifiers | GTIN, or MPN and brand without one | GTIN, MPN and brand from global attributes |
| Fix values in | The Shopify product page or bulk editor | The WooCommerce product and its Google for WooCommerce tab |

When price, availability or a [GTIN](https://www.productmetrics.io/glossary/gtin "A GTIN (Global Trade Item Number) is a unique number that identifies a product that can be priced, ordered or invoiced, usually shown as a barcode.") disagrees with the page, fix it in the store: both apps send what the product record holds.

On Shopify, a product marked Under review has changes that haven't synced yet, so wait before editing it again. On WooCommerce, a GTIN set on the product's own tab overrides the global attribute rules.

Version 3.8.1 of Google for WooCommerce moved the extension to the Merchant API. Update anything older before the Content API shuts down.

Product Metrics doesn't replace these apps. It connects to the store for orders and to your Google account, reads Google Ads and Merchant Center data, and adds each product's segment as a custom label once you approve it.

> **Keep your feed app, add the segments** It works with Shopify, WooCommerce, Magento, Lightspeed and Shopware 6, while your feed app keeps sending the products. [See how Product Metrics connects to your store](https://www.productmetrics.io/platforms)

## Which attributes does a Google product feed need?

Every product needs seven attributes: `id`, `title`, `description`, `link`, `image_link`, `availability` and `price`. Google's product data specification adds these limits and conditions:

| Attribute | Required for | Rule |
|---|---|---|
| `id` | All products | Max 50 characters; use the SKU |
| `title` | All products | Max 150 characters |
| `description` | All products | Max 5,000 characters |
| `price`, `availability` | All products | Match the landing page |
| `brand` | New products, except films, books and music | Max 70 characters |
| `gtin` or `mpn` | [GTIN](https://www.productmetrics.io/glossary/gtin "A GTIN (Global Trade Item Number) is a unique number that identifies a product that can be priced, ordered or invoiced, usually shown as a barcode.") strongly recommended; [MPN](https://www.productmetrics.io/glossary/mpn "An MPN (manufacturer part number) is the code a manufacturer assigns to identify one product among all the products it makes.") without a GTIN | GTIN up to 14 digits |
| `item_group_id` | Variants in Brazil, France, Germany, Japan, the UK and the US | Use the parent SKU |

Optional attributes such as colour, size, material and a specific [Google product category](https://www.productmetrics.io/blog/google-shopping-category) widen the searches a product can match.

### Why must the `id` never change?

The `id` must never change because it is the product's identity in Merchant Center and Google Ads. Google's [product data specification](https://support.google.com/merchants/answer/7052112?hl=en) asks you to use the SKU, keep the ID on every update and reuse it across countries and languages.

A changed ID doesn't rename a product. It creates a new one with no history, and every label or rule keyed on the old ID stops matching.

![Diagram of one product in a Google product feed before and after its id changes from the SKU 48213 to a title-based ID: the old ID holds 1,240 clicks and 37 conversions over 90 days, the new ID starts at zero and its supplemental label no longer matches. Illustrative data](https://www.productmetrics.io/images/blog/google-product-feeds/google-product-feed-id-change-history.png)

_Illustrative data: a new ID is a new product to Google, so the history and the label stay behind on the old one._

Each variant gets its own `id`, and `item_group_id` ties variants to their parent. Never build an ID from the title, price or stock, because those fields are meant to change:

| Keep stable | Change when the product changes |
|---|---|
| `id` (the variant's SKU) | `price`, `sale_price` |
| `item_group_id` (the parent SKU) | `availability` |
| `gtin`, `brand`, `mpn` | `title`, `description`, images |
| Feed label of the data source | `custom_label_0` to `custom_label_4` |

Migrating platforms? Keep the old IDs, or map each one to its new record before the switch.

## How often should a Google product feed update?

A Google product feed should send the full file at least daily and push price and stock changes as they happen. Google's limits on 24 October 2026:

| Rule | Value | Source |
|---|---|---|
| Product expiry without a refresh | 30 days after the last refresh | [`expiration_date` specification](https://support.google.com/merchants/answer/6324499?hl=en) |
| Default fetch of a file at a URL | Every 24 hours, adjustable | Google Ads Help |
| New products pending data quality checks | Up to 72 hours | [Google for Developers, "Create a feed"](https://developers.google.com/google-ads/shopping/feed-management/articles/t6) |
| Maximum file size | 4 GB | Google Ads Help |

Thirty days is the cliff, not the schedule: a price that changed this morning stays wrong in Shopping until the next update.

A new product that hasn't served within those 72 hours isn't a broken feed: its checks are still running.

**Keep a Google product feed in sync in three layers**

1. **Scheduled full refresh.** Send the complete file at least daily. It adds new products, removes ones that left the file and repairs anything an update missed.
2. **Updates for price and stock.** Push price and availability through the Merchant API or your platform connection when they change, instead of waiting for the next file.
3. **Structured data on the landing page.** Mark up the product in the page HTML so Google can check the feed against what the shopper sees, and correct it where they differ.

The third layer has an exact requirement. Google's [structured data guide](https://support.google.com/merchants/answer/7331077?hl=en) requires `price`, `priceCurrency`, `availability` and `condition` for automatic item updates, which correct a feed value from your page.

Google adds that these automations don't replace regular updates. The [PIM-to-Merchant Center workflow](https://www.productmetrics.io/blog/pim-to-google-merchant-center) keeps all three layers on one record, with one owner per field.

## How do you diagnose a Google product feed problem?

Diagnose a feed problem by separating status from performance. A product that never served has a data problem; one that served and disappointed has a commercial one. The Google Ads API keeps them apart in its [Shopping reporting resources](https://developers.google.com/google-ads/api/docs/shopping-ads/reporting):

| Report | What it shows | Use it for |
|---|---|---|
| `shopping_product` | Current state of every product, served or not | What blocks serving |
| `shopping_performance_view` | History of products that served ads | Clicks, cost and conversions |
| `product_group_view` | Statistics per Shopping product group | Standard Shopping structure |
| `asset_group_product_group_view` | Products in Performance Max listing groups | Performance Max structure |

Then group symptoms by cause, not by Merchant Center's order: one wrong export rule can fill hundreds of rows.

| Symptom | Likely cause | First check |
|---|---|---|
| Price or availability mismatch | Feed behind or ahead of the page | The page's structured data |
| Image disapproved | Placeholder, overlay or broken URL | A crawlable product photo |
| Missing GTIN warning | GTIN missing or copied from the parent | Each variant's own GTIN |
| Approved, almost no impressions | Vague title or broad category | Title and category |
| Clicks but no sales | Price position, page or journey | What shoppers buy instead |

The first three are data errors. The [Merchant Center errors guide](https://www.productmetrics.io/blog/google-merchant-center-errors) lists each by Google's issue name and traces it to the first wrong value.

The last two aren't errors at all, so no diagnostics screen will flag them.

## Does an approved product deserve ad budget?

No, an approved product doesn't automatically deserve ad budget: approval means Google accepted the product's data, not that paid clicks on it will pay back. Google's guide to [correcting an existing feed](https://developers.google.com/google-ads/shopping/full-automation/articles/t7) stops once items are accepted.

A hard risk stops the product serving, and Merchant Center flags it. A soft risk lets the product serve while it loses money:

| Signal | Risk | Product serves? | Flagged? |
|---|---|---|---|
| Mismatched price | Hard | No | Yes |
| Placeholder image | Hard | No | Yes |
| Thin margin | Soft | Yes | No |
| Few units in stock | Soft | Yes | No |
| Price above comparable offers | Soft | Yes | No |
| High return rate | Soft | Yes | No |

Give every approved product one of four actions:

1. **Fix now:** disapproved, or approved with a mismatch that wastes the next click.
2. **Promote:** in stock, a margin that clears its [break-even ROAS](https://www.productmetrics.io/break-even-roas-calculator), a competitive price and a page that converts. Increase its priority.
3. **Delay:** too few units to fulfil more orders, or too little data to judge. Hold its priority.
4. **Free listing only:** sells without ads, or returns eat the profit. Lower its priority or exclude it from Shopping ads.

![Decision diagram for an approved product in a Google product feed: four actions, fix now, promote, delay and free listing only, each with the condition that triggers it and what to change](https://www.productmetrics.io/images/blog/google-product-feeds/google-product-feed-eligible-vs-profitable.png)

_Approval puts a product on the start line. Margin, stock, price and the page decide its action._

The fourth action is where feeds get damaged: deleting a product also removes its free listings. The same specification offers gentler switches:

| Method | Shopping ads | Free listings | Use it for |
|---|---|---|---|
| Delete from the feed | Off | Off | Products you no longer sell |
| `excluded_destination`: `Shopping_ads` | Off | On | Exclusions over 14 days |
| `pause`: `ads` | Off | On | Breaks of up to 14 days |
| Custom label excluded in a campaign | Off in that campaign | On | One campaign's decision |

The [Performance Max exclusion guide](https://www.productmetrics.io/blog/performance-max-for-ecommerce) compares these switches inside Performance Max.

By hand, this works for a short product list. Across thousands of products, each action needs recalculating as clicks, margin and stock move, then writing back as a label campaigns can read.

That is what [Product Segmentation](https://www.productmetrics.io/product-segmentation) does.

Product Metrics segments every product into six segments on advertising clicks and ROAS or POAS against your target. It writes each segment to a custom label in Merchant Center, and only the labels you approve go out.

With the GA4 BigQuery export connected, Product Journeys shows whether a click bought that product or another one. Competitor Prices and Inventory Insights add the price position and stock cover behind the promote and delay calls.

> **Get more revenue out of Google Shopping.** Every product segmented and labelled in Merchant Center, so your top performers get more priority. [Analyse your products for free](https://app.productmetrics.io/) Log in with Google, no credit card.

## Which tool fixes which feed failure?

Pick the tool by the failure you have: data tools fix what Google receives, and a decision layer fixes which products get priority.

| Failure | Layer | Typical fix |
|---|---|---|
| Disapprovals on a short product list | Data | Merchant Center by hand |
| Wrong values at the source | Data | The PIM, ERP or shop record |
| Formatting across many products and channels | Data | A feed platform or attribute rules |
| Approved products that miss their target | Decision | Segments written to custom labels |

Merchant Center by hand works while one person can read every issue, but it never shows margin.

Feed rules stay as current as the condition someone wrote: a `custom_label_2` of "high margin" still says so after returns have erased the margin.

For the data layer, start with the [12 feed fixes ranked by profit](https://www.productmetrics.io/google-shopping-feed/optimization).

## Final thoughts

Every row in a Google product feed promises the same product, under the same ID, at the price on the page. Approval checks that promise. It doesn't tell you which products to back.

This week, pull `shopping_product` for the products that never served and fix those. Then decide which of the approved ones deserve paid clicks before you touch a target.

For the business case behind Merchant Center work, [3228 Digital explains why Google Merchant Centre matters for ecommerce in 2026](https://www.3228digital.co.uk/why-google-merchant-centre-is-essential-for-ecommerce-businesses-in-2026/).

If you also run Search campaigns next to Shopping, landing-page experience is one of three Quality Score signals there. [This Google Ads Quality Score guide](https://excellorix.com/google-ads-quality-score/) covers how to improve it.

When you map a PIM or shop system into Merchant Center, [RUIT's documentation on product attributes](https://ruit.es/en/docs/product-attributes/) is a compact reference for what product and custom attributes are for.

## Frequently asked questions

### Is a Google product feed the same as a Google Shopping feed?

Yes, a Google product feed and a Google Shopping feed are the same thing: merchants and tools use both names, and Merchant Center Help now calls it a product data source. The old word survives in settings such as the feed label.

### What is the difference between a primary and a supplemental feed?

A primary data source adds and removes products. A supplemental data source only adds or overwrites attributes, such as custom labels, on products a primary source already holds, and it links to that source through a matching feed label.

### Which file formats does a Google product feed accept?

Text (.txt), XML (.xml) and tab-separated (.tsv) files of up to 4 GB, according to Google Ads Help on 24 October 2026. You can upload the file directly, host it at a URL Google fetches, or send it over SFTP.

## Keep reading.

- [Google Merchant Center errors: common issues and fixes](https://www.productmetrics.io/blog/google-merchant-center-errors)
- [Google product category: how to choose and map it](https://www.productmetrics.io/blog/google-shopping-category)
- [How Google Shopping ads work, from feed to sale](https://www.productmetrics.io/blog/how-google-shopping-ads-work)

---

Written by Berend Vrakking, founder of Product Metrics. Last updated 2026-10-25.

HTML version: https://www.productmetrics.io/blog/google-product-feeds
