
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.

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.
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.
Setup
Live in five steps
From a bare Shopify store to a listed offer: the whole setup fits into one coffee break.
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.
Install Feedflock
Add Feedflock from the Shopify App Store. It reads your products, variants, stock and shipping rates directly through the Shopify API.
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.
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.
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
<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>

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
How the Google feed works
- Merchant Center fetches the file from a
URL, every 24 hours by default, on a schedule you can change RSS2.0 with Google's g: namespace, one item per variant;TSVis 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.
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
VATeverywhere 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.
Variants, GTINs and the taxonomy
- Variants share g:item_group_id and must be told apart in the title itself
- A
GTINneeds a valid check digit: a wrong one disapproves, a missing one only limits reach - An internal
SKUis not anMPN, 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.
Why Google disapproves products
- A price or availability that differs from the product page is the classic disapproval
- An incorrect
GTINdisapproves; 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.
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
Get on every marketplace that matters this afternoon.
Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.