← ALL NOTES
PREBID / / 12 MIN READ Updated

Adding SSPs to Your Prebid Stack: How Many Demand Partners is Too Many?

Adding SSPs to Your Prebid Stack: How Many Demand Partners is Too Many?

Prebid's FAQ guidance puts the working range for a client-side header bidding implementation at approximately 1 to 5 demand partners, and Prebid's own revenue analysis explains where that ceiling comes from: revenue with five bids plateaued, while the timeout keeps growing with every adapter you add. The market splits around that guidance in both directions: a 2019 measurement study found more than 50 percent of publishers running a single demand partner, while a small tail ran as many as 20. Publishers on one side run auctions too thin to clear at decent prices. Publishers on the other side pay twice for demand they already have, once in page latency and once in ad server maintenance. We integrate Prebid and OpenRTB 2.6 seats for thousands of publishers, each above one million monthly pageviews, and the stacks that underperform almost always fail in one of those two directions.

The auction math behind the ceiling

In a first-price auction, the clearing price tracks the density of serious bids, not the number of configured seats. Buyers shade toward an estimate of the second-highest offer, so an added bidder pays off only when its bid becomes the new maximum, and that probability shrinks with every seat you already run. The tenth adapter competes against nine others for the same impression; the second competes against one. Marginal revenue decays structurally, which means the decay shows up on every property regardless of vertical, geography or layout.

Prebid's bidder count analysis confirms the shape of the curve: pages earn more as bidders grow, the page waits longer as bidders grow, revenue with five bids plateaued, and revenue actually drops when the page waits too long. The last point is the one teams skip, and it cuts in both directions. Latency starves the auction itself, because an adapter that misses the timeout never submits a bid: a slow fifteenth bidder runs its cookie sync, downloads its script and fires its network call, then contributes nothing to the auction it joined. Latency also degrades the session, because slots that fill late render where users have already scrolled past. The mechanics of first-price with bid shading and reserve prices decide how much bid density converts into revenue, and they reward depth of real competition rather than seat count.

Bid density, the count of bids that actually arrive per impression, is the metric that connects both sides of the tradeoff. It rises with every partner that adds real demand and falls whenever timeout pressure starts cutting bidders off, so it captures the whole tradeoff in one number. Read it per partner and per placement rather than per page, because a partner with strong desktop display bids can still be dead weight in a mobile interstitial slot.

What the latency measurements showed

The evidence comes from a 2019 measurement study of the header bidding ecosystem, and it deserves the age caveat up front: treat the numbers as a snapshot of an older web, and treat the mechanism behind them as current. More than 50 percent of publishers in the sample used only one demand partner, roughly 20 percent used five or more, roughly 5 percent used ten or more, and some ran as many as 20. The latency figures carry the argument: median latency ran 268.2 milliseconds with one demand partner and 1091.6 milliseconds with two. Doubling the partner count quadrupled the wait in that sample.

Each adapter brings its own cookie sync, its own script evaluation and its own network round trips, and parallel calls do not remove that tax, because they contend for the same bandwidth and the same main thread. The costs land in four places: viewability decays as the slot fills later, some users abandon before the ad renders, late slots shift the layout and damage Core Web Vitals, and slow adapters lose their bids to the timeout before those bids exist. Adapter code and networks have improved since 2019, and none of those improvements removed the per-adapter cost; they only lowered its rate.

Set the timeout from measurement rather than habit. Start from your bid arrival distribution, give the slowest partner you intend to keep enough room to land, and cut anything slower. Then hold the timeout constant through partner tests, because a timeout tuned mid-test makes every revenue number unreadable.

Demand partners and latency, 2019 measurements
In 2019 data, most publishers ran one demand partner, and median latency quadrupled with two.

The buy side pays for your adapter list

The costs do not stop at the page. Digiday reported that in some cases DSPs needed to listen to 10 times more bids to achieve the same level of reach as header bidding integrations multiplied. Every new seat that connects a buyer to your inventory adds a copy of a request stream that buyer already receives, and one DSP, whether it is DV360, Amazon DSP or a trader working in The Trade Desk, can reach a single publisher through several seats at once. Ten seats do not produce ten times the demand; they produce ten times the processing for the same underlying bids, and buyers respond with query throttles, harder shading or spend caps on the inventory that floods them.

The symptom on the publisher side stays quiet. Bids arrive slightly lower and fill slightly thinner, and no dashboard flags the cause. That is why seat overlap belongs in every partner review: before you count partners, map each seat to the buyers behind it. Five seats backed by the same three buyers is a three-buyer auction wearing a five-partner configuration, and it costs like a five-partner configuration in latency, trafficking and buyer attention while paying like a three-buyer auction.

Every bidder carries an ad server bill

Price granularity multiplies each partner's cost inside Google Ad Manager. Prebid's price granularity mechanism requires a line item for every possible price: 11 per bidder at low granularity, 201 at medium, 2001 at high. Ten bidders at medium granularity means 2010 line items; ten at high granularity means 20,010, and even five at high granularity means 10,005. Those totals sit past what most trafficking teams can maintain cleanly, and past the point where delivery decisions and forecasts read reliably.

Line items need creation, key-values, creatives, targeting and QA, and they need all of it again whenever granularity changes or a partner renegotiates pricing. The maintenance hours never show up in revenue reporting, which explains why bidder counts keep growing past their useful range: the auction gains appear in dashboards, and the trafficking bill does not. Treat granularity as a cost decision rather than a reporting preference, and attach each candidate's line-item footprint to its revenue case before approving it.

Ad server line items by bidder count and price granularity
Prebid price granularity requires 11 line items per bidder at low, 201 at medium and 2001 at high, and the total scales with every seat.

Server-side buys headroom, not permission

Prebid's FAQ guidance offers one escape from the client-side ceiling: a server-to-server implementation allows some flexibility to add more bidders, because the wait moves off the page's critical path. That flexibility is real, and teams routinely misread it. Server-side does not change the auction math, so the tenth seat still competes against nine. It does not dedupe demand, so overlapping seats still overlap. It also adds costs of its own: cookie match rates drop when the bid request leaves the browser context, and auction transparency depends entirely on what your server-side layer reports about clearing prices and win reasons.

Demand three things from any server-side layer before you move a single seat into it: per-seat reporting with clearing prices, a single timeout budget you control, and the ability to map each seat back to underlying buyers. Without those, consolidation just moves the noise from the page into a box you cannot inspect.

Use server-side for consolidation, not accumulation. A server-side wrapper running eight mapped, filtered seats beats a page running fifteen client-side adapters on latency, on ad server overhead and on the buyer experience of your inventory. Read the FAQ's phrase literally: some flexibility means a few seats of headroom, not a license for twenty.

Partner count is a vanity metric

The number that predicts revenue is distinct, curated demand, and building it takes work in front of the auction rather than behind it. We run a curation layer at OnlyMedia that sits in front of every auction we serve: managed floors, demand mapping, whitelists, pre-bid brand safety filtering and MFA filtering aligned with the IAB Content Taxonomy.

Managed floors stop thin auctions from clearing at prices that anchor buyers low for weeks afterward. Demand mapping removes duplicate seats before they tax the buy side. Whitelists keep buyers with records of non-payment or post-bid quality problems out of the auction entirely. Pre-bid brand safety and MFA filtering keep inventory classifiable and clean, so buyers stop pricing a risk premium into every bid. None of these functions adds a partner, and all of them raise the value of the partners you already run. A curated auction with six seats regularly outperforms an unfiltered one with fourteen, because the fourteen duplicate the same demand while adding latency the six do not.

Diagnose which failure mode you have

Both failure modes leave fingerprints, and reading them takes an afternoon, not a consulting engagement. Under-integration looks like this: one partner supplies most impressions, a floor change moves revenue without any contest following it, and pulling the top partner for a single day craters fill. Over-integration looks like this: the timeout rate climbs while revenue stays flat, several adapters return bid rates near zero, sessions per user slide as page weight grows, and the trafficking queue fills with line-item work that never ends. Stacks rarely sit at the extremes, so score yours against both patterns before deciding whether the next move is an addition or a subtraction.

A third pattern shows up in otherwise healthy stacks: partners that look strong on gross revenue but add nothing net, because they win impressions your incumbents would have won at similar prices. Only a holdout or a removal test exposes them.

A protocol that settles it on your own inventory

The honest answer to the title question is site-specific, and a disciplined team can measure it inside a quarter. The protocol is not sophisticated; it requires holding variables constant, which is the step most tests skip.

  1. Baseline for two weeks before changing anything: net revenue per partner, bid density, timeout rate, viewability and session depth, with timeout, floors and granularity frozen.
  2. Add one candidate at a time on a traffic split, and run removal tests on the same cadence; two simultaneous changes make attribution impossible.
  3. Judge net incremental revenue, not the candidate's gross revenue, because most of a new partner's wins cannibalize wins your existing partners would have taken anyway.
  4. Track timeout rate and layout shift alongside revenue, because the candidate's real cost lives there.
  5. Prune any partner whose removal changes nothing: a partner that adds latency and line items without net revenue has negative value, whatever its gross spend line shows.
  6. Rerun the review quarterly, because buyers shift spend and seats change behavior over a quarter.

The pruning step matters as much as the adding step, and most teams never run it. Over two or three cycles the process converges on a number, and that number is your ceiling. It varies by geography, vertical, format mix and layout: a property with strong direct campaigns might support eight seats, while a thin-demand content site tops out at four. The number does not transfer between properties, which is why teams argue this question from anecdotes instead of measuring it.

Which bidders earn their slot

Prebid's sustainability guidance for publishers is blunt: configure the minimum number of bidders that meets your goals, and choose those bidders on measurable criteria, including HTTP2 support, adapter size, bid response time, response size and cookie loads. Cookie loads matter twice, once in page weight and once in consent obligations, since every adapter that reads browser data widens the surface your consent setup has to cover.

Three criteria belong on that list for operational reasons. Seat overlap with your incumbents, because a partner whose demand duplicates two existing seats adds cost without adding competition. Adapter maintenance cadence in the Prebid repository, because an adapter nobody maintains is a future outage. Reporting transparency, meaning the partner shows clearing prices and win reasons rather than gross spend alone. A bidder that scores well on the five measurable criteria and badly on those three will disappoint you, because the three are where operating cost hides.

How we run the stack

At OnlyMedia the incentive question resolves itself: we are an ad network, an SSP and an agency in one company, so the auctions we run are the demand we sell, and we absorb the latency and buyer-side costs of every seat we add. Our SSP runs one unified auction per impression, with AdX via MCM, Prebid and OpenRTB 2.6 seats competing under managed floors, across header and server-side demand.

The demand behind that auction is our curated programmatic demand network, and we pay publishers Net 30, CPM based: no chasing, no sliding terms. Publishers read every partner decision from a ten minute reporting console, which is what makes quarterly pruning realistic: a review needs current data, not a monthly export that arrives after the quarter closes.

Where the line actually sits

For a client-side stack, the evidence puts the practical ceiling at about five. Prebid's FAQ says aim for approximately 1 to 5 demand partners, and Prebid's revenue analysis shows the plateau arriving at five bids. Between one and five, added bidders usually pay for themselves, because each one raises the chance of a new maximum bid in a first-price auction where buyers shade. Past five, the timeout keeps growing while marginal revenue flattens, and the costs that never appear in auction reporting, page latency, line-item maintenance and buyer-side flooding, start to dominate.

Server-side headroom and curation push that ceiling outward without repealing it. The question in the title therefore has a measurable answer rather than a universal one: too many is the point where the next partner's marginal net revenue falls below its latency, trafficking and buyer-side cost, and every property finds that point at a different number. Count buyers rather than seats. Add one candidate at a time on a traffic split, price its line-item footprint into the case, prune whatever fails to move net revenue, and rerun the cycle quarterly. The publishers who win here do not run the longest adapter list; they run the shortest list that still fills every auction at a price the inventory deserves.

WRITTEN BY THE DEMAND DESK MORE NOTES →