Google Merchant Feed Doctor
Pricing
from $1.00 / 1,000 results
Google Merchant Feed Doctor
Check Google Merchant Center product feeds (RSS/Atom XML, CSV, TSV) against Google's product data specification: errors, warnings and tips with the fix for each, duplicate ids, GTIN checksums, plus a normalized feed and change log.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
PRIVATEX
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
Check your Google Merchant Center product feed against Google's product data specification. For every product you get its errors, warnings and tips, each with the offending value and how to fix it. You also get a normalized feed with only safe, mechanical fixes applied, and a BEFORE/AFTER change log.
Passing these checks does not guarantee Merchant Center approval. Google also checks landing pages, images, policies and account settings, which this Actor cannot see.
Who is it for
- Merchants who upload a feed to Google Merchant Center and want to find disapproval risks before uploading.
- Agencies and feed managers who check many clients' feeds and need a repeatable, rule-by-rule report.
- Developers who generate feeds and want an automated check in their pipeline (API, schedules).
What it checks
Every rule cites Google Merchant Center Help, "Product data specification" (https://support.google.com/merchants/answer/7052112, read 2026-10-30). The rule source is included in every finding.
ERROR — required attributes and fixed formats
- Required attributes:
id(≤ 50 chars),title(≤ 150),description(≤ 5000),link,image_link,availability,price. - Fixed formats:
priceandsale_pricemust be15.00 USDstyle: period as decimal separator plus an ISO 4217 currency.availabilitymust bein_stock,out_of_stock,preorderorbackorder; preorder needsavailability_date.condition,gender,age_group,adultandidentifier_existsmust use their enumerated values.
- GTIN:
- check digit;
- no restricted (02, 04, 2) or coupon (98–99) prefixes.
- Sale price:
sale_pricecurrency must matchprice;sale_price_effective_datemust be in the right format and order.
- Duplicate ids: every copy is kept and flagged. The message says whether the copies are identical or different.
- Broken XML: reported with the exact line and column. This includes an unescaped
&.
WARNING — conditional rules
- Identifiers: a missing GTIN/MPN without
identifier_exists=no, oridentifier_exists=nowhile a GTIN is present. - Brand: missing for new products, or a placeholder brand such as "N/A" or "Generic".
- Sale price: a
sale_pricethat isn't lower thanprice. - Price 0.
- Apparel (by target country): missing
color/size/gender/age_group. These are required in BR, FR, DE, JP, UK and US. - Text and images: HTML in
description, unsupported image formats, more than 10 additional images, colour values that are numbers or hex codes. - Dates:
availability_datemore than a year ahead,expiration_datemore than 30 days ahead.
TIP — non-blocking
- All-caps titles.
- Promotional text in titles.
- Missing
google_product_category.
What it fixes, and what it never does
Fixes (only lossless, deterministic ones; each is logged in the change log)
- whitespace trimming;
- repeated spaces in titles;
In Stock→in_stock(and other unambiguous availability spellings);New→new,TRUE→yesfor yes/no attributes;- GTIN spaces and dashes removed (Google ignores them anyway);
8,50 EUR→8.50 EUR;USD 12.00→12.00 USD.
Never done
- No invented ids, brands, GTINs, prices or stock.
- No guessed values for ambiguous input.
1,299.00 USDandsold outare reported, not changed. - No currency conversion.
- No uploads to Merchant Center.
Start in 60 seconds
- Press Start without a feed. The Actor validates a small synthetic demo feed (fictional products on
example.invalid) and shows every kind of finding. No item or report events are charged for demo runs. - Enter your feed's https URL, or pick a key-value store record. Set your target country and run.
Example input
{"feedUrl": "https://www.example.com/feeds/google-merchant.xml","targetCountry": "US","onlyItemsWithIssues": false}
Example output row (SYNTHETIC demo data)
{"id": "NV-101","title": "Nordvik Kupa Şöğüç 350 ml","status": "HAS_ERRORS","errors": 1, "warnings": 0, "tips": 1,"issues": [{ "severity": "ERROR", "code": "GTIN_INVALID", "field": "gtin", "value": "4006381333932","message": "GTIN is not valid (CHECK_DIGIT).","fix": "Use the manufacturer-assigned UPC/EAN/JAN/ISBN-13/ITF-14 with a correct check digit, or leave gtin empty.","spec": "https://support.google.com/merchants/answer/7052112" }],"fixesApplied": [{ "field": "availability", "before": "In Stock", "after": "in_stock", "rule": "AVAILABILITY_CANONICAL_VALUE" },{ "field": "price", "before": "8,50 EUR", "after": "8.50 EUR", "rule": "PRICE_DECIMAL_POINT" }],"dataOrigin": "SYNTHETIC_DEMO"}
Input formats
| Format | Notes |
|---|---|
| RSS 2.0 and Atom XML | g: namespace; CDATA; nested shipping and tax. |
| CSV and TSV | Header names like image link, image_link and g:image_link are all accepted. |
.gz files | Read directly. Decompression is capped, so a "zip bomb" is refused. |
Text encodings: UTF-8 with or without BOM, the HTTP charset, or the XML encoding="…" declaration (for example ISO-8859-9 for Turkish).
Output
| Where | What |
|---|---|
| Dataset | One row per product: status (OK / TIPS_ONLY / HAS_WARNINGS / HAS_ERRORS), issues (severity, code, field, offending value, message, fix, spec source), fixesApplied, dataOrigin. |
ISSUES_CSV | One line per finding. UTF-8 with BOM. Text formulas are neutralised; numbers stay intact. |
CHANGELOG_CSV | Every fix as BEFORE/AFTER, with its rule. |
NORMALIZED_FEED_TSV | Your feed as TSV with only the logged fixes applied. TSV cannot hold tabs or line breaks inside values; those become spaces, and the report counts them. |
REPORT | Counts by status, severity and rule, with the spec version. |
OUTPUT | Run status: SUCCEEDED, PARTIAL_RESULT or EMPTY_FEED, or FAILED with an error code. Also counts. |
Error codes on FAILED:
INPUT_INVALIDACCESS_DENIEDNOT_FOUNDRATE_LIMITEDUPSTREAM_UNAVAILABLEINPUT_TOO_LARGEPARSE_ERRORUNSUPPORTED_FORMAT
Limits and performance
These figures were measured on synthetic feeds on a VPS:
| Feed | Time | Peak memory |
|---|---|---|
| 10,000 products (6.6 MB) | 0.5 s | about 300 MB |
| 100,000 products (66.7 MB) | about 7 s | about 1.3 GB |
- Default memory is 1024 MB, which covers the default limit of 10,000 products. For about 100,000 products, set 2048 MB.
maxItemsdefaults to 10,000 and can go up to 200,000.maxFileSizeMbdefaults to 50 and can go up to 200.
Pricing
The Actor is not yet published, and prices are not set yet. The code is prepared for pay-per-event: one event per validated product (feed-item-validated) and one per run report (feed-report). Failed and empty feeds and demo runs charge nothing, and the spending limit is respected. These rules are tested with a simulated platform.
Security and privacy
- Feed URLs must be HTTPS. Private, internal, loopback and cloud-metadata addresses are refused, also after redirects and at DNS resolution. URLs with embedded credentials or non-standard ports are refused too.
- Download size and decompressed size are capped.
- Offending values in the output are cut to 200 characters. Secrets in URL query strings (
token=,key=,sig=…) are masked. - Limited permissions: the Actor reads only the key-value store you pick.
Known limitations and what is not verified
- Not verified on a real merchant feed. Tests used synthetic feeds and one publicly shared community example. That example is not well-formed as published; after two mechanical repairs, 6 of its 6 items passed without false findings.
- Not compared with Google's official example file. The file could not be downloaded (HTTP 403).
- Not verified that this matches Merchant Center's own diagnostics. The Actor cannot see landing pages, images, policies or account settings.
- Rules cover the attributes listed above. Shipping, tax, loyalty, subscription, energy-label and certification attributes are read but not deeply validated.
- Product category requirements (for example mobile phones or gift cards) are not checked against the full Google taxonomy.
Support
Use the Issues tab on this Actor's page.