Load GPT and bids in parallel

  • This audit checks if header bidding requests are delayed until the Google Publisher Tag library loads, potentially slowing down ad loading.

  • It's recommended to make header bidding requests independent of GPT loading to improve performance.

  • You can make your header bidding requests independent of GPT by ensuring they don't wait for googletag.pubadsReady() or googletag.cmd.push(), as demonstrated in the Prebid.js example.

  • A list of supported ad platforms evaluated by this audit is available on the project's GitHub repository.

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.