Outstream and instream videos work in very different ways. The most important thing to understand when using OpenWrap and Prebid.js, is that bidders see the inventory as a video ad unit, but the ad server sees the inventory as a display unit. Because the ad server sees the ad unit as display, multi-format ad units that bid both display and video are possible. If a video bid wins, the wrapper injects a video player (the “renderer”), then passes the video creative to the renderer.
Since the ad unit looks like a display ad unit to the ad server and a video ad unit to the SSP, the impression counting methods are different. The ad server counts display ad impressions as billable when a tracker, inserted at the top of the winning ad HTML, reports that the ad has rendered. The creative notifies the wrapper it won, at which point the wrapper records the impressions, inserts the outstream player on the page, then instructs the player to play the winning ad.
SSP impression trackers fire from an impression event inside a VAST ad. For the SSP impression tracker to fire, the outstream player must fully load, process the creative. and begin ad playback. If the player fails to load or a VAST processing error occurs, the SSP’s impression tracker will not fire. Because VAST ads support “wrappers” (completely unrelated to header bidding wrappers such as OpenWrap or Prebid.js), there are several places where the ad can error out. VAST wrappers point to other VAST documents, so it’s not uncommon to have two or three layers of wrappers; if any of those VAST documents fail to load, the ad errors out. If the creative format for the ad is VPAID, then there are other opportunities for potential errors.
Since the SSP does not count the ad until much later in the load process, the SSP monetized impression count and revenue are typically considerably lower than the counts from the header bidding wrapper or the ad server for outstream ads.
The discrepancy between the SSP and the header bidding wrapper can be approximated by:
(probability outstream player fails to load) + (probability of a VAST/VPAID error)
Unfortunately, video error rates run much higher than ad formats. When not using VPAID, error rates range from 10-to-25%; they can hit 30%, 40%, or even higher with VPAID creatives. Coupled with loading the outstream player, 40-to-60% discrepancies between SSP and wrapper numbers, or SSP and ad server numbers, are common.
These discrepancy numbers look high compared to instream because with instream video ads, all three layers (ad server, header bidding wrapper, and SSP), count using VAST impression events. Errors track separately and do not show up as a discrepancy between any of the three numbers.
At first glance, the opportunity cost of instream video errors looks lower because none of the layers of the system are reporting the revenue you would have gotten if the creative had rendered. This is illusory since outstream errors are just as costly as instream errors; often more so because instream CPMs are typically higher.
Outstream also has an additional drawback of non-rendering and therefore non-monetizing impressions, because the outstream player doesn't load until the ad wins. For instream, the player arrives with the initial page load, so if the player fails to load for any reason, the impression never exists.
The primary reason that header bidding outstream uses this hybrid approach where impressions look like display impressions to the ad server, but then look like video impressions to the SSP, is to support multi-format ad units. It’s not feasible to convert an impression that the ad server recognizes as video to a display impression. But we can convert an impression that the ad server recognizes as display, to video using a header bidding wrapper that inserts the outstream video player when a video bid wins.
The secondary reason for outstream functionality is that if the header bidding wrapper were to treat outstream as a video unit all the way to the ad server, setup would be more complex. To support that would require a separate set of video line items.
Fortunately, there are some strategies to minimize the impact of discrepancies. From a publisher’s point of the view, the best bid to select is the one with the highest expected value. The expected value is:
(CPM) * (probability ad becomes billable)
Adjust bids per SSP and per format, based on historic discrepancies. This strategy produces the ideal outcome for publishers, but requires a lot of heavy lifting to gather discrepancy data, then adding in adjustment factors. For example: if SSP A has a 20% revenue discrepancy between their numbers and the ad server's numbers, then reduce bids for that SSP by 20%.
Use separate ad units for outstream. With a single format unit, there's no opportunity from a competing display bid if the outstream unit fails to render. In this case, the outstream unit would be an additional ad unit on the page.
Set a higher floor at the SSP for video bids going into the outstream. On average, this compensates for the additional risk of the outstream ad not rendering and being unbillable. This strategy is simpler and easier to implement, but does not produce the ideal result that strategy 1 does.