OneShot

All packsProduct Feed & Merchant Center ComplianceSolve

google merchant center identifier_exists wrong direction warning

identifier_exists: no is a claim about the world, not a way to silence a validator

Google downgraded a wrong identifier_exists claim from a disapproval to a warning in 2023 -- which makes it cheap to get wrong and expensive to notice: the feed is accepted, the products just underperform.

This is one of the things Product Feed & Merchant Center Compliance already handles. Get your products into Google Shopping and keep them from being rejected.

Buy for $1292 of 3 clean-room builds passed · full refund if it fails on your machine

Is this you?

Setting identifier_exists: 'no' on a mass-produced item that's simply missing its GTIN in your own database -- rather than on a genuinely handmade, vintage, or pre-1970 item -- makes a false claim that Google accepts without complaint. The feed passes, the disapproval error goes away, and the product just quietly underperforms in Shopping results from then on, with nothing pointing back at the cause.

Why this one is easy to get wrong

An agent whose loop is "make the missing-GTIN error go away" reaches for identifier_exists: no every time, because it's the parameter that makes the specific error disappear -- and Google downgraded a wrong claim here from a disapproval to a warning in late 2023, so there's no longer a hard failure forcing anyone to notice the claim was false.

What you get instead

resolveIdentifiers() encodes the rule as an ordered set of cases: a present GTIN is always emitted, even if syntactically invalid, rather than silently dropped; identifier_exists: 'no' is only emitted when customProduct is explicitly true; and with no GTIN and no customProduct flag, nothing is emitted at all -- the function never invents a claim the catalogue didn't make, and the validator, not resolveIdentifiers, is what judges an explicit identifierExists value the catalogue already provided.

Source: ARCHITECTURE.md 'Identifiers (the part everyone gets wrong)' — checkable in the pack you receive

How you actually use this

You don’t install a library or wire up an SDK. Your own coding agent builds the code in your project, and you keep it — no runtime dependency on us.

  1. Step 1

    Download and unzip

    You get a folder: the docs that tell an agent what to build, a starting skeleton, and the test suite that decides when it's done.

  2. Step 2

    Open it in Claude Code or Cursor

    Point your coding agent at the folder. Nothing to install, no account with us, no API key.

  3. Step 3

    Paste one prompt

    The pack contains the exact prompt. Paste it as your first message and leave it alone — it works through the build itself, choosing a cheaper or stronger model per task.

  4. Step 4

    Run ./verify.sh

    One command. It prints a pass or fail for every check. Green means the build is done — the same script we ran to produce the receipt on this page.

Typical build: about 44 minutes of your agent working, mostly unattended. Then you integrate the working module into your app the way you would any code you’d written yourself.

Why you can believe this

2 of 3 runs passed

We ran this pack from an empty folder 3 times and published exactly what happened — every check, the model, the token cost, the wall time. Not a testimonial, and not our opinion: the same verify.sh you run yourself. Read the full receipt →

Buy for $12914-day refund if verify.sh fails →

Related problems