Supply-quality readout checklist
Read a remnant display flight on concentration and click-to-page-view. IVT is not attached until a vendor tag is on the creative. Delivery clicks use the clicks plural field.
Published 2026-09-09 · Search job: how to audit ad placements
Do not open a remnant report and read CTR first.
On the open exchange, leftover inventory produces clicks readily. The June 2026 learning flight was judged on clicks and CTR, then thrown out. The later Supply Bench pull showed why: most placements did nothing, and a few domains produced a large share of billed clicks.
This checklist is how we read a flight when we do not yet have a fraud-vendor number. IVT and viewability stay blank until a vendor tag is attached to the creative. Zero invalid_impressions means nothing is measuring, not that the traffic is clean.
Meters, in order
- Coverage. Did the report include the whole spend slice, or only the top rows? Our August 2026 Supply Bench pull ignored
offsetand 50,000-row limits returned 400, so we only saw the high-spend tail. State that limit before you quote a share. - Concentration. How many domains or placements produced the clicks? Seven domains produced 41.3 percent of clicks from 4.7 percent of impressions in that pull. That shape is the story.
- Click-to-page-view. Exchange clicks are not visits. Anonymized main-seat brand-name display flights we can cite sat at 15.85 percent when usable and 3.75 percent when not. Missing visit instrumentation is an instrumentation gap, not automatic fraud.
- IVT, only after a vendor tag. Strict rate is
invalid_impressions / impressions. Do not usemeasurable_invalid_impressionsas the numerator. Anonymized main-seat flights sat at 0.523 percent acceptable and 1.544 percent when they triggered intervention. - CTR last, and only as a contamination clue. Implausible CTRs on a handful of domains are a watchlist, not a quality score.
Reporting traps that look like "zero quality"
- Request the
clicksplural field.clicksingular is the wrong name and reads as zero. - Async rows come back label-cased (
Campaign ID,Clicks). A parser keyed on snake_case reads every metric as zero. - Snapshot spend rows can store clicks as zero on purpose. Do not sum snapshot and hourly rows as if they were different auctions.
generated_atis when our API responded. It is not provider freshness.
Checklist
Supply-quality readout
Window: _______________
Spend observed: _______________
Coverage (full / partial / unknown): _______________
[ ] Report field for delivery clicks is clicks (plural)
[ ] Parser reads label-cased keys
[ ] Spend is not a raw sum of snapshot plus hourly rows
[ ] Placement count, domain count, and zero-click placement share written down
[ ] Click concentration written (top domains, share of clicks, share of imps)
[ ] Click-to-page-view computed only if the visit join exists
[ ] IVT left blank unless a vendor add-on is on the creative and fields are non-zero
[ ] measurable_invalid_impressions is not used as the rate numerator
[ ] CTR used only to flag implausible domains, not to pick a winner
[ ] ads.txt unauthorized spend noted if present (our Aug 2026 slice: $0.48)
[ ] No sentence that says "low fraud" or "high quality" without IVT attachedPublish the window and the coverage caveat next to any number. A share from a partial pull is still useful. A share presented as a category benchmark is not.