AdOps Core
HEADER BIDDING

Why are my header bidding bids missing from the ad server?

Bids that appear in analytics but never win in the ad server usually lose the handoff: the server-side timeout is too tight so bids arrive after the auction closes, the ad server request fired before the targeting keys were set, or the generated price bucket does not match a line item. The bid exists; it just never enters the auction.

In header bidding, demand is collected in the browser (and often server-side) before the ad server is called. For a bid to compete, its price has to be written into targeting keys and the ad server request has to leave after those keys are set, matching a price-priority line item.

Three failure modes break this handoff. A timeout hierarchy problem lets server-side responses arrive after the browser auction has already closed. A race condition fires the ad server request before the bid targeting is written, so the keys are empty. And a price-bucket mismatch generates a key value that no line item targets, so a valid bid has nothing to win.

To diagnose it, capture the bid, targeting and ad server timestamps from a single auction and check the order, then confirm the generated price key matches the ad server price grid. Fixes range from tuning the timeouts to delaying the ad server request until targeting is ready, or aligning price granularity with the line items.

Go deeper

FAQ

Why do bids show in analytics but not win?

The bid was returned but never entered the ad server auction, usually because it arrived after the timeout, the targeting keys were not set in time, or its price bucket matched no line item.

What is a price bucket mismatch?

It is when the price granularity that generates header bidding key values does not line up with the ad server's price-priority line items, so a valid bid has no matching line item to win.

← All guides