Skip to content

Conversation

@ChristianPavilonis
Copy link
Collaborator

closes #264

Summary

  • Add ua field to the OpenRTB Device struct so user-agent is serialized into bid requests
  • Update to_openrtb in the Prebid integration to map DeviceInfo.user_agent into device.ua
  • Fix DeviceInfo construction to always include user-agent and IP, not just when geo lookup succeeds

Context

Bidders like Kargo filter out requests with non-browser user-agents. Because device.ua was never set, Prebid Server would fall back to the HTTP UA of the server-to-server call (e.g. the Fastly runtime), causing bidders to return 204 No Content on every request. Verified via isolated curl testing that UA is the sole deciding factor.

Changes

File Change
crates/common/src/openrtb.rs Added ua: Option<String> to Device
crates/common/src/integrations/prebid.rs Map user_agent into device.ua; use .map() instead of .and_then() so device is present even without geo
crates/common/src/auction/formats.rs Always construct Some(DeviceInfo { .. }) with geo as optional inside, instead of gating on geo lookup

@ChristianPavilonis ChristianPavilonis marked this pull request as ready for review February 11, 2026 14:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

1 participant