Product Feeds
How to Diagnose Product Data Source Errors in Merchant Center
How to find whether a product problem starts in the file, the data source setup, the attribute values or the rules, and how to fix each without breaking product history.
When products are missing, attributes don’t update, or Merchant Center reports invalid values, the cause is often in the data source rather than on your website. A file name that doesn’t match, an encoding problem, a changed ID or a rule that overwrites good data can each produce errors across hundreds of products at once.
This guide covers the main data source types, the problems that come up at each layer (file, setup, IDs, attribute values, supplemental sources and rules), and a diagnostic order that finds the cause quickly. It also covers the “invalid product data” and general feed errors that merchants usually search for separately.
Short answer: Data source errors come from four layers: the file (name, format, UTF-8 encoding, invalid characters), the source setup (countries, language, feed label), product IDs (unique, stable, matching between primary and supplemental sources), and attribute values (formatting, length, allowed values, rules). Check them in that order, fix the source, then re-upload or reprocess the data source.
Key Takeaways
- Only a primary data source can add or remove products; supplemental sources only update attributes.
- Supplemental sources match products by ID exactly, and the feed label must match the primary source.
- Use UTF-8 and avoid invalid unicode such as control characters (for example U+200D).
- Changing a product’s ID overwrites the product and its history, so keep IDs stable.
- Attribute rules run in order and apply to every upload; test drafts before applying.
How product data sources work
Google’s data source documentation describes several ways to send products: a file (manual upload, SFTP or Google Cloud Storage), a Google Sheets template, or the Merchant API, which is the technical option suited to large catalogs or frequent changes. Shopify and WooCommerce integrations send data on your behalf.
| Source type | What it can do | Watch for |
|---|---|---|
| Primary | Adds and removes products; sets country and language targeting and rules | Same products in separate online and local primary sources (Google says not to do this) |
| Supplemental | Adds or updates attributes on existing products | Can’t add or remove products or stand alone; must match IDs and feed label |
| Regional inventory | Sends id and region_id, optionally price, sale_price, sale_price_effective_date and availability | IDs and regions that don’t match the primary data |
Google recommends keeping all products in a single primary source and using excluded_destination to keep specific products out of a marketing method. The legacy “online inventory” data sources are deprecated; Google’s replacement is a supplemental source with id, price and availability linked with a “Take latest” rule.
For a broader introduction to data sources, see how to add products to Merchant Center.
A diagnostic order that saves time
When something is wrong with product data, work from the outside in. Each layer can hide problems in the next.
- Did the data arrive? Check the data source’s last fetch or upload and its processing status.
- Is the file readable? File name, format, encoding and characters.
- Is the setup right? Target countries, language, feed label and marketing methods.
- Do IDs line up? Unique, stable IDs that match across primary and supplemental sources.
- Are values valid? Each attribute’s format, length and allowed values.
- Are rules changing the data? Attribute rules that overwrite or clear values.
Practitioner tip: pick three affected products and trace each one through every layer. Patterns show up faster with a small sample than with a full error report.
File problems: names, formats and encoding
File name
When you add a file source, Google asks for the exact file name with a valid extension and no special characters. In practice, a file whose name doesn’t match the one set on the source is a common reason an upload seems to have no effect. Scheduled fetches and SFTP uploads are where this usually goes wrong, for example a date added to the file name by an export tool.
Encoding and invalid unicode
Google’s id specification says to use UTF-8 and avoid invalid unicode, such as control characters (it gives U+200D as an example). Characters like these often arrive invisibly from copy-pasted text, spreadsheet exports or supplier data.
- Save files as UTF-8 from your export tool or spreadsheet.
- Look for garbled characters (for example accented letters turned into symbols) as a sign of the wrong encoding.
- Search for and remove zero-width and control characters, especially in IDs and titles.
- Avoid leading or trailing whitespace in IDs.
Escaping in XML and JSON
Google’s description specification asks you to escape XML and JSON properly but not double-encode. Double encoding is a common cause of text like & appearing in titles and descriptions.
Setup problems: countries, language and feed labels
If products upload but don’t show where you expect, check the data source setup. A primary source sets the target countries and language.
- Feed labels can be up to 20 characters: uppercase A to Z, 0 to 9, hyphens and underscores, with no spaces. Google’s feed label documentation notes that feed labels are only available when creating a new data source with the “Advanced data source management” add-on, and that language and feed label can’t be modified after creation.
- If the language or feed label is wrong, you usually need a new data source rather than an edit. Plan the move so products aren’t deleted and re-added, which Google says takes significant time to show again.
- Countries can be edited in the data source setup, and the
shippingattribute can also add countries per product. See how to handle multiple countries and currencies.
ID problems
IDs connect everything: the primary source, supplemental sources, rules, regional inventory and performance history. Google’s id rules:
- Required, 1 to 50 characters. Google recommends using the SKU.
- Unique per product, and stable. Changing an ID overwrites the product and its history.
- Use the same ID for the same product across countries and languages.
- Don’t rely on casing to make IDs unique: “abc123” and “ABC123” may be treated as the same, including in supplemental matching.
- Don’t reuse IDs for different products or variants, for a rotating “promotion of the day”, or recycle them for new products.
- Using the same IDs in multiple Merchant Center accounts is acceptable and won’t cause “duplicate products” disapprovals.
A platform migration or a new feed plugin is the most common reason IDs change across a whole catalog. Check the ID format before switching tools. Duplicate and colliding IDs are covered in how to fix duplicate products in a feed.
Supplemental source matching
When a supplemental source “does nothing”, the cause is almost always matching. Google states supplemental sources match products by ID exactly, and the feed label must match the primary source.
- Take one product ID from the supplemental file and search for it in Merchant Center.
- Compare the ID character by character, including whitespace and invisible characters.
- Check that the supplemental source is linked to the right primary source and feed label.
- Confirm a rule actually uses the supplemental value (for example “Take latest” or “Set to” from the supplemental source).
The “Supplemental sources” tab is only visible when the “Advanced data source management” add-on is enabled under Settings > Add-ons. For setup patterns, see supplemental feeds explained.
Invalid product data: attribute formatting
“Invalid” or “incorrect value” issues usually mean one attribute’s value doesn’t fit Google’s specification. The rules that trip merchants most often:
| Attribute | Key rules from Google | Typical mistake |
|---|---|---|
| id | 1 to 50 characters, unique, stable | Whitespace, control characters, changed format after migration |
| title | 1 to 150 characters; no promotional text, price or all caps for emphasis | Sale text or store name added by a template |
| description | 1 to 5,000 characters; no links or promotional text | HTML or double-encoded entities; badly formatted structured_description causing “Too many sub-attributes for the attribute” |
| price / sale_price | Number plus ISO 4217 currency (for example 15.00 USD); sale price below price; at most 2 decimals | Missing currency, sale price above price |
| availability | in_stock, out_of_stock, preorder, backorder (build_to_order for vehicles only) | Platform values like “available” or “instock” passed through unmapped |
| item_group_id | 1 to 50 characters (alphanumeric, underscore, dash), same for all variants | Parent submitted as a separate product, ID changes between syncs |
| image_link | http(s), ASCII only, 1 to 2,000 characters | Unencoded commas or ampersands, relative URLs |
For brand, GTIN and MPN problems, see how to fix missing product identifiers.
Fix values where they originate (your platform, PIM or export template). Editing a value in Merchant Center or overriding it with a rule can hide the problem until the next platform change.
Attribute rules that cause errors
Google renamed “feed rules” to attribute rules. They require the “Advanced data source management” add-on, and the ID attribute uses separate ID rules. Per Google’s attribute rules documentation:
- Rules cascade in order, so a later rule can overwrite an earlier one.
- The default rule takes the value from the supplemental or primary source.
- Conditions on prices use values without currency, and “equals” is exact: 13.00 is not the same as 13. Matching is case insensitive.
- Rules apply to each upload, so a broken rule keeps reapplying its error.
The safe workflow Google describes: open the primary source’s Attribute rules tab (select the feed label if there are several), add a rule, Save as draft, Test rules and preview the draft value per item, then Apply changes. After applying, reprocess the data source.
When diagnosing, preview a few affected items to see each attribute’s value before and after rules. If a value looks right in your file but wrong in Merchant Center, a rule is the first suspect. More in product feed rules and attribute mapping.
Platform notes: Shopify and WooCommerce
- With the Shopify Google & YouTube app or Google for WooCommerce, the platform is the source of truth. Google notes API or third-party updates may overwrite manual edits made in Merchant Center.
- If you also use a supplemental file or rules alongside an app, document which system owns each attribute so they don’t fight.
- Feed plugins and apps each have their own ID formats. Switching tools can change every ID; check before you switch. See WooCommerce product feed errors and Shopify troubleshooting.
Preventing data source errors
- Lock the export template: column names, encoding (UTF-8), file name and delimiter.
- Validate a sample of rows before each large upload: IDs, prices with currency, availability values, URLs.
- Keep a change log for rules, supplemental sources and platform settings.
- Never change ID formats without a migration plan.
- Review the Needs attention tab after any platform, plugin or template change.
When to get help
Get help when errors span thousands of products, when several systems write to the same attributes, or when you need to restructure data sources without losing product history. Our product feed optimization service covers data source setup, rules and feed QA, and our disapproval service handles the resulting product issues.
Frequently asked questions
Why isn’t my supplemental feed updating products?
Supplemental sources match products by ID exactly, and the feed label must match the primary source. Check IDs character by character and confirm a rule uses the supplemental value.
What encoding should a Merchant Center feed use?
Google says to use UTF-8 and avoid invalid unicode such as control characters.
Can I change a product’s ID in Merchant Center?
You can, but Google says changing an ID overwrites the product and its history. Keep IDs stable.
Can I change the language or feed label of a data source?
No. Google says language and feed label can’t be modified after the data source is created.
Why does my product show “&” in the title?
That is usually double encoding. Google asks you to escape XML and JSON properly without double-encoding.
Do the same IDs in two Merchant Center accounts cause duplicate errors?
Google says using the same IDs across multiple Merchant Center accounts is acceptable and won’t cause duplicate products disapprovals.
Feed errors you can’t trace?
We audit your data sources, IDs and rules, fix the errors at the source and set up checks so they don’t come back.
Sources
- Google Merchant Center Help — Create a product data source
- Google Merchant Center Help — ID [id]
- Google Merchant Center Help — Feed labels
- Google Merchant Center Help — Set up your attribute rules
- Google Merchant Center Help — Description [description]
- Google Merchant Center Help — Title [title] and structured title
- Google Merchant Center Help — Sale price [sale_price]
- Google Merchant Center Help — Availability [availability]
- Google Merchant Center Help — Item group ID [item_group_id]
- Google Merchant Center Help — Image link [image_link]
- Google Merchant Center Help — Product data specification
Last reviewed October 10, 2026 against the official documentation listed above. Google changes Merchant Center features and policies regularly — always confirm details in your own account.
