AdOps Core
HEADER BIDDING

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

A bid appearing in analytics does not prove that it reached or won the ad server auction. Check the auction deadline, targeting handoff, matching line item, and final selection before diagnosing a header bidding timeout.

By AdOps Core. Updated .

Inspect the order of eventsConceptual workflow
  1. Bid arrives
  2. Targeting written
  3. Ad server request
  4. Selection result

Use this sequence to organize the investigation. Confirm the details in the affected platform and campaign.

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.

Build an auction timeline

  1. Capture one auction ID and ad unit with bid request and response timestamps.
  2. Find the auction completion or timeout event.
  3. Inspect the targeting actually attached to the outgoing ad server request.
  4. Confirm that the corresponding price value and creative size match a configured line item.
  5. Inspect the selected winner before concluding a bid was lost in transit.

Distinguish a late bid from an ordinary loss

An on-time bid with matching targeting can still lose to other demand. Timeout changes will not make that bid more competitive.

Retest the handoff and user experience

Verify timing and targeting on the affected placement after the change. Compare bid participation, renders, and latency together. Longer auction waits can have a cost, so validate the result rather than increasing every timeout.

Test your reasoning: Reconstruct the handoff

Original simulated exercise. This is not a real client case.

Analytics records a bid but the intended line item does not compete.

Evidence available

  • Bid arrives at 420 ms.
  • Ad server request leaves at 500 ms.
  • Targeting is written at 540 ms.

Was the bid necessarily late?

Read the answer and next check

It arrived before the ad server request, but targeting was written after that request. The evidence points to a handoff sequence problem.

Next check: Inspect the outgoing targeting after correcting the sequence and confirm a matching line item is eligible.

Research and further reading

Platform documentation

Prebid's guide shows how to inspect auctions and targeting. Use the relevant version and integration when comparing the handoff with the simulated examples.

Read more on Prebid.js troubleshooting

FAQ

Why do bids appear in analytics without winning?

They may arrive late, miss the targeting handoff, fail line-item matching, or lose normally to another eligible candidate. Trace one auction before deciding which occurred.

What is a price bucket mismatch?

The generated price targeting value does not match the configured ad server line items, preventing the expected line item from competing.

Continue learning

← All guides