Lazy loading of third-party ads

What is lazy loading and why is it recommended?

Lazy loading is designed to only load third-party ads when a specific ad break starts. The reason for lazy loading is that all of our SDKs (HTML5, iOS and Android) use an ad session, which conveniently bundles the requests for all ad breaks you want in one single request. The ads stored directly in Pulse can all be loaded safely at the start of the session. However, certain ad servers count the loading of the creatives automatically as an impression. This may lead to wrong numbers of ad impressions.

For example:

If you have a video where you want to show pre-, mid- and post-roll ads, you would request each of these ad breaks at the same time. For your convenience, the SDK loads all the ads, including the third-party ad which is going to be shown in the post-roll ad break in this example. If the viewer decides to stop playback of the video content somewhere before the end was reached, then they never see the intended post-roll ads. In this case, the third party may have already logged an impression even though the ad was never shown. To counter this behavior in third-party ad servers, their ads are only loaded at the start of the ad break.

Ad request and loading steps with and without lazy loading

This is the sequence of events when using one of the Pulse SDKs, the HTML5 Ad Player or one of the HTML5 Ad Player derived plugins, where the parsing and loading of the ads is done automatically by the SDK at the right times.

Sequence of events with and without lazy loading

When you use the HTML5 Core SDK in your integration, then you must check if an ad is lazy loaded or not, and if it is lazy loaded, then you must request to load it before showing the ad.

When looking at the steps when lazy loading is enabled on the timeline of the video content, it would look as follows:

Steps on a video content timeline