Header Bidding Solution

Why choose us?

Publishers: Get the full value of your audience. Bypass the traditional waterfall and maximize yield across all demand, at the impression level.
supercharged bidder
Enhance your CPMs with premium, unique demand; the average uplift is 10-20% with many publishers seeing upward of 50%. Content delivers before advertisements, decreasing latency potential, and operates in a non-biased auction environment. View case study
plug and play
A dedicated team will set up the container for your header, managing integrations with every demand partner you use and automatically facilitating API updates, while you still retain full control of your business. view one sheet
total demand access
Our container hosts a true, non-biased auction across every integrated bidder, competing real time for your valuable mobile and desktop display audience - with the winning bid translated as a line item in the ad server to compete with direct campaigns.
unified reporting
Capture performance across every integrated bidder, helping you monitor demand partners, A/B test, and better understand the value of your inventory and audience for monetization decisions.

Get Started

Here's a quick guide on how to implement our Header Bidding Solution, built upon prebid.js. Below, we’ve highlighted the steps and code snippets you'll need.

1. Register the bidder tags for your ad units.

var adUnits = [{
  code: 'div-gpt-ad-1473458467522-0',
  sizes: [[300, 250], [300,600]],
  bids: [{
    bidder: 'aol',
    params: {
      network: '9599.1',
      placement: '3675026'
    }
  }]
},{
  code: 'div-gpt-ad-1473458467522-1',
  sizes: [[728, 90], [970, 90]],
  bids: [{
    bidder: 'aol',
    params: {
      network: '9599.1',
      placement: '3675022'
    }
  }]
}];

var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];

2. OPTIONAL - Enable per bidder timeouts or CPM adjustments.

pbjs.bidderSettings = {
  aol: {
    timeout: 800
  },
  rubicon: {
    timeout: 700,
    bidCpmAdjustment : function(bidCpm){
      // discount bid by 10%
      return bidCpm * 0.9;
    }
  }
};

3. Load the main library. Add or substitute bidder names in the URL as required.

(function () {
  var d = document;
  var pbs = d.createElement("script");
  pbs.type = "text/javascript";
  pbs.src = 'http://vlibs.advertising.com/prebid/adapters=appnexus,yieldbot,rubicon;/prebid-1.x.x.js';
  var target = d.getElementsByTagName("head")[0];
  target.insertBefore(pbs, target.firstChild);
})();

4. Disable initial load for GPT.

var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
googletag.cmd.push(function() {
  googletag.pubads().disableInitialLoad();
});

5. Enable analytics and send the bid requests.

pbjs.que.push(function() {

  pbjs.enableAnalytics({
    provider: 'aol', // Enable AOL Container solution reporting
    options: {}
  });

  pbjs.addAdUnits(adUnits);
  pbjs.requestBids({
    timeout: 1000, // The primary timeout is set here
    bidsBackHandler: sendAdserverRequest
  });

});

6. Define the callback to set ad server targeting and send requests once bids have been received or the timeout has been reached.

function sendAdserverRequest() {
  if (pbjs.adserverRequestSent) return;
  pbjs.adserverRequestSent = true;
  googletag.cmd.push(function() {
    pbjs.que.push(function() {
      pbjs.setTargetingForGPTAsync();
      googletag.pubads().refresh();
    });
  });
}

Live example:

 <script type="text/javascript" src="http://vlibs.advertising.com/prebid/adapters=appnexus,yieldbot,rubicon;/prebid-1.x.x.js" async></script>
<div id="container">Bid Response</div>
<script>
  var adUnits = [{
    code: 'div-gpt-ad-1438287399331-0',
    sizes: [[300, 250], [300, 600]],
    bids: [{
      bidder: 'aol',
      params: { placementId: '4799418' }
    }
    // Add other bidders here
    ]
  }];

  var pbjs = pbjs || {};
  pbjs.que = pbjs.que || [];

  pbjs.que.push(function() {
    pbjs.addAdUnits(adUnits);
    pbjs.requestBids({
      // This callback gets triggered when all bids for this
      // ad unit come back.
      bidsBackHandler: function(bidResponses) {
        var targetingParams = pbjs.getAdserverTargeting();
        var container = document.getElementById('container');
        container.innerHTML = JSON.stringify(targetingParams);
      }
    });
  });
</script>

Updates

Our version control system will allow you to seamlessly upgrade to new versions of our container to take advantage of additional features and functionality by only modifying one line of code.

GitHub Projects

We embrace open-source development and encourage contribution to the community. We’ve launched a number of open-source projects and have a healthy pipeline to come. Visit AOL Engineering and see what we're up to.

Contact