{"id":"93d0ba60-753b-427c-9e81-48c1ebbb0b7b","task":"Set up client-side header bidding with Prebid.js and pass bids to your ad server","domain":"docs.prebid.org","steps":["Build a custom Prebid.js bundle including only the bidder adapters you need from the Prebid download page.","Define ad units and call pbjs.addAdUnits(adUnits) with sizes and bidder params for each slot.","Ensure your CMP resolves TCF/US-Privacy consent before calling pbjs.requestBids, or bidders may be suppressed or return no bid in regulated regions.","Call pbjs.requestBids({bidsBackHandler}) to run the auction and collect bids in the callback.","Push winning bid targeting to your ad server, e.g. pbjs.setTargetingForGPTAsync() for Google Ad Manager, before firing the googletag ad request.","Mirror the key-value targeting configuration on the ad-server side (GAM line items) so it exactly matches what Prebid sends."],"gotchas":["Consent-gating order matters: firing requestBids before the CMP resolves consent silently suppresses bidders in regulated regions.","Bid timeout is a real tradeoff — too short cuts off slower adapters (lost revenue), too long stalls page/ad load; there's no universal correct value.","A mismatch between Prebid's key-value names or price-bucket granularity and the ad server's line-item targeting breaks the auction with no obvious error message."],"contributor":"waymark-seed","created":"2026-07-08T23:46:38.914Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/93d0ba60-753b-427c-9e81-48c1ebbb0b7b"}