Skip to content
Google Shopping
Ad platforms

Google Shopping feed for Shopify

Google Shopping turns product searches into listings with a photo, a price and your store name, as free listings and as paid Shopping ads. Google checks every offer against your product page, so the feed has to match the shop exactly. Feedflock turns your Shopify catalog into a Merchant Center feed that does, and regenerates it every hour.

01 · ShopifyProduct in the catalog
Linen shirt SandNordlin · Men's shirtsSKU-2048 · S–XL
Price
1 290 Kč
In stock
0 pcs
When out of stock
02 · google-shopping.xmlUpdated just now
<item>
<g:id>46012345678901</g:id>
<g:item_group_id>8812345678901</g:item_group_id>
<g:title>Linen shirt Sand M</g:title>
<g:description>Breathable linen shirt with a relaxed regular fit.</g:description>
<g:link>https://shop.example/products/linen-shirt-sand</g:link>
<g:image_link>https://cdn.shop.example/img/linen-shirt-sand.jpg</g:image_link>
<g:availability>out_of_stock</g:availability>
<g:condition>new</g:condition>
<g:price>1290.00 CZK</g:price>
<g:brand>Nordlin</g:brand>
<g:google_product_category>212</g:google_product_category>
<g:identifier_exists>yes</g:identifier_exists>
</item>
Category mapping

Your product types. The channel's categories.

The channel files offers under its own category tree. Feedflock suggests a category for each Shopify product type and you just confirm. One mapping covers every product of that type, including products you add later.

Full category path in the feed
One mapping per product type
Override per individual product
Shopify typeproducts
Channel category
Men's shirts
Catalog coverage79 %
Feed health

Catch feed issues before Google Shopping does.

Before every generation Feedflock checks that every field the channel requires is filled, and, on templates verified against the channel's own spec, that the values fit its rules. Most problems are fixed with one click, without editing products in Shopify.

Feed quality · google-shopping.xml
76 / 100
To review: 4
GTIN with the wrong length on 8 productsShopify's barcode field is free text. Google takes 8, 12, 13 or 14 digits, and an incorrect GTIN gets the product disapproved. Empty is better than wrong.
Empty g:brand on 6 productsThe Shopify vendor is blank. Google requires a brand for branded goods: your own store name if you make them yourself.
g:condition “nové” on 5 productsGoogle accepts only new, refurbished or used, in English. Anything else is an invalid value.
Titles over 150 characters on 4 productsGoogle truncates them, and the variant name at the end, which Google requires, is the part that gets cut.

Setup

Live in five steps

From a bare Shopify store to a listed offer: the whole setup fits into one coffee break.

  1. Open a Merchant Center account

    Create a Google Merchant Center account, verify and claim your store's domain, and set up shipping: for Czechia and Slovakia a shipping cost is mandatory, in the feed or in the account. Listing products is free; paid Shopping ads run from Google Ads.

  2. Install Feedflock

    Add Feedflock from the Shopify App Store. It reads your products, variants, stock and shipping rates directly through the Shopify API.

  3. Pick the Google Merchant Center template

    Create a new feed and choose Google Merchant Center. Every required attribute is mapped already: g:id, g:title, g:description, g:link, g:image_link, g:price, g:availability, g:brand and g:condition. Variants are grouped by g:item_group_id.

  4. Map your categories

    Products with a Shopify product category land in Google's taxonomy automatically through Shopify's official crosswalk. Map the rest by product type, tag or collection; the coverage check lists anything left unmapped.

  5. Add the feed URL in Merchant Center

    Add a product data source from a file and paste the hosted feed URL. Google fetches it every 24 hours by default and you can change the schedule; Feedflock regenerates the file every hour.

    https://feedflock.appfleece.com/f/demo-google-shopping/google-shopping.xml

The feed

What the channel receives

google-shopping.xml
<item>
  <g:id>46012345678901</g:id>
  <g:item_group_id>8812345678901</g:item_group_id>
  <g:title>Linen shirt Sand M</g:title>
  <g:description>Breathable linen shirt with a relaxed regular fit.</g:description>
  <g:link>https://shop.example/products/linen-shirt-sand</g:link>
  <g:image_link>https://cdn.shop.example/img/linen-shirt-sand.jpg</g:image_link>
  <g:availability>in_stock</g:availability>
  <g:condition>new</g:condition>
  <g:price>1290.00 CZK</g:price>
  <g:brand>Nordlin</g:brand>
  <g:google_product_category>212</g:google_product_category>
  <g:identifier_exists>yes</g:identifier_exists>
</item>
Live preview
Linen shirt Sand

Nordlin

Linen shirt Sand

1 290 Kč

Feed fields

g:id

46012345678901

g:item_group_id

8812345678901

g:title

Linen shirt Sand M

g:description

Breathable linen shirt with a relaxed regular fit.

g:link

https://shop.example/products/linen-shirt-sand

g:availability

in_stock

g:condition

new

g:price

1290.00 CZK

g:brand

Nordlin

g:google_product_category

212

g:identifier_exists

yes

The channel

One feed, every Google surface

The same product data powers Shopping ads, Performance Max, free listings on the Shopping tab, dynamic remarketing and YouTube Shopping. Get the feed right once and every placement benefits.

Free listings cost nothing

Products appear on Google without paying for the click. The bar is a little higher than for ads: every variant needs g:item_group_id, and apparel needs colour, size, gender and age group in every country.

No catalog to pair with

Google doesn't match your offer to a product database; it checks it against your own product page. Own-brand and handmade goods list just as well as branded ones, as long as price and availability on the page match the feed.

The feed

  • The Google Merchant Center template fills every required attribute out of the box: g:id, g:title, g:description, g:link, g:image_link, g:price, g:availability, g:brand and g:condition
  • Titles tell variants apart by default: product title plus variant title, as Google's minimum requirements ask
  • Compare-at prices handled: the regular price goes to g:price, the discounted one to g:sale_price
  • Variants grouped by g:item_group_id from the Shopify product ID, required for free listings in every country
  • Products with a Shopify category map to Google's taxonomy through Shopify's official crosswalk, with the tree available in Czech, Slovak and twelve other languages
  • Shipping from your Shopify rates: each product gets its g:shipping price, and a shared free-shipping threshold goes out as g:free_shipping_threshold
  • Every generation is checked against Google's spec: titles over 150 characters, invalid availability or condition values, malformed prices and GTINs of the wrong length are flagged before Google sees them
  • Fetch tracking shows when Google last downloaded the feed and alerts you if it stops

Deep dive

01

How the Google feed works

  • Merchant Center fetches the file from a URL, every 24 hours by default, on a schedule you can change
  • RSS 2.0 with Google's g: namespace, one item per variant; TSV is one switch away
  • Products expire 30 days after their last refresh. A scheduled fetch keeps them alive
  • Feedflock regenerates the file every hour on a stable URL
Technical details

In Merchant Center the feed is a product data source: a file Google fetches from a URL every 24 hours by default, on a schedule you can change. The document is RSS 2.0 with Google's g: namespace (an attribute without the g: prefix is ignored) and every variant of every product is its own item. If you prefer Google's tab-separated format, the same template writes TSV instead.

Feedflock hosts the file on a stable URL and regenerates it every hour, so every fetch reads current prices and stock. Products not refreshed for 30 days expire from Merchant Center; a scheduled fetch of a live feed never lets that happen.

02

The attributes Google requires

  • g:id, g:title, g:description, g:link, g:image_link, g:price, g:availability and g:brand for branded goods
  • Availability takes only in_stock, out_of_stock, preorder and backorder. Sold-out products stay in the feed
  • Prices include VAT everywhere except the US and Canada, in the target country's currency
  • Czechia and Slovakia require a shipping cost, in the feed or in the account
Technical details

Every item needs g:id, g:title, g:description, g:link, g:image_link, g:price and g:availability, and branded goods need g:brand. g:condition is required only for used or refurbished goods; the template sends new by default. Availability takes only in_stock, out_of_stock, preorder and backorder, and unlike Heureka, Google wants sold-out products kept in the feed as out_of_stock: an offer deleted and added back takes a long time to return.

The price must match the product page in the target country's currency, VAT included everywhere except the US and Canada. Google never adds tax for you. With Shopify Markets the feed takes the market's prices and currency. Shipping cost is mandatory in about thirty countries, Czechia and Slovakia among them; Feedflock can send it per product from your Shopify rates, or you set it in Merchant Center. A price in the feed overrides the account settings for that product.

03

Variants, GTINs and the taxonomy

  • Variants share g:item_group_id and must be told apart in the title itself
  • A GTIN needs a valid check digit: a wrong one disapproves, a missing one only limits reach
  • An internal SKU is not an MPN, so the template leaves g:mpn empty unless you map one
  • g:google_product_category takes one value: the numeric ID (recommended) or the full path
Technical details

Variants of one product share a g:item_group_id, required for variants in Brazil, France, Germany, Japan, the UK and the US, and for free listings everywhere. Telling variants apart in the title is one of Google's minimum requirements, so the default title is the product name plus the variant name. Shopify's barcode field is free text; Google accepts 8, 12, 13 or 14 digits with a valid GS1 check digit, and an incorrect GTIN disapproves the product while a missing one only limits its reach. Google also asks you not to send internal SKUs as an MPN, so the template doesn't.

g:google_product_category takes one value from Google's taxonomy: the numeric ID, which Google recommends, or the full path in the feed's language. A value off the list is dropped with a warning. g:product_type carries your own categorisation. Feedflock keeps Google's tree in fourteen languages and maps products with a Shopify category through Shopify's official crosswalk, so rules are needed only for the rest.

04

Why Google disapproves products

  • A price or availability that differs from the product page is the classic disapproval
  • An incorrect GTIN disapproves; an off-list category is dropped; a long title is truncated
  • Images must be at least 500 × 500 px, enforced from 31 January 2027
  • Merchant Center Diagnostics is the final word; Feedflock catches the mechanical half first
Technical details

Google fails a feed in three different ways, and it helps to know which is which. A price or availability that differs from the product page, or an incorrect GTIN, disapproves the product. A category that isn't in Google's taxonomy is dropped with a warning. A title over 150 characters is truncated. Images have to be at least 500 × 500 px, enforced from 31 January 2027; a new image behind an unchanged URL can take weeks to be noticed, which is why Shopify's CDN changes the URL when you replace a photo.

Merchant Center Diagnostics stays the final word on landing-page matches. Everything mechanical Feedflock catches first: every generation checks lengths, enum values, price format and GTIN length against Google's spec, and lists empty required attributes, so the first fetch Google sees is already clean.

The takeaway

One URL, an hourly refresh and a template that already follows Google's spec, attribute by attribute. Your Shopify catalog stays the single source of truth, and Google always sees it as it is.

Claude · ChatGPT

Or set up your Google Shopping feed in chat

Connect Feedflock to Claude or ChatGPT and ask. It creates the feed as a draft, maps your categories to Google Shopping's own tree and tells you what is still missing. You approve every change.

feedflock · mcp

Create a Google Shopping feed for my store and map my categories.

I'll create it as a draft and show you each change before I make it.

FAQ

Merchant Center and free listings cost nothing. Shopping ads are pay-per-click, run from Google Ads with a budget you set yourself.
Merchant Center fetches the feed every 24 hours by default, and you can change the schedule. Feedflock regenerates the file every hour, so each fetch picks up current prices and stock. Products not refreshed for 30 days expire.
They are strongly recommended: a missing GTIN limits reach and an incorrect one disapproves the product. For products that genuinely have none (custom-made or vintage goods), send identifier_exists = no. Feedflock derives it for you: yes when a variant has a barcode or the product a vendor, no only with neither.
Each variant is its own item with a unique g:id, grouped with its siblings by a shared g:item_group_id. The title must tell variants apart, so the default title carries the variant name, size or colour.
Only with care: connecting Shopify's channel overwrites an existing product feed, and in Merchant Center the source that updated a product last owns it. Pick one source per product. A product's history in Google is tied to its g:id; Feedflock's default ID is the Shopify variant ID.
Create a feed per target country. With Shopify Markets each feed takes the market's prices and currency; keep the same g:id for a product across all your Google feeds, because supplemental sources and history join on it.
Yes, filter by collection, tag, vendor, price or stock level, or leave out individual variants. Don't use it to hide temporarily sold-out products, though: Google wants those in the feed as out_of_stock.

Get on every marketplace that matters this afternoon.

Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.

.myshopify.com