Skip to content

Prebid OpenRTB requests missing device.ua, causing bidders to return no-bid #264

Closed

Description

@ChristianPavilonis

Bidders (confirmed with Kargo) are returning 204 No Content for all OpenRTB requests sent through Prebid Server. The root cause is that the device.ua field is never populated in the OpenRTB bid request payload.

When device.ua is absent, Prebid Server falls back to the User-Agent HTTP header of the server-to-server request itself (e.g. curl/8.7.1 or the Fastly compute runtime UA), which bidders reject as non-browser traffic.

Reproduction

Sending the same OpenRTB request directly to Kargo with a real browser UA returns 200 (bid). With a non-browser UA it returns 204 (no bid). All other fields (banner formats, buyeruid, geo) had no effect.

Test Change Result
Baseline (as sent by Prebid) None 204
+ 10 banner formats Formats only 204
+ Real Chrome UA UA only 200
+ buyeruid buyeruid only 204

Root Cause

Two issues:

  1. The OpenRTB Device struct has no ua field, so user-agent is never serialized into the bid request JSON.
  2. DeviceInfo construction in formats.rs is gated on geo lookup succeeding -- if GeoInfo::from_request returns None, the entire DeviceInfo (including user-agent) is dropped.

Expected Behavior

The original browser User-Agent header should be forwarded as device.ua in every OpenRTB bid request, regardless of whether geo information is available.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions