# Google Shopping

Google Shopping is the surface where Google displays product listings from a merchant's catalogue, fed by a product feed uploaded to Google Merchant Center. Google's product data specification is the most detailed of the major channels, and the one whose attribute names the other channels tend to borrow.

- **Canonical URL:** https://www.feedlab.io/knowledge/channels/google-shopping
- **Last reviewed:** 16 September 2026
- **Source:** feedlab knowledge base
- **Licence:** free to quote and cite with attribution to feedlab






## Feed specification

| Property | Value |
| --- | --- |
| Destination | Google Merchant Center |
| Refresh | A scheduled fetch can run daily, weekly or monthly, and Merchant Center re-fetches the feed URL on that schedule. Product data must not be older than 30 days or items expire, so a feed that stops regenerating will silently empty out. |


### Accepted formats

- `Text (CSV/TSV)`
- `XML (RSS 2.0)`
- `XML (Atom 1.0)`
- `Content API for Shopping`



## What catches Shopify merchants out

### Shopify variants are separate products to Google

Each Shopify variant becomes its own row with its own id, and all variants of one product share an item_group_id. Submitting one row per product instead of per variant loses every size and colour a shopper could filter on.

### Google crawls your landing page and compares it to the feed

Price and availability in the feed are checked against the structured data and visible content on the product page. A feed that is correct but stale gets disapproved for mismatching, which is why regeneration cadence matters as much as mapping.

### Shopify descriptions carry HTML that Google does not want

The body_html field is rich text. Submitted as-is it brings markup into the description attribute, which Google rejects or truncates awkwardly. The description needs the HTML stripped and entities decoded first.

### Barcodes live on the variant, not the product

Shopify stores the barcode on each variant, and it is frequently blank because it is optional in the admin. An empty barcode is the single most common reason a Shopify catalogue fails GTIN validation.








## Frequently asked questions

### What attributes are required for a Google Shopping feed?

Every item needs id, title, description, link, image_link, availability and price. Beyond that, brand and a product identifier (gtin or mpn) are required for most products, condition is required when an item is not new, and item_group_id is required for variants.

### How often does Google Merchant Center fetch a scheduled feed?

You choose daily, weekly or monthly when you set up the scheduled fetch, and Google pulls the URL on that cadence. Because product data expires after 30 days, a daily fetch is the safe default for any catalogue where price or stock moves.

### Can I submit a Shopify feed without GTINs?

Yes, but only for products that genuinely have no manufacturer-assigned GTIN, such as custom or handmade goods. In that case you supply brand and mpn instead, or set identifier_exists to no. Omitting GTINs on branded retail products that do have them causes disapprovals.




## Primary sources

- [Google: Product data specification](https://support.google.com/merchants/answer/7052112)
- [Google: Upload a feed to Merchant Center](https://support.google.com/merchants/answer/188477)



