Yuval Fisher - October 5th 2021
Focusing on problems all the time is a downer. So it’s good to know that, sometimes, things that look bad are actually not bad at all. In fact, in some CTV apps, a notable proportion of returned ads will not convert to impressions – these look like ad holes, but they are not.
When Wurl first launched its SSAI (server-side ad insertion) service, we were told by experts from a leading SSP that use-rates of 60% for linear OTT viewing were “good.” That is, of all returned ads, only 60% would convert to impressions, and this was the expected behavior.
“How is that possible? Why would 40% of ads just disappear?” we thought.
“Are these guys just hapless bozos that are pulling our leg?” we thought.
“I wonder what’s for dinner?” we thought.
The answers, in reverse order, were: chicken; no; they don’t; and keep reading.
We put on white lab coats and pocket protectors, and undertook a study to search for the missing impressions. To make a long story short: those impressions don’t materialize due to user abandonment. Users make requests for ads but leave before they watch the ads. And in some types of CTV platforms (keep reading, gentle reader; all will be revealed), these users account for a 20% reduction in use-rate.
A critical reader of this blog should be asking, “surely it’s not the case that at every ad break 20% of users just leave.” And the response to that is “well, sort of.” Before delving deeply into this mystery, let’s review basic facts about ad request timing.
In a typical linear OTT-viewing workflow, video players poll an SSAI server for manifests that list out the latest available video fragments for playback. The video player downloads the fragments and plays them one after the other. When the SSAI server hits an ad break in the source, it makes an ad request on behalf of each viewer and stitches in the returned ad fragments in the manifest returned to the video player. At that point in time, the video player is still in the process of downloading fragments that come before the ad, and so there is a natural latency, lasting anywhere from a few seconds to a minute, before the ad starts to play on the player. This gives some users plenty of time to make an ad request and leave before starting to play the ad and creating an impression. But surely not 20% of users?
The first clue in our analysis was looking at the average session duration for users – this was an unexpected revelation. A huge proportion – 75% of sessions – were shorter than 4 seconds in duration (Figure 1).
We didn’t know why so many users leave after short sessions, and we still don’t really know why; who knows anything, really? But we have theories and explanations which categorize the types of platforms on which this happens.
These are platforms which offer multiple channels (like most connected TVs do today) and platforms where turning the TV on will land a user natively on the connected TV viewing application. On such platforms, many users are changing through channels at any point in time. As they use their remote control to “channel-up/down” repeatedly, they flow in and out of many channels, creating short sessions – and triggering an ad request in some cases. Similarly, users that turn on a connected TV will briefly view a channel before switching to another app or view on the TV, creating the same pattern of short sessions.
Such “channel zapper” users create “fake inventory.” They make ad requests that look like there is an opportunity to fill an ad slot, hence making the total count of available ad slots look large. But since they leave quickly, that inventory is not fillable and the use rate is driven down.
Can these users be recognized when they join and maybe punished or at least shamed? Not really. When a user tunes in, there’s no way to know if they are going to leave soon or not. But it is possible to mitigate the negative effect of such channel zapper users by avoiding ad request calls for users that tune into a channel just during an ad break. When we did this, we saw the use rate increase by 25% (Figure 2) and the inventory decline by a corresponding amount (Figure 3).
We’ve already determined that you are a critical reader, and might we add that you’re looking very nice today, so at this point, you’re obviously asking “is this change – which leads to improved measurements – worth the loss of impressions for viewers that don’t abandon the channel?” (For your other immediate question, it’s chicken again tonight).
If we look at the impression count, again normalized to the period before making the SSAI change, we don’t see any significant change (Figure 4). A more in-depth analysis (not included here) suggests that there’s an impression reduction of less than 1%. Overall, all the parties involved decided that this nominal decrease was worth the resulting inventory and performance measurement accuracy and resulting improved forecasting, etc .
Is there a way to estimate the number of users that join just before an ad break, stick around for the ad break, make an ad request, and then leave? Those users could still be channel zappers, and they still contribute to a reduction in use-rate and an increase in “fake inventory.” We can estimate how many such users there are by looking at how well the system performs at peak efficiency when everything else is just right. That is, when there are no other causes of ad holes, the remaining apparent ad holes must be caused by these users. That’s not that easy to do, and it’s beyond the scope of this blog, but roughly speaking, there’s another 5%-10% of use-rate reduction that’s attributable to such users. Turning off the first ad call for all users as a way to mitigate this reporting issue is definitely not worth it, but turning off the ad call for users that join in the middle of a break generally is.
What we saw in this study was that not all ad holes are real, and that in fact, a large proportion of ad holes are just an artifact of the ecosystem – they’re one of the consequences of the Zany-Things-Humans-Do-When-Given-A-Remote-Control. (Also, don’t forget to eat your chicken).