Unwinding Header Bidding

Not so long ago, Google’s DFP, which is renamed to Google Ad Manager (GAM) now, was considered as the “go-to solution” for displaying ads on websites. Just because Google’s ad tag was placed on the site, it had power over other bidding parties. This control was such that whenever an ad call was made to GAM, Google had the first look of it, submitted bid, and won almost 95% of the time. Other parties never got a chance to at least see the Bid Request!

But later on, by the introduction of the Header Bidding system, Google’s domination was disrupted. It helped publishers to sell their impressions to the highest bidder - resulted in good yield and RPM.

So, is it Header Bidding or Prebid or what?

Let us understand the two terms in a nutshell –

* Header Bidding is a mechanism, using which Publishers can open up their inventory for sale on various programmatic marketplaces simultaneously.

So, we can say that it allows Publishers to have auctions with all integrated SSPs and Ad Exchanges, at the same time. Like a broadcast.

* Prebid is an organization, an open-source community that provides code-base/wrapper technology/hosted solutions, in other words, “a free suite of customizable software products,” which can be re-used by other companies. Prebid is an essential part of the whole Header Bidding workflow because it manages all the technicalities –

  • Configuring Bid Request to be fanned out to Exchanges
  • Ensuring a common timeout under which it should receive Bid Responses
  • Shortlisting highest bid within the Responses returned from all Exchanges
  • Providing all the required parameters to Publisher’s Ad Server.

Understanding the Workflow

When a webpage begins to load, the Header Bidding script starts an auction from the Head section (that is why it got its name). The returned bids are then passed on to Publisher’s Ad Server (typically GAM). These bids then compete with other demand partners present in Publisher’s Ad Server, if applicable. Finally, before the page is fully loaded, Publisher will have an Ad to show on the designated ad slot.

Two primary components of the Header Bidding system, that work in conjunction are: Prebid.JS and Prebid Server.

Prebid.js is a Javascript executes of a series of events, as under –

  • Pauses the Ad Server’s tag by a timer (so that it initializes Bid Request fan-out)
  • Calls Prebid Server (where Header Bidding solution is hosted) to conduct an auction
  • Sends out asynchronous Bid Requests to selected SSPs/Exchanges
  • Collects information (like creative payload, Ad ID, bid value, etc.) from Bid Response from the SSPs and Ad Exchanges within a timeout period
  • Analyses and finds a winner and make a call to Prebid Server to put the winning creative in cache
  • Prebid Server then passes the winning bid details to Publisher’s Ad Server as ‘key-value pairs’ like-

hb_pb - Price bucket, used by the Line Item to target

hb_adid - The Ad ID, used to identify creative

hb_bidder - The Bidder ID, used for logging and reporting


On the other side,

  • The Ad Server considers those key-values and tries to find a matching Line Item
  • If found, Ad Server then compares it with eligible Line Items which are set to bid on the same ad call
  • Finally, if Prebid is found to be the winner of the competition, Ad Server sends a signal to Prebid.js
  • which in turn calls Prebid Server to retrieves the winning creative and displays it in the ad slot

Significance of Line Items on GAM

Now we know that Prebid’s winner goes to Publisher’s Ad Server i.e., GAM, to participate in the competition with other Networks, if present. Since Prebid is passing targeting parameters via key-values, the Ad Server needs to read them, search through all the Line items (set on Price Priority) for an exact match.

It is Line Item’s job to provide all the targeting information to the Ad Server, including the CPM value, etc. Bidder may submit bid in any denomination, but there is no option to change the bid value set in the GAM dynamically or according to the Bid Request coming in. The algorithm of GAM chooses the Line Item, which is closest to the bid submitted.

Let’s consider these scenarios –

  • Prebid’s buyer submitted a bid of $3.20. GAM might choose the $3 Line Item - because it’s the closest.
  • If Google AdX submits a bid of $3 and Prebid’s buyer has $2.50 – here, AdX surely will win.
  • There can be other cases where Prebid’s script is set to send bids with $0.10 increments, but Line Item setup is expecting an increment of $0.50. Due to this, the Ad Server may not capture 80% of the bids.

Not a fair competition in any manner, just because of the absence of appropriate Line Items!

We understand that the end goal is to maximize Publisher’s profit, but unless Line Item is not set correctly, there will be partiality. Therefore, it is always suggested to make Line Items with smaller increments of RPM value to capture all kinds of bid values and to achieve an optimal setup. This gives all bidding parties an equal chance.

However, it is solely Publisher’s decision. They need to analyze the Bid Ranges Report under GAM, and then choose floor price and granularity settings cautiously.

Some publishers can go with the “Exact Granularity” option, which is $0.01, $0.02, $0.03, so on; Whereas others may choose to have the “Price Bucket Granularity” option with an increment of $0.10. Here, bids such as $1.06 or $1.02 would be rounded down into a single price bucket of $1.00.

Steps for Publisher

  • Firstly, define all the Bidders, who are needed in the Header Bidding Auction, in the Prebid script
  • Then configure GPT tags in the Prebid script, so that participating Bidders will know for what ad slot they are competing
  • Do the "Price Priority" Line Item setup in GAM, such that the bids coming from Prebid competes with other network Line Items and also with the Line Item of AdX
  • Double-check the key-value and Ad Unit which is set in the preset of Line Items
  • If Prebid has the highest bid, GAM calls the winner SSP or Exchange via Prebid’s Creative – make sure Creative is present in all the Line Items
  • If GAM finds a better Line Item within itself, make sure you have appropriate Creative ready to be rendered on the webpage

You may reach out to us to get your own Header Bidding solution and customize it according to your needs or to have an expert opinion.


1 comment

  1. Saurabh Sharma

    Looking to integrated our own ad server (revive) with prebid and monitize our assets (web and app).
    Let’s know if we can have discussion on this.

Leave A Comment