Load GPT and bids in parallel

Overview

This audit checks whether or not header bidding requests are deferred until the Google Publisher Tag (GPT) library loads. In most cases, these requests are not dependent on GPT and can be made in parallel with the library being loaded to speed up ad loading.

Recommendations

Ensure that header bidding requests do not wait on googletag.pubadsReady() or googletag.cmd.push().

Prebid.js Example

Incorrect
window.pbjs = pbjs || {};
pbjs.que = pbjs.que || [];

window.googletag = window.googletag || {};
googletag.cmd = googletag.cmd || [];
googletag.cmd.push(function() {
  googletag.pubads().disableInitialLoad();
  // Incorrect: Making bid requests dependent on GPT loading.
  pbjs.que.push(function() {
    pbjs.requestBids({
     bidsBackHandler: handleBidResponse
    });
  });
});
Correct
window.pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
// Correct: Making bid requests independent of GPT loading.
pbjs.que.push(function() {
  pbjs.requestBids({
    bidsBackHandler: handleBidResponse
  });
});

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

More information

The list of supported ad exchanges and supply side platforms this audit evaluates can be found in our GitHub repository.