Skip to content

feat(read): Kueez header bidding behind a deploy-time switch - #6591

Open
pnvasanth wants to merge 1 commit into
mainfrom
feat/kueez-prebid-header-bidding
Open

feat(read): Kueez header bidding behind a deploy-time switch#6591
pnvasanth wants to merge 1 commit into
mainfrom
feat/kueez-prebid-header-bidding

Conversation

@pnvasanth

@pnvasanth pnvasanth commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Wires the Prebid.js bundle from #6584 into the /read arbitrage template as a Kueez header-bidding layer in front of AdSense.

  • prebid.ts: PREBID_ENABLED (hardcoded false), Kueez display placement params, TCF + iframe-sync config, requestPrebidBid (never rejects: bid or a reason), renderPrebidBid
  • ProgrammaticAd: when headerBidding is on, the slot runs a Prebid auction at the moment it would have requested AdSense. A bid renders into the slot's own iframe; no bid, a timeout, or a bundle that never loaded mounts the AdSense <ins> exactly as today. The <ins> stays unmounted until then, so the mount-at-eligibility invariant of adsbygoogle.push holds.
  • ArbitrageAdSlot: only surface="read" opts in. The organic post page never does.
  • /articles/[id]: loads /prebid/prebid.js and preconnects to the Kueez exchange, only while PREBID_ENABLED. Same lifetime as adsbygoogle, torn down by the existing hard-navigation guard.
  • Telemetry: request/fill/empty prebid bid events with bidder, cpm, size and no-bid reason; impressions, viewable impressions and clicks on a Kueez creative carry ad_provider_id: kueezrtb.

Default behaviour is unchanged. With the switch off nothing here runs: no script, no preconnect, no auction. Flip PREBID_ENABLED to true and deploy to enable.

Before enabling

  • Confirm the display pId with the Kueez AM (the value shared is 23 chars and not hex, unlike the cId)
  • Add Kueez (GVL ID 1165) to the iubenda vendor list

Test plan

  • prebid.spec.ts: size selection, unit declaration, no-bid / timeout / error results, once-per-page config, render into iframe
  • ProgrammaticAd.spec.tsx (switch mocked on): bid renders and AdSense never requested; no bid, timeout fall back to AdSense; size filtering by box width; organic and native formats skip the auction
  • Existing AdSense suites pass with the switch off; full webapp suite passes
  • Preview: /articles/<id> as anonymous with the switch off shows no prebid.js request

Preview domain

https://feat-kueez-prebid-header-bidding.preview.app.daily.dev

@vercel

vercel Bot commented Sep 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
daily-webapp Ready Ready Preview Sep 2, 2026 11:31am UTC
storybook Building Building Preview Sep 2, 2026 11:31am UTC

Request Review

Prebid.js runs a Kueez auction for each /read ad slot before the AdSense
request and renders the winning creative into the slot's own iframe; a
slot with no bid falls through to the AdSense unit it always had. There
is no ad server: Prebid renders the bid itself, so no line items.

PREBID_ENABLED is a hardcoded false. Off, the template is byte-for-byte
on its current AdSense path: no script, no preconnects, no auction. The
organic post page never opts in.
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.

1 participant