Google Merchant Center feed
Plans: Starter ✗ · Growth ✓ · Pro ✓ · Agency ✓
Google Shopping — and the AI shopping surfaces built on top of it — read your product feed, not your storefront's HTML. If your feed carries the description your platform generated years ago, that is what Google has, however good the copy on your product page is.
Clione publishes its enriched copy as a supplemental feed: a second file
Merchant Center reads alongside the feed you already send, matched to it row by
row on the product id.
What it does and does not touch
A supplemental feed can only add or override the columns it contains. Clione's contains:
| Column | Where it comes from |
|---|---|
title, structured_title | the product title in Clione's canonical form (brand, title, SKU), or your own override if you wrote one |
description, structured_description | the enriched product summary (core identity, who it's for, why choose it), or your own description override if you wrote one |
product_highlight | the buyer-facing lines from the enrichment (who it is for, when to choose it, the common objection, seasonal relevance). Lines over 150 characters are left out |
product_detail | the "not recommended for" and "limitations" lines, when the enrichment has them |
link, image_link, additional_image_link | your storefront URL and product images |
availability | in stock / out of stock / preorder, read from your platform. Always sent: in_stock when your platform reports no stock data |
price | only when the product has one real price |
brand, gtin, mpn, product_type | your own catalogue values |
google_product_category | Google's own category number, only when the category proposed during enrichment is exactly one of Google's; otherwise empty |
color, material, size, gender, age_group | only what your platform states (a custom field, an option every variant shares, a WooCommerce attribute). gender and age_group only with one of Google's accepted values |
custom_label_0, custom_label_1 | measurement labels: the product's experiment group and the enrichment version the text comes from. Empty when not set |
Anything Clione cannot fill honestly is left empty, and an empty cell in a supplemental feed means "keep what the primary feed said". Concretely:
- A product with no barcode gets no
gtin. Clione never invents one. - A product priced at 0 — a call-for-price item, a free item — gets no
price, rather than a made-up0.01. - A product whose variants genuinely differ in price gets no
priceeither: a supplemental row keyed on the parent has one cell for it, and a "from" price is against Google's rules. Your primary feed's per-variant prices stand. - A product whose title never synced gets no
title, so Clione cannot overwrite a real title with a part number.
structured_title and structured_description carry Google's
digital_source_type marker. Clione-generated text is labelled
trained_algorithmic_media; text you wrote yourself in the editor is labelled
default. That is a disclosure Google asks for, and it is filled from what
actually happened rather than set to one value for everything.
Products only
Merchant Center describes offers — something with a price, an availability and a page you can buy it from. Categories, collections and content pages are none of those, and the specification has no attribute that would accept one, so there is no category or page feed and there will not be one. Their enrichment reaches Google through the storefront signals (JSON-LD, meta tags, the FAQ widget) instead.
Turning it on
- Store Settings → Integrations → Google Merchant Center feed → Turn the feed on.
- Copy the URL it shows you.
- In Merchant Center: Data sources → Add product data source → Scheduled fetch, paste the URL, and choose supplemental feed when asked what kind of source it is. A daily fetch is plenty.
- Link the supplemental source to your primary feed.
After the first fetch — check the match count
Merchant Center reports how many items the supplemental source matched. If it matched 0, the ids do not line up, and that is the one thing worth checking.
Feeds key their id on different things. Clione defaults to your platform's
product id, which is what most BigCommerce feed apps use. If your primary feed
is keyed on SKU instead, add ?idSource=sku to the end of the feed URL in
Merchant Center and fetch again. Feeds sent by a sales channel (for example
Shopify's Google channel) often use ids built from country, product and variant;
those can't be matched.
Nothing breaks when the ids do not match — the rows simply join nothing, which is why the number in that report is worth a look rather than assuming it worked.
The same URL for Microsoft and Meta
Microsoft Merchant Center and Meta Commerce catalogues both take a supplemental
feed by URL, matched on id. Paste the same URL there: see
Microsoft Merchant Center and
Meta Commerce.
Keeping it up to date
The file rebuilds itself whenever the catalogue changes: a re-enrichment, an edit you save, a sync. In between, it is served from cache, so a Merchant Center fetch schedule of a few times a day costs nothing. The card in Store Settings shows when the file was last actually rebuilt.
Rotating or turning it off
The URL is the only credential on the file — Merchant Center's scheduled fetch
cannot send a password or an API key. What the URL exposes is the enriched copy
for one store's products, most of it already public on your storefront, plus
two measurement labels (custom_label_0, the experiment group, and
custom_label_1, the enrichment version): no credentials, no other stores, and
nothing that can be written to.
If you would rather it were not shared, Generate a new URL invalidates the old one immediately; paste the new one into Merchant Center. Turn it off stops the URL working at all — Merchant Center will then report a failed fetch until you remove the source there.