Auto dealer group
Seven dealer sites, four different answers
Vehicle data was missing on a dealer group's vehicle pages. They all supposedly shared code. They didn't, and a verdict per site saved a lot of wasted work.
- // symptom
- The Trade Desk received "VIN not found" and similar placeholders instead of vehicle data on vehicle detail pages.
- // cause
- Different per site: a CMS that exposed data only in JSON-LD, timing races, a third-party vehicle page domain, and missing tags.
- // fix
- A JSON-LD vehicle fallback, plus a corrective re-fire of only the affected tag once vehicle data loads.
- // result
- 3 of 7 sites fixed and verified live. The other 4 went to the right owner with a clear reason.
- 01 td1 on vehicle page: "VIN not found" ✗
- 02 tag present? 3 sites: none ⚠
- 03 vehicle pages on 3rd-party domain: 1
- ── patch: JSON-LD fallback + re-fire ──
- 04 JSON-LD Car → VIN · year · make ✓
- 05 re-fire after data loads beacon #2 ✓
- Tealium iQ
- The Trade Desk
- Dealer CMS platforms
- JSON-LD
The problem
A seven-dealership group’s ads were getting “VIN not found”, “Year not found” and similar placeholders instead of real vehicle data. The assumption was that all seven sites shared code, so one fix would cover them.
The method: a verdict per site
I checked each site on a real vehicle detail page for a specific VIN, not the homepage or a model page. I also checked whether the tag was even installed, first. Every site got its own verdict.
- 1 site: a library gap. Its CMS exposed vehicle data only in JSON-LD structured data, which the shared library didn’t read.
- 2 sites: timing races. The tracking ran before the site finished loading its vehicle data, on one site for the VIN only and on the other for every field.
- 1 site: out of reach. Its vehicle pages live on a third-party domain running someone else’s tag setup.
- 3 sites: no tag installed at all.
So “they all share code” was wrong. That one finding saved a lot of time that would have gone into fixing the wrong thing.
The fix
- A fallback that reads schema.org
Cardata from the page’s JSON-LD when the usual sources come up empty. - For the race sites, a small poller that waits for the vehicle data, patches it in, and re-fires only the affected ad tag.
How I proved it
For each fixed site I checked the data at every hop: the page, the data layer, and the live beacon. The race fix produces a second, corrected beacon with the full vehicle data.
Handed off
The third-party-domain site can’t be fixed from our tag manager. The three untagged sites need the tag installed by whoever manages them. Both went to the account team with exactly that explanation.
Seeing something like this?
Tell me what's not counting