Every product you see in Google's shopping results starts as a line of data. A Google Shopping feed is that data: a structured list of your products with the attributes Google needs to understand, match and display them. In the current Merchant Center, Google calls a feed a product data source, but the idea has not changed. If the feed is wrong, incomplete or out of date, your products either do not show or show for the wrong searches.
This guide explains what goes into a feed, the formats Google accepts, how primary and supplemental data sources work together, and the different ways to get product data into Merchant Center in 2026.
What a Google Shopping feed is
Think of the feed as a spreadsheet. Each row is one product (or one variant, since every size and color is its own item). Each column is an attribute defined in Google's product data specification, such as title, price or gtin. Merchant Center reads the feed, checks it against the specification and its policies, and uses it for free listings, Shopping ads and other marketing methods.
The feed does two jobs. It tells Google the facts about each product (what it is, what it costs, whether it is in stock). And it gives Google the text and identifiers it uses to decide which searches the product is relevant for. The first job gets you approved. The second decides how often you show up, which is what feed optimization is about.
Required and important attributes
Some attributes are required for every product, some are required only in certain cases, and some are optional but affect performance. These are the ones to get right first:
| Attribute | Required? | Rules and notes |
|---|---|---|
id | Yes | Unique per item, max 50 characters. Use your SKU and never reuse or change it. |
title | Yes | Max 150 characters. Must describe the product and match the landing page. |
description | Yes | Max 5,000 characters. Product facts, not promotional text. |
link | Yes | Landing page URL on your verified domain. |
image_link | Yes | Main image URL. Google has announced a 500 x 500 pixel minimum for all images from January 31, 2027. |
availability | Yes | in_stock, out_of_stock, preorder or backorder. |
price | Yes | Number plus ISO 4217 currency code, for example 24.99 USD. |
brand | For new products (except movies, books, music) | Max 70 characters. |
gtin | Strongly recommended when the product has one | UPC, EAN, JAN, ISBN or ITF-14. Must be a valid GS1 number. |
mpn | If the product has no GTIN | Manufacturer part number, max 70 characters. |
condition | If used or refurbished | new, refurbished or used. |
item_group_id | For variants | Same value for all variants of one product. |
color, size, gender, age_group | For apparel in many countries | Needed to show variants correctly. |
shipping | If not set in account settings | Most stores set shipping in Merchant Center instead. |
Identifiers cause the most confusion. If a product has a manufacturer barcode, send it as the gtin. You can check barcodes you already have with our GTIN lookup tool. If the product is custom, handmade or otherwise has no GTIN, do not make one up. Send brand and MPN if you have them, or leave identifiers out. Our guide to missing GTIN warnings covers the edge cases.
Feed file formats
If you submit a file, Merchant Center accepts:
- Delimited text:
.txtor.tsv, tab-separated, with attribute names in the first row. - XML:
.xmlin RSS 2.0 or Atom 1.0 format, using Google'sg:namespace for attributes. - Compressed files:
.gz,.zipor.bz2containing a supported text or XML file.
A single file can be up to 4 GB. Save it in UTF-8 or UTF-16 encoding to avoid broken characters. HTML, PDF, Word documents and unformatted spreadsheets are rejected.
Here is what the first rows of a simple tab-delimited feed look like, shown as a table:
| id | title | link | image_link | price | availability | brand | gtin |
|---|---|---|---|---|---|---|---|
| TS-100-BLK-M | Northline Men's Organic Cotton T-Shirt, Black, Medium | https://example.com/products/tee?variant=1 | https://example.com/img/tee-black.jpg | 24.99 USD | in_stock | Northline | 012345678905 |
| TS-100-BLK-L | Northline Men's Organic Cotton T-Shirt, Black, Large | https://example.com/products/tee?variant=2 | https://example.com/img/tee-black.jpg | 24.99 USD | out_of_stock | Northline | 012345678912 |
The brand, URLs and barcodes above are illustrative. A real feed would also include description, item_group_id, color, size, gender and age_group for these shirts.
Ways to get product data into Merchant Center
Go to Settings > Data sources to see and add sources. The options, roughly from easiest to most technical:
| Method | Best for | Updates |
|---|---|---|
| E-commerce platform integration (Shopify, WooCommerce, BigCommerce and others) | Most small and mid-size stores | Automatic sync |
| Automatically from your website | Stores with good schema.org Product markup | Google crawls your pages |
| Google Sheets | Small catalogs managed by hand | Changes in the sheet flow to Merchant Center |
| File upload (one-time, or hosted URL fetched on a schedule) | Catalogs exported from an ERP or feed tool | Scheduled fetch, for example daily |
| SFTP or Google Cloud Storage | Large files and automated exports | Whenever you upload |
| Merchant API | Large catalogs, frequent price and stock changes | Near real time |
Note the API change. Google shut down the Content API for Shopping on August 18, 2026. The Merchant API replaced it. If you use a custom script or an older feed app that pushed data through the Content API, confirm it has migrated. File uploads, scheduled fetches and Google Sheets were not affected.
Shopify stores usually use the Google & YouTube app, which is a platform integration. We cover that route in the Google Shopping feed for Shopify guide.
Note: Use one source per product. If the same product ID, language and feed label arrives from two data sources, Google now returns a "Product ID already used" error instead of quietly picking one.
Primary vs supplemental data sources
A primary data source creates products. It must contain every required attribute and it defines which items exist in your account. When a product disappears from the primary source, it disappears from Merchant Center.
A supplemental data source adds to or overrides attributes of products that already exist in a primary source. It matches rows by id and cannot create new products on its own. You create one in Settings > Data sources, using a file, a Google Sheet or the API, and link it to the primary source it should update.
Supplemental sources are useful when you cannot easily change the primary feed. Common uses:
- Adding
custom_label_0tocustom_label_4values for ad campaign structure, such as margin tier or best seller. - Adding missing GTINs or MPNs from a supplier spreadsheet.
- Overriding
google_product_categoryfor items Google categorized wrongly. - Rewriting titles for Google only while keeping store titles unchanged.
- Excluding certain products from Shopping ads with
excluded_destination.
Keep supplemental sources updated. If the primary data refreshes and the supplemental file goes stale, you can end up with old values overriding correct ones.
How to build a Google Shopping feed step by step
- Decide the source. If your platform has an official Google integration, start there. Build a file or sheet only if you do not have that option or need more control.
- List every sellable variant. One row per size and color, each with a unique, permanent
id. - Fill the required attributes from the table above: id, title, description, link, image_link, availability, price, plus brand for new products.
- Add identifiers. Real GTINs where they exist, brand and MPN where they do not.
- Add category and variant attributes:
item_group_id, color, size, gender and age_group for apparel, and your ownproduct_typepath. - Check prices and stock against the website. The landing page price must match the feed, in the same currency.
- Create the data source. In Settings > Data sources, add a product source, choose countries, language and marketing methods, then upload or connect your data.
- Set a schedule. For hosted files, set a fetch time that runs after your nightly export. Google expires items that are not updated for 30 days.
- Review issues. Open the Needs attention tab after processing and fix problems in the source data, not by hand in Merchant Center.
Attribute rules: fixing data inside Merchant Center
If you cannot change your source data, attribute rules (called feed rules in the old interface) let you transform values after upload. Turn on the Advanced data source management add-on under Settings > Add-ons, then open a data source to add rules. Rules can set a value, extract part of another attribute, append or prepend text, find and replace, and apply conditions so a rule only affects certain products. Rules run in order, so test them on a few items before applying.
Rules are handy for small fixes, such as appending the brand to titles or mapping your internal category names to product_type. They are not a replacement for fixing the product data at the store. When a store has many products with missing brands, thin descriptions or no identifiers, the AM Jarvis GMC Scanner and Fixer can find those gaps on a connected Shopify or WooCommerce store and push fixes back to the store, so every feed built from it improves at once.
Common feed errors and what they mean
When Merchant Center processes a data source, problems land on the Needs attention tab. Some block a product entirely, others only limit its reach. These are the ones new feeds hit most often:
| Issue | What it usually means | Where to fix it |
|---|---|---|
| Missing value [required attribute] | A column is empty or misnamed, often a typo in the header row | Source file or platform product data |
| Mismatched value (page crawl) [price] or [availability] | The landing page shows a different price or stock status than the feed | Update the feed more often, or fix the product page |
| Invalid or incorrect GTIN | Wrong check digit, restricted prefix, or a barcode that belongs to another product | Replace with the real manufacturer barcode or remove it |
| Image too small or promotional overlay | Low-resolution supplier image, or text, badges or watermarks on the image | Replace the main image |
| Missing shipping costs | No shipping setting covers the target country | Shipping and returns in Merchant Center |
| Processing failed or invalid encoding | File saved in the wrong encoding or format | Re-export as UTF-8 tab-delimited or XML |
Fix issues at the source whenever you can. Edits made directly to a product in Merchant Center can be overwritten by the next upload, and the same problem will come back on every product added later. After fixing, either wait for the next scheduled fetch or trigger a manual fetch for the data source, then check that the issue count drops.
A single header typo can break thousands of products at once, so when a large number of items fail the same way on the same day, look at the file structure before looking at individual products.
Keeping the feed accurate after launch
Most feed problems appear after launch, not during setup. Prices change, items sell out, a theme update breaks structured data, or an app adds fees at checkout. A few habits keep the feed healthy:
- Update price and availability at least daily, more often if stock moves fast.
- Leave automatic item updates on. Google enables them by default and uses your structured data to correct price, sale price, availability and condition when they drift. Google says these are a safety net, not a substitute for regular updates.
- Check the Needs attention tab weekly and after any catalog import.
- Re-check a handful of products by hand each month, comparing Merchant Center with the live product page.
