How to optimize video ad timeouts

TLDR;

I’m going to assume you use DFP because it is by far the most common, but the same concepts apply to all ad servers. Additionally, I’m assuming you are using the IMA SDK which is also the defacto way of doing ads with a few exceptions.

If your site uses videos but you are not monetizing them, you are missing out on a huge opportunity. Video advertising is more profitable than display ads (read banners) and modern video players offer advertising as part of their features (most of them through their paid version). If you want a free version that kicks ass you are welcome to try this beauty [Video Block with Ads] (yes, I wrote it #shamelessplug).

Once you start using ads, everything feels great and your ads are firing just dandy. But there is a dirty monster lurking behind the scenes: VAST errors (*).

Most of the times, when there is a VAST error you lost money. Plain and simple. The same applies to banner ads, they just happen to load far more consistently. Not all errors can be fixed or are timeout related, but, assuming your setup is correct, a lot of them will be (301, 402 timeouts). The issue is that the default timeouts are just not that great. Adjusting your timeouts to help these issues could mean a 10% to 20% revenue improvement!

All players (most) have these timeouts available but may be named slightly different:

  • VAST Load Timeout (usual default is 5 secs): How long to wait for the server to respond to a request directly after it is been made. This timeout is linked to IMA SDK (google.ima.AdsRequest).
  • Load Video Timeout (usual default 8secs): After receiving the request above, how long does the player wait for the video ad to start playing. Video Ads are regular videos just like yours, they just happen to have a link. Therefore, the same old-school rules apply like “is this ad too heavy?”. This timeout is particularly important. It is linked directly into the IMA SDK. (google.ima.AdsRenderingSettings)
  • Max Timeout (defaults are all over the place here): This is the time the player allows for the steps above combined and it is the ultimate cutoff. Think of it this way: once this timeout has passed, the advertising mechanics will be skipped altogether and your video will play. Keep in mind, that at this point the ad request has gone through but the ad will not play.

The key with timeouts is balance: You can wait forever on the ads and sacrifice UX to maximize impressions and minimize errors OR you can wait very little to maximize your “video plays” at the cost of impressions. Additionally, you should consider your visitors. To maximize impressions, if they are mostly on mobile devices, timeouts should be higher than if they were on a desktop machine, but mobile users are also less patient.

With that in mind, the first thing you need to ask yourself (and/or your team) is “What is more important revenue or UX?” … Inevitably, the answer is, of course, both. That is not a good answer. Even though you want both, one is always more important than the other. If you really can’t make your mind, the answer is revenue. The issue being nobody wants to say “the hell with UX, we want the money”.

How to

  1. Establish an acceptable error rate (Errors / Page views %). Be realistic! it is impossible to have a 0% error rate. But what is normal you ask? good luck with that too. DFP will tell you one thing, a seasoned adops person will tell you another and some article online will tell you something else. I would say it depends on your setup, you visitors’ tech and you overall goal. Around 20% is decent but can be improved. More than 30% something is up. Less than 10% … teach me sensei.
  2. Find a good sample size (how to): How many page views is enough to conduct experiments. Another way to put this is how long will the experiment run. Very high traffic sites can get good numbers after only a couple of hours, lower traffic sites may want to run for a couple of days. Too short/few = bad conclusions, too long/many = wasted time.
  3. Establish a ceiling. Set all the timeouts to something ridiculously high: 30 / 30 / 60 (vast load timeout / loadVideo timeout / Max timeout) notice the 60s is 30+30 … as in 20 / 20 / 40. Run this for the designated time (#2). This step will be AWFUL for UX in some cases because no video will play for a potential 60 seconds, but will show you the very best you can possibly get impression-wise.
  4. Establish a floor. This is the opposite of the above. Set timeouts to something extremely low 5/5/5. Only people with amazing devices and great internet speed will get ads. Your error rate will shoot way up and your plays will do so too. In an ideal world, ads would be instant which is what we strive for. Again, run this for the same amount of time or page views you did on #3.
  5. Time to move the experiment. The ceiling (#3) will show you how bad or good the defaults are. Now I would move to a middle ground (15/15/15) between ceiling and floor to see how that compares to your acceptable error rate(#1). Run for the designated time(#2), remeasure and readjust until you are happy. Yes, it is slow and stupid, but it works.

It is imperative you compare using percentages (See #1). Absolute numbers are deceiving and will make you think you are doing great when you aren’t.

Tip: On step #5 adjust the timeouts drastically. Tiny little changes will only confuse you because they don’t affect percentages enough. Let’s say you tried 15/15/15 and your error rate ended up being 18%, then you tried 13/13/13 and the error rate is 17.9% or 18.1% is it really better or worse? such a small change could be a consequence of traffic variance or video inventory, or god knows what … so many things. But if the second time around you try 8/8/8 and the error rate is 22% you know you’ve gone down too much, but if it is 17.5% you should probably keep the lower timeout. I would be happy at that point, but it is all about the acceptable number you figured out on step #1.

Keep in mind, crazy high timeouts don’t mean that you will wait crazy long! If the timeouts are 30/30/30 but your connection is good, you will only wait for a couple of seconds for the ad. It is only the edge cases, that have crappy everything, you are trying to figure out. The lower end will affect everybody! make sure you don’t go too low, you are just trying to establish what is the best you can do.

Last but not least: In my experience, the VAST Load Timeout (the first one in the post) is hardly ever a problem. Because this is about your ad server, it is their business to send a response as fast as possible, and they all do. DFP usually responds in milliseconds. Keep this timeout low; 5 seconds is more than enough. The third timeout (Max Timeout) should be only as long as the second (loadVideo timeout) because the first timeout is mostly ignored and the second one is long enough. This seems to work nicely for me 5 / 22 / 20 but all sites are different.

What did you end up doing?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.