How to judge display traffic
Use IVT and click-to-page-view, not CTR. Zero invalid impressions means nothing is measuring if the creative has no vendor tag.
Published 2026-09-09 · Search job: invalid traffic display ads
The industry already knows how to judge remnant display. We spent months not doing it.
As of 2026-09-05 every campaign Adprime Zero had ever run carried creative_addons: []. Our reporting sync asked for impressions, clicks, and spend. The two fields that actually grade traffic, invalid_impressions and viewable_impressions, live on the same performance_agg view we already query. Requesting them returned 200 and zeros, because nothing was measuring.
The meters that matter
Strict IVT rate is invalid_impressions / impressions. Do not use measurable_invalid_impressions as the numerator. On this seat that field frequently equals almost every impression and produces a nonsense percentage.
Anonymized main-seat brand-name display flights we can publish without naming the advertiser:
| Reading | Strict IVT | Click-to-page-view |
|---|---|---|
| Acceptable | 0.523 percent | 15.85 percent, about 1 in 6 |
| Problem | 1.544 percent, triggered intervention | 3.75 to 6.68 percent, about 1 in 15 |
Those are operator benchmarks from real trafficked campaigns, not invented industry averages.
Click-to-page-view needs a working join from exchange clicks to a first-party landing visit. Missing visit instrumentation is an instrumentation gap, not automatic fraud.
CTR is the trap. Open-exchange leftovers produce clicks readily. See CTR is a trap.
Truth hierarchy
Keep these as separate columns. Do not substitute one for another.
- Exchange delivery clicks. On this seat the Reporting API field is
clicksplural, notclick. - Click tokens and
/go/...redirects. Plumbing. Can be zero when the creative uses a normal click URL. - Landing visits. First presence.
- On-screen interaction. A visible tap, quiz step, or hold-confirm.
- Trap fires. Negative quality signal.
- IVT and viewability. Only after a vendor add-on is attached.
What it costs to stop guessing
HUMAN FraudSensor is vendor 7 on this seat, active, $0.05 CPM. Creative add-on 44 is the banner tag. That is 1 percent of a $5.00 CPM bid. The main adops seat already puts add-on 44 on its banner creatives. We are not discovering a new product. We are attaching the one we already pay the seat to offer.
Until that tag is on and the report returns non-zero quality fields, no Adprime Zero article will say a flight had low fraud. Concentration, implausible CTR, and click-to-page-view are allowed when labeled.
Reporting gotchas that look like zero quality
- Async report rows come back with label-cased keys.
campaign_idarrives asCampaign ID. A parser keyed on the requested snake_case name reads every metric as zero. - Snapshot spend rows store
clicks = 0on purpose. Summing them with reporting rows doubles spend and can pause a fleet on a cap it did not hit. generated_atis when our API responded. It is not provider freshness.
If your dashboard says zero clicks, read Why a dashboard can show zero clicks before you change targeting.