Template

Google supplemental feed template

A supplemental feed is the smallest file in Merchant Center: one id column that matches your primary source, then only the attributes you want to add or overwrite. This page gives you the template, six examples of what people actually put in one, a CSV to start from, and a plan to generate it from your catalog so it stays in sync.

We connect your store, build the feed and keep it in sync. Updated 2026-10-27.

At a glance

  • A supplemental source can add or overwrite attributes for products that already exist in a primary source; it cannot add or remove products.
  • The only required column is id, and it must match the primary source's product id exactly, down to case and prefixes.
  • Common columns: title, custom_label_0 to custom_label_4, google_product_category, sale_price, sale_price_effective_date, product_highlight, excluded_destination.
  • Input types are a file, a Google Sheets template, or the API. The Supplemental sources tab appears once the Advanced data source management add-on is active.
  • We build the file in Textfinity as a custom feed from your catalog: id plus the columns you want to control, rebuilt on a schedule, published on a URL.

What a Google supplemental feed template contains

Google documents a supplemental data source as a way to add details to, or update, products already in your primary source. It cannot be used to add or remove products and cannot stand alone. That makes the template short: an id column that matches the primary feed, followed by any attribute from the product data specification you want to add or overwrite. Columns you leave out are untouched; a column that is present but empty for a row leaves that product's value alone as well.

Because Merchant Center matches on id, the id has to be identical to the one in the primary source, including any prefix a platform app adds. Shopify's Google & YouTube app, for example, sends ids in a pattern like shopify_US_<product id>_<variant id>; check one product under Products in Merchant Center before you build the column.

ColumnRole in a supplemental feedTypical use
idRequired; must match the primary source exactlyJoin key
titleOverwrites the primary titleRewritten or AI-generated titles without touching the store
custom_label_0 … custom_label_4Adds or overwrites labelsMargin bands, seasons, bestsellers for campaign grouping
google_product_categoryAdds or overwrites the categoryFill a category the platform app leaves blank
sale_price, sale_price_effective_dateAdds a timed promotionBlack Friday pricing from a sheet
product_highlight, product_detailAdds enhanced contentBullet points and spec tables
excluded_destinationRemoves a product from a surfaceKeep an item out of free listings but in Shopping ads
availability, priceOverwrites with the Take latest ruleReplacement for the retired online inventory sources

Behavior and click paths from Google's Create a product data source help page, checked 2026-10-27.

Supplemental feed examples for Google Shopping

Six jobs cover most supplemental feeds we see. Each one is a two- or three-column file; the examples further down show the rows and the rule that produces them.

  • Title rewrite: id + title. The store keeps its short titles for the website; Merchant Center gets brand, product type, color and size in the first 70 characters.
  • Custom labels for bidding: id + custom_label_0 (margin band) + custom_label_1 (season). Campaigns are then split by label without touching the store's data.
  • Category fill: id + google_product_category, looked up from your product_type in a sheet, for apps that leave the category empty.
  • Promotion window: id + sale_price + sale_price_effective_date, generated for the SKUs in a promotion sheet and empty for everything else.
  • Surface control: id + excluded_destination to keep B2B-only or low-stock items out of free listings while ads keep running.
  • Enhanced content: id + product_highlight columns built from attributes the store already has (material, capacity, warranty).

Google Sheets template, file or API: picking the input

Merchant Center offers three input types when you add supplemental product data: a file, a Google Sheets template that Google pre-fills with the id column, or the API. The Google Sheet is the right choice when a person maintains a few dozen overrides by hand; Google generates it and reads it back on demand. A file is the right choice when software produces the rows, because it can be fetched from a URL on a schedule and nobody has to open a spreadsheet. The API is for developers who already push products through the Merchant API.

Whichever input you pick, the data source label must match the primary source's feed label exactly, and the language should match the primary feed, or Merchant Center will not link the two. The supplemental file in CSV form looks like this:

supplemental-titles-and-labels.csv

id,title,custom_label_0,google_product_category
shopify_US_8123456_41234567,"Marlowe Linen Wrap Dress, Black, M",margin-high,2271
shopify_US_8123456_41234568,"Marlowe Linen Wrap Dress, Black, L",margin-high,2271
shopify_US_8129900_41240001,"Marlowe Cotton Crew Tee, White, S",margin-low,212

Keeping a supplemental feed in sync instead of editing a sheet

The weakness of a hand-maintained supplemental sheet is drift: products get added to the store, the sheet does not know, and the new items run with the platform's default titles and no labels. The fix is to generate the file from the same catalog the primary feed comes from. In Textfinity, that is a custom feed on the connected shop with two or more columns: id, built to match the primary source's pattern, and the attributes you want to control. The title column can come from an AI config, using accepted titles with the store's title as fallback; custom labels from advanced rules on price, margin or tags; the category from a replace from google sheet lookup; the sale price from a merged source keyed on SKU.

The feed rebuilds on the shop's sync schedule, so a product added on Monday morning is in the supplemental file by the next rebuild, and Merchant Center picks it up at the next fetch. You keep the platform app as the primary source and never have to migrate it.

Examples

Worked examples, by situation

Four supplemental feeds from four stores. Each shows the rows and the Textfinity rule that generates them.

Fashion · Shopify Google & YouTube app as primary · 3,000 SKUs

Title rewrite without changing the store

Before

id,title
shopify_US_8123456_41234567,Linen Wrap Dress

After

id,title
shopify_US_8123456_41234567,"Marlowe Linen Wrap Dress, Black, M"

How we set it up

Custom feed with two columns. id is an advanced expression: "shopify_US_" + [product_id] + "_" + [variant_id] (advanced expressions name Shopify fields with underscores). title is advanced too: [product_vendor] + " " + [product_title] + ", " + [variant_color] + ", " + [variant_size]. To use accepted AI titles, give the rule the condition is accepted in AI config: replace from AI config where it holds, this expression otherwise.

Electronics · WooCommerce export · 800 SKUs · margin-based bidding

Custom labels from a cost sheet

Before

SKU,Regular price
HDMI-2M,14.90

After

id,custom_label_0,custom_label_1
HDMI-2M,margin-high,accessory

How we set it up

A merged source joins a Google Sheet of margin bands on SKU. custom_label_0 is an advanced rule on the joined column: if [margin_band] equals "high" then "margin-high" else "margin-low". Every SKU needs a row in the sheet: an advanced rule fails on a product the merged source does not match, even for is empty. (With a unit_cost column and a space-free price column, calc{} could compute the band instead.) custom_label_1 comes from a replace from google sheet lookup of product_type to a label, with specific column A values since it replaces substrings.

Furniture · Magento XML · 400 SKUs · Black Friday in two countries

Timed sale prices for a product list

Before

sku,price
SOFA-220,1199.99

After

id,sale_price,sale_price_effective_date
SOFA-220,999.99 EUR,2026-11-27T00:00+01:00/2026-11-30T23:59+01:00

How we set it up

A merged source (promotion sheet keyed on sku) supplies the sale price. sale_price is a conditional rule on the joined column: matches regexp ^\s*$ → leave empty, otherwise rename; sale_price_effective_date is add static value for the window. A filter rule includes only rows where the joined sale price is not blank, so the file holds just the promoted SKUs.

Beauty · BigCommerce CSV · 250 SKUs · categories missing

google_product_category fill from product_type

Before

sku,product_type
SER-30,Skincare > Serums

After

id,google_product_category
SER-30,Health & Beauty > Personal Care > Cosmetics > Skin Care

How we set it up

replace from google sheet on google_product_category: the sheet has the store's product_type values in column A and Google's category path in column B. A product_type with no row passes through unchanged, so give the rule the condition product_type is in google sheet list and leave it empty otherwise; an empty cell leaves the primary source's value untouched; feed hygiene's completeness check shows how many are still unmapped.

Copy this plan

From template to a linked supplemental source

Six steps. Two happen in Merchant Center; the rest is one custom feed in Textfinity.

  1. 01

    Find the id pattern of your primary source

    Open any product in Merchant Center and copy its id. Shopify's app, WooCommerce plugins and hand-built feeds each use a different pattern; the supplemental id must match it character for character.

  2. 02

    Connect the catalog and start a custom feed

    Connect Shopify or the export URL, then create a feed with no channel template so you choose the columns yourself. Add id first.

    What we set up: We connect your store and create a custom feed with no channel template, starting with id.
  3. 03

    Build the id column

    Rename if the primary source uses your SKU. Use the advanced transform to assemble prefixed ids, for example "shopify_US_" + [product_id] + "_" + [variant_id] on a Shopify shop.

    What we set up: We write id as an advanced expression that reproduces your primary source's pattern.
  4. 04

    Add the columns you want to overwrite

    title from combine or an AI config; custom labels from advanced rules; google_product_category from a Google Sheet lookup; sale_price from a merged source. Leave out every column you do not intend to change.

    What we set up: We give title the condition is accepted in AI config (replace from AI config where it holds, combine otherwise) and write custom_label_0 as an advanced rule.
  5. 05

    Filter to the rows that carry a change

    A supplemental feed does not need every product. Include only rows where at least one override column is not blank, which keeps the file small and the diff readable.

    What we set up: We add an include filter where margin_band, the merged column, is not blank.
  6. 06

    Publish and add the supplemental source in Merchant Center

    Copy the feed URL. In Merchant Center, activate Advanced data source management under Add-ons in Settings; then open Data sources (gear icon) → Supplemental sources → Add supplemental product data → file, give it the URL, set the data source label to match the primary feed label, and attach it to the primary source.

    What we set up: We publish the feed and add the supplemental source in your Merchant Center with access you give us, or walk you through these clicks on a call.

Customization tips

Make it yours

Overwrite titles here, not in the store

The store title serves the website and the product page; the feed title serves search matching. Keeping them separate means the merchandising team never sees "Marlowe Linen Wrap Dress, Black, M" on the product page. The cost is a second place to look when a title is wrong; the product explorer shows the per-product output so you can see which rule produced it.

Use attribute rules for simple cases, a supplemental feed for data

Merchant Center's own attribute rules can prepend a brand or set a static label without any file. A supplemental feed earns its place when the value depends on data the primary source does not carry: margin, a promotion list, a category lookup, AI text. Mixing both is fine; a rule can read a supplemental attribute.

Keep one supplemental feed per job

One file for titles, one for labels, one for promotions is easier to pause than one file with everything in it. When a promotion ends you remove one source instead of editing columns, and the title feed keeps running. Textfinity feeds on the same shop share the catalog, so three feeds cost no extra mapping of the base data.

Match the feed label, not just the id

The most common reason a supplemental source links but changes nothing is a feed label mismatch: the supplemental source must carry the same label as the primary source. Set it when you create the source; it cannot be changed afterwards without recreating it.

FAQ

Questions about google supplemental feed template

What columns does a Google supplemental feed need?

Only id, which must match the product id in the primary data source exactly. Every other column is optional and is one of the attributes from Google's product data specification you want to add or overwrite, such as title, custom_label_0, google_product_category, sale_price or excluded_destination.

Can a supplemental feed add new products to Merchant Center?

No. Google states that a supplemental data source cannot be used to add or remove products or as a standalone source. It only updates products that already exist in the primary source it is attached to. To add products you change the primary feed.

Where is the supplemental feed option in Merchant Center Next?

Settings (gear icon) → Data sources → Supplemental sources → Add supplemental product data. The tab only appears after you activate the Advanced data source management add-on under Add-ons in Settings. You then choose a file, a Google Sheets template or the API, set the data source label and language to match the primary source, and attach it.

Does a supplemental feed override the primary feed?

For the attributes it contains, yes: the supplemental value replaces the primary value for matching ids. Attributes it does not contain are untouched. Where the same attribute comes from several sources, Merchant Center applies the source order and rules you set on the primary source, such as Take latest for price and availability.

Is a supplemental feed the same as Merchant Center feed rules?

No. Attribute rules transform values inside Merchant Center with no file, which suits static changes such as adding a brand prefix. A supplemental feed brings in data from outside, such as margins, promotion lists, lookups or AI titles. They combine: a rule can reference an attribute that a supplemental source supplies.

Set up for you

Have your supplemental feed generated from the catalog, not a sheet

Keep your platform app as the primary source. Tell us which titles, labels or prices you want to control; we build the id column to match, add the overrides, and publish a URL Merchant Center fetches on schedule.

Have us build this feedOr email support@textfinity.io

Tell us your store and channels. We reply within 24 hours.