Browse the documentation

Connected TV and streaming apps

Applies to: Publishers

A video zone serves TV apps, streaming boxes and mobile video apps as well as websites. The player asks the ad server for ads with a VAST URL, the same way a web player does. For long streams the zone adds what TV players expect: several ads per break, a plan of all breaks, an image ad while the viewer pauses, and server-side ad insertion.

Before you start#

  • Create a video zone first: How to set up a video preroll zone.
  • Your player or streaming platform must support VAST. For several ads per break it must support ad pods (VAST 3 or later). For the break plan it must read VMAP.

Settings#

Open the zone and find Connected TV and streaming apps in Video Ad Settings.

Setting What it does Default
Ads per break 1 to 6. With more than 1, one answer holds several ads in a row (an ad pod). The same campaign or advertiser never shows twice in one break. 1
Most ad seconds per break Stops adding ads to a break once this many seconds are filled. 0 means no limit. 0
Mid-roll breaks (seconds) Where the breaks in a stream go, in seconds from the start, for example 600, 1200. Up to 20. none
No pre-roll Leaves the break before the stream out of the plan. off
Post-roll at the end Adds a break after the stream. off
Allow server-side ad insertion Lets your ad insertion server ask for ads on behalf of each viewer (see below). off
Pause ad One of your banner zones. When the viewer pauses, the player can show that zone's image ad. No pause ads

Click Save.

Player URLs#

Open the Ad Zone Code tab. TV and app players lists one URL for each case:

  • VAST tag for CTV / app players: one ad, or as many as Ads per break.
  • Ad pod (3 ads in one answer): change pod=3 to the number you want.
  • VMAP: the plan of all breaks. Players that read VMAP request each break themselves.
  • Pause ad (JSON) and Pause ad (VAST NonLinear): the ad to show when the viewer pauses. Show the image, and call the impression_url once it is on screen.
  • Server-side ad insertion: for an insertion server that stitches ads into the stream.

The parts in square brackets, such as [APPBUNDLE] and [IFA], are standard macros the player fills in: the app's bundle id, its store link, the device's advertising id, the limit-ad-tracking flag and the privacy string. Leave out whatever your player does not know.

The app bundle counts as the domain of the request. Advertisers can therefore include or block your app in their domain lists, and your statistics show it like a website.

Server-side ad insertion#

An insertion server asks for ads instead of the viewer's device. For those ads to match the viewer's country and device, the server sends the viewer's IP address and user agent with every request: ssai=1&ip=…&agent=…. The zone accepts this only with Allow server-side ad insertion on; otherwise such requests are refused.

Reaching TV viewers as an advertiser#

TV traffic is recognised from the device, or from device_type=3 when the player sends it. In a campaign's device targeting, pick TV to buy only TV screens. Upload video ads in 1080p for big screens. The ad server keeps the resolution you upload and converts the file to the standard H.264 format.