Creative Deduplication: A key to providing a TV-like ad experience on OTT.
Nothing frustrates people more than having to sit through the same ad multiple times. It’s a waste of time, of money, and it can even have a negative impact on the consumer’s affinity for the brand.
Unfortunately, this very basic problem is one of the hurdles preventing Connected TV apps from monetizing their inventory programmatically. If single programmatic platforms had difficulty dealing with the issues, imagine what it’s like for a header bidding platform like Publica. For those who aren’t familiar with our solution, Publica runs a server-side auction between 10 video SSPs and packages the ads up for OTT delivery. That is why we took creative deduplication very seriously: no sense in connecting more buyers if it’s to show the same ad over and over again.
Most programmatic platforms use the OpenRTB bidresponse.seatbid.bid.adomain field, which is defined as follows in the spec: “Advertiser domain for blocklist checking (e.g., “ford.com”). This can be an array for the case of rotating creatives.”
Well the first issue is blatant right from the spec: this field is meant to be used for block lists and can be an array so you shouldn’t expect one-to-one match. But more importantly “adomain” is only passed about 33% of the time in bid responses. You add to that the fact that each platform has different naming conventions for advertiser domain, you multiply that by 10 platforms and you soon understand the problem.
So we had to go a step deeper. Using the Unique Creative ID present in the Vast response is a good start, especially if you combine it with the AdTitle and Description tags of the Vast XML, but again these fields aren’t passed in all cases.
So what is the most common part of any video ad? Well, the video part … duh! More precisely the Mediafile itself.
The Publica engineering team has built a unique mediafile hashing system which allows us to assign a unique hash id to each mediafile that comes across our platforms. The deduplication process happens at the ad break level based on our internal Publica hash ID which is stored in a lookup table for 24 hours. You might be wondering if 24 hours is enough time, but since the goal is simply not to deliver the same ad twice to the same user within an ad break which is at most 2-3 minutes long… 24h might actually be a bit of an overkill 😉
At Publica, our goal is to help advertising budgets follow the users. As Connected TV continues to take over Traditional TV usage, we are building the tech to make ad dollars follow the trend.