Comparison
Primary feed vs supplemental feed
Merchant Center has two kinds of product data source. A primary source is the feed: it decides which products exist, their country and language, and their base attributes. A supplemental source cannot add or remove anything; it matches on id and overwrites or fills attributes on products the primary already sent. Google now calls them primary and supplemental data sources. Here is what its help says about each, and which one a feed tool should be.
We connect your store, build the feed and keep it in sync. Updated 2026-10-27.
At a glance
- Primary data sources are the only type that can add or remove products; Google recommends one primary source for all products.
- A supplemental source cannot add or remove products or stand alone; it links to a primary source and matches on an id that must be identical.
- The Supplemental sources tab appears only with the 'Advanced data source management' add-on enabled in Merchant Center's add-ons settings.
- Textfinity publishes a complete feed meant to be the primary source; a custom feed with id plus a few columns can serve as a supplemental file you register by hand.
Primary vs supplemental: the comparison from Google's help
Every row below comes from Google's 'Create a product data source' and 'How to upload your products to Merchant Center' help pages, fetched on the date in the footnote. Where Google's page does not state a fact, the cell says so.
What a primary data source is for
Google describes the primary data source as the main source Merchant Center uses to access and display product data. It is also where you add or remove products, set language and country targeting, and set data rules. Google recommends submitting all products in a single primary data source and, if some should not appear, excluding them with the excluded destination attribute rather than splitting them across sources. A primary source can be fed by a file (uploaded, fetched from a URL on a 24-hour schedule, or sent via SFTP or Google Cloud Storage), a Google Sheets template or the Merchant API.
Because the primary source owns the product list, it also owns the risk: a file that drops 300 rows by accident removes 300 products. That is why a complete, scheduled, profiled file matters more here than anywhere else.
What a supplemental data source can and cannot do
A supplemental source, in Google's words, is a secondary source used to provide more details or update existing ones, such as required or optional attributes missing from the primary. It can't be used to add or remove products or be used as a standalone data source. The id attribute matches supplemental rows to primary products and must match exactly to prevent errors. When you create one, you select the primary source to add the data to, and the data source label must match the primary's feed label exactly; the language should match as well. Input methods are a file, a Google Sheets template or the API.
Two operational details trip people up. The Supplemental sources tab is hidden until the 'Advanced data source management' add-on is enabled in Merchant Center's add-ons settings. And in multi-client accounts, if a sub-account overrides rules and supplemental data, its supplemental source can't be linked to any primary source. Google also notes that the deprecated online inventory source is now replicated by a supplemental source carrying id, price and availability linked with the 'Take latest' rule, and that regional inventory sources need id and region id with optional price, sale price and availability.
When to use which
- You control the full feed (feed tool, plugin, API): make it the primary source and put the fixes in the tool's rules. One source, one place to debug.
- The primary comes from a platform connection you cannot edit (for example the Shopify Google & YouTube channel): keep it primary and add a supplemental source to override titles, custom labels or categories by id.
- A marketing team needs to edit a few attributes in a spreadsheet without touching the platform: supplemental Google Sheet with id plus the columns they own.
- Prices or stock change faster than the primary refreshes: a small supplemental file with id, price and availability linked with the 'Take latest' rule, as Google suggests for the former online inventory source.
- You need to remove products: only a primary source or the excluded destination attribute can do that; a supplemental cannot.
Where Textfinity fits
Textfinity produces the primary feed. It reads the store, applies mapping and filter rules, publishes a complete CSV or TSV on a stable URL, and we register that URL with you in Merchant Center as the primary file source, which Google fetches on its schedule. Everything a supplemental feed usually patches (composed titles, custom labels, category paths from a lookup sheet, AI descriptions) is done in the mapping before the file is written, so most merchants on Textfinity do not need a supplemental source at all.
When the primary is out of your hands, a Textfinity custom feed works as the supplemental file: output only id and the columns to override, publish the URL and register it manually in Merchant Center under Supplemental sources, linked to the primary with a matching feed label. The id mapping must emit exactly the id the primary uses. Textfinity does not read Merchant Center diagnostics back, so verify the link and the row matches in Merchant Center itself.
supplemental.csv (id + overrides only)
id,title,custom_label_0,google_product_category
8841-NV-M,Patagonia Better Sweater Men's Fleece, Navy, M,bestseller,Apparel & Accessories > Clothing > Outerwear
8841-NV-L,Patagonia Better Sweater Men's Fleece, Navy, L,bestseller,Apparel & Accessories > Clothing > OuterwearExamples
Worked examples, by situation
Three catalogs, three different answers to the primary-or-supplemental question, with the Textfinity rule behind each.
Supplemental file for titles and custom labels
Before
Primary (channel app) title: "Better Sweater"; custom_label_0 empty
After
Supplemental row overrides title to "Patagonia Better Sweater Men's Fleece, Navy, M" and sets custom_label_0 = bestseller
How we set it up
We build a custom feed with columns id, title and custom_label_0. id is a rename from the variant id the channel app sends; title is a combine of vendor, product.title, gender, color and size; custom_label_0 is an advanced expression: if [product_metafield_custom_bestseller] equals "true" then "bestseller" else "" (a true/false product metafield; Shopify tags are not part of the connection). The URL is registered as a supplemental source in Merchant Center.
No supplemental needed: fix it in the primary
Before
google_product_category empty, 180 products out of stock still listed
After
Category filled from a sheet, out-of-stock products excluded, one primary source
How we set it up
We map google_product_category as a replace from google sheet (product_type to category path), conditioned on is in google sheet list, and add an exclude filter "stock_status is equal to outofstock". The whole feed rebuilds on schedule; nothing to link.
Fast price patch via supplemental with 'Take latest'
Before
Primary refreshes nightly; 400 prices change at noon
After
Supplemental file with id, price, availability, linked with the Take latest rule, fetched on its own schedule
How we set it up
We build a custom feed with id, price and availability, map price with the advanced expression [price] + " EUR", and add an include filter "price_changed_today is equal to true" (a column from a merged source sheet).
Copy this plan
Set up the right source type
Decide who owns the product list first; the rest follows.
01
Identify the current primary source
In Merchant Center's data sources list, check whether the primary is a file, a Google Sheet, a platform connection or the API. If you can replace it, go to step 2; if not, skip to step 4.
02
Build the complete feed as primary
Connect the store and start from the Google Shopping template so every required attribute is present with Google's spelling.
What we set up: We connect the store in Textfinity and start the feed from the Google Shopping template.03
Put the fixes in mapping and filters
Composed titles, category lookups, custom labels and exclusions live in the rules, so no second source is needed.
What we set up: We set a transform per column and add the exclusions as filter rules.04
Or build a supplemental custom feed
Output id plus only the attributes to override. The id must match the primary's id exactly.
What we set up: We build a custom feed with columns id, title, custom_label_0 and whatever else you override.05
Profile before publishing
Feed hygiene checks completeness and lengths; for a supplemental file, confirm id has 100% fill.
What we set up: We run feed hygiene and check that id is 100% filled.06
Register in Merchant Center
Primary: add the URL as a scheduled file source. Supplemental: enable Advanced data source management in Merchant Center's add-ons settings, add the URL under Supplemental sources and link it to the primary with a matching feed label. Both registrations of a supplemental source happen in Merchant Center.
What we set up: We register the URLs with you: you give us access to Merchant Center, or we walk you through it.
Customization tips
Make it yours
One primary, always
Google recommends a single primary data source. Two primaries with overlapping ids overwrite each other unpredictably; use excluded_destination to hide products instead of a second source.
Keep supplemental files narrow
Only id and the columns you mean to override. Every extra column is a chance to overwrite a good value with an empty one.
Match feed label and language exactly
A supplemental source links only when its data source label equals the primary's feed label; a typo means zero rows applied with no obvious error.
Prefer rules in the tool over patches in Google
A fix in mapping travels to every channel feed; a supplemental patch applies only to Merchant Center. The trade-off is that the tool must own the primary.
Side by side
What we could verify
| Primary data source | Supplemental data source | |
|---|---|---|
| Purpose (Google) | Main source Merchant Center uses to access and display product data | Secondary source providing more details or updating existing ones |
| Can add products | ||
| Can remove products | ||
| Can stand alone | ||
| Sets country and language targeting | Must match the primary's feed label and language | |
| Matching key | Not applicable | id, must match the primary exactly |
| Must link to another source | Yes, to one or more primary sources | |
| Input methods | File (upload, URL fetch, SFTP, Cloud Storage), Google Sheets, Merchant API | File, Google Sheets, API |
| Hosted file fetch interval | Every 24 hours | not stated on the data source page |
| Add-on required | Advanced data source management (Merchant Center add-ons) | |
| Data rules | Set on the primary | Combined via rules such as 'Take latest' |
| Google's recommendation | One primary source for all products | Use for attributes missing from the primary |
| Textfinity role | Full feed on a URL, registered with you as the primary file source | Custom feed with id + overrides, registered manually in Merchant Center |
Checked 2026-10-27. Criteria from Google Merchant Center help: 'Create a product data source' and 'How to upload your products to Merchant Center'.
FAQ
Questions about primary feed vs supplemental feed google merchant center
What is the difference between a primary and a supplemental feed in Merchant Center?
A primary data source is the main source of product data and the only type that can add or remove products. A supplemental data source only adds or updates attributes on products already in a primary source, matched by id, and cannot stand alone.
Can a supplemental feed add new products?
No. Google's help states a supplemental data source can't be used to add or remove products. New products must come through a primary source.
Why can't I see the Supplemental sources tab?
The tab appears only when the 'Advanced data source management' add-on is enabled. Turn it on in the add-ons section of Merchant Center's settings.
Do I need a supplemental feed if I use a feed tool?
Usually not. If the tool produces the primary feed, title, category, label and exclusion fixes belong in its rules. A supplemental source is for when the primary comes from a connection you cannot edit.
What columns go in a supplemental feed?
id, which must match the primary exactly, plus only the attributes you want to add or override, for example title, custom_label_0 or google_product_category. Leave out everything else.
Set up for you
Have us build the primary feed once, and the patches disappear.
Send us your store URL. We map every attribute in Textfinity, profile the file and register it with you in Merchant Center as the primary source. Need a supplemental file instead? We set up a custom feed with id plus the overrides.
Tell us your store and channels. We reply within 24 hours.