FeedMender/Errors/Identifiers
Common rejections
Identifiers: GTIN, brand and MPN
Product identifiers are where a feed can be wrong in the most baffling way: a barcode that looks perfectly valid, passes its own check digit, and is still refused. Most of that confusion comes from a few rules that are easy to state and rarely explained.
What Google requires
A real barcode, or an honest declaration that there is none
Where a product has a manufacturer barcode, Google wants a valid GTIN: the right length, a correct GS1
mod-10 check digit, and a prefix that is actually issued to companies. A brand is required for most
categories, with books, film and music the documented exceptions. An MPN does not substitute for a
brand; the two satisfy different rules. If a product genuinely has no GTIN, that is declared with
identifier_exists: no, and that declaration must not contradict a GTIN, an MPN, or a
brand-and-MPN pair that is also supplied.
What happens if you do not
A valid-looking barcode Google rejects anyway
Several of these produce the disapproval that makes no sense from the merchant's side. A barcode with a
correct check digit is refused because it begins with a restricted prefix, 2,
02 or 04, which are reserved for in-store and variable-measure use, or because
it sits in a coupon band. Excel is the other frequent culprit: it silently turns a long barcode into
scientific notation such as 8.71234E+12, and a leading zero vanishes, so the value that was
correct in your database is wrong by the time Google reads it. A contradictory
identifier_exists declaration, a placeholder brand like "N/A" or "Generic", or an
id over 50 characters or carrying invisible control characters, each blocks the product.
How to fix it by hand
Restore the digits, then check the prefix
- Store barcodes as text, not numbers, so no leading zero is lost and nothing is converted to scientific notation. In a spreadsheet, that means turning off automatic number conversion on import.
- Verify the GS1 check digit, and read the prefix off the zero-padded 13-digit form rather than the
raw string: a 12-digit UPC-A beginning
98normalises to098, which is legitimate. - Convert an ISBN-10 to ISBN-13 and expand a UPC-E to UPC-A rather than submitting the short form.
- Replace placeholder brands with the real one, and give each variant its own GTIN rather than repeating a single barcode across a group.
- Set
identifier_exists: noonly when you truly supply no GTIN, MPN, or brand-and-MPN pair, and keep everyidunique, under 50 characters, and free of control characters.
Which of our checks apply
The identifier fields FeedMender reads
Nineteen checks, read from the scanner's own registry, cover this area. The prefix and check-digit logic is the part almost nothing else does.
gtin_invalidgtin, blocksgtin_repairablegtin, blocksgtin_formattinggtin, at riskgtin_suspectgtin, at riskgtin_duplicategtin, at riskgtin_absentgtin, at riskgtin_absent_fallbackgtin, at riskidentifier_exists_contradictionidentifier_exists, blocksidentifier_exists_valueidentifier_exists, blocksbrand_missingbrand, at riskbrand_placeholderbrand, blocksbrand_too_longbrand, blocksmpn_placeholdermpn, at riskmpn_suspiciousmpn, underperformingmpn_too_longmpn, blocksid_missingid, blocksid_duplicateid, blocksid_too_longid, blocksid_invalid_unicodeid, blocks
The quicker way
Let the scan find them
A check digit is arithmetic and a restricted prefix is a lookup, which is exactly the sort of thing worth having a machine do across a whole catalogue. The free scan reports every identifier fault, and names the cause when a barcode is valid but still refused.