A Prebid.js build sized to the adapters that actually pay you, with the timeout set from a fortnight of your own logged auctions rather than a case study.
About this service
The timeout is the design, and we set it from your data. In the stacks we have measured, moving from 1,000 to 1,500 ms adds a small share of revenue and costs more than that in impressions never rendered on mobile, because the reader has already scrolled past the slot. So before touching config we log a fortnight of auctions and read the bid response distribution per adapter at p95. Then the number is a finding you can check rather than a preference we brought with us.
The build:
Prebid.js compiled from source with the adapters that actually paid you. We start from thirty days of auction data, keep the bidders whose win rate and net yield clear a floor agreed with you, and drop the rest. A default build carrying every adapter is a script your readers download so that nobody has to make a decision. Modules are chosen the same way: consent management for TCF, the GPP modules where you sell into US states, price floors reading a file from your own CDN, currency where demand prices in dollars and you report in euros, GPT pre-auction, and first-party data passed through ortb2 rather than bolted on as key-values afterwards.
Identity:
We run few ID modules and take money from none of them. Each one added is another script, another sync and another consent question, and most cannot show a lift in your own logs. The ones we keep survive a switch-off test: two weeks off, measured against the two weeks before, on the same inventory.
Consent and supply chain:
Enforcement runs inside Prebid, not only in the CMP. Bidders are gated on purpose consent, ads.txt and sellers.json entries are reconciled against the adapters actually in the build, and schain is set where you resell. A mismatch between your ads.txt and your bidder list is the fastest route to a buyer classifying your inventory as unauthorised, and it is nearly always a leftover from a partner who left two years ago.
Refresh and lazy loading:
Slots request on intersection, with a margin tuned to your scroll speed rather than to a default. Refresh, if you run it, fires on viewable time with a floor of thirty seconds and a cap per session, and we will write down the point on your own curve where additional refreshes start pulling your CPMs down. We will not implement a timer refresh that ignores viewability, at any price, because it sells your buyers something they did not agree to purchase.
Measurement:
An analytics adapter writes auction events somewhere you can query them, BigQuery or ClickHouse, in your project. The quarterly review reads bid rate, win rate, timeout rate and p95 latency per adapter, and adapters failing it come out. That review is the point of the engagement. The initial build is only what makes it possible.
Not included:
CMP procurement and legal review. Creative or template design. AMP is a separate build with RTC and a separate quote, so tell us before we price if most of your traffic arrives that way. We do not add a bidder because someone offered a revenue share for the introduction, and we will name any SSP that has made us that offer while working on your account.
Who this is not for:
Publishers running one or two slots on a small site: the fee will outrun the difference and a managed wrapper is the right answer. Teams who need every current partner kept: if no bidder leaves, there is nothing here for us to do. Anyone who wants the header bidding decision to be somebody else's fault.