Reference

Standards a CTV ad server speaks

Six specifications do most of the work in streaming advertising. This is what each one is for, where it sits in the request path, and the parts that matter specifically for connected TV.

Where each one sits

StandardDirectionAnswers
SCTE-35Into the streamWhere does a break start, and how long is it?
VMAPPublisher → ad serverWhat is the schedule of breaks for this content?
OpenRTBAd server ↔ buyersWho wants this impression, and at what price?
Prebid ServerAd server ↔ many buyersCan I ask all of them at once?
VASTAd server → playerWhich creative plays, and what do I report?
ads.txtPublisher → buyersIs this seller allowed to sell this inventory?
Reading order

If you are new to this, follow the request path rather than the table: a break is signalled (SCTE-35 or VMAP), demand is solicited (OpenRTB, possibly through Prebid Server), a winner is returned (VAST), and buyers verify you were entitled to sell it (ads.txt).

VAST

Video Ad Serving Template, from the IAB. An XML document the ad server returns telling the player which creative to fetch, how long it runs, and which URLs to call at each playback milestone.

VAST is the lingua franca of video advertising: any ad server that speaks it can talk to almost any player without bespoke work. It is why "standards-based" is not marketing filler — it is the difference between a two-week integration and a two-quarter one.

What matters for CTV

  • Wrappers add latency. A VAST response can point at another VAST response. Each hop is a network round trip, and on a television that lands in the viewer's timeout budget. Chains are the most common cause of unfilled avails that "should" have filled.
  • Creative must be conditioned for streaming. A single MP4 has to be transcoded into segments matching your delivery profile before it can be stitched — see what SSAI requires.
  • In server-side insertion the server fires the tracking URLs, not the player. That changes what the numbers mean — see beaconing.

VMAP

Video Multiple Ad Playlist. Where VAST describes one advertisement, VMAP describes the schedule of breaks around a piece of content — pre-roll, mid-rolls at given offsets, post-roll — and what should fill each.

VMAP is how you express ad load declaratively instead of hard-coding break positions into every player you ship. Change the document, change the ad experience, without an app release.

OpenRTB

The IAB specification for how programmatic bid requests and responses are structured between supply and demand platforms. Version 2.6 is the one that matters for connected TV: it added podded requests, so a whole ad pod can be auctioned as a unit rather than slot by slot.

Why podded requests changed things

Auctioning each slot independently means the ad server cannot trade a weaker bid in one position for a stronger combination across the break, and cannot reliably enforce competitive separation before bids are in. Pod-level requests let the decisioning stage optimise the break as a whole — which is where a meaningful part of yield improvement comes from.

Prebid Server

An open-source, server-side implementation of header bidding. It collects bids from many demand partners in one call, on a server, rather than in the viewer's device.

For streaming this is the only practical option. Connected-TV runtimes have very little processing headroom, and running an auction in a smart TV's JavaScript engine costs latency you cannot afford. Moving it server-side removes the constraint.

If you already run Prebid Server, adding GoGo CTV as a demand source is a configuration change rather than an integration — see server-side bidding.

SCTE-35

The broadcast standard for carrying cue messages inside a transport stream. It is how a live stream says "a break starts now and runs for thirty seconds", inherited directly from linear television.

In HLS these markers surface in the manifest as EXT-X-CUE-OUT and EXT-X-CUE-IN tags; in DASH, as period boundaries or event streams.

#EXT-X-CUE-OUT:30.000    <- break opens, 30 seconds available
... ad segments are inserted here ...
#EXT-X-CUE-IN           <- break closes, content resumes
The most common live-stream integration problem

If markers are missing, mistimed, or stripped by an upstream packager, the insertion layer has nothing to act on and the break either does not fill or fills to the wrong duration. Before blaming the ad server for unfilled live inventory, confirm the markers are arriving intact — this is where the fault usually is.

ads.txt and app-ads.txt

Plain text files you publish declaring which companies are authorised to sell your inventory. Buyers fetch them and filter out supply that is not declared.

This is not a formality. Many buyers drop unauthorised supply automatically, so a stale or missing file suppresses demand before anything reaches your auction. ads.txt covers web; app-ads.txt covers apps and connected-TV environments, and is fetched via the developer URL declared in your app store listing.

Check this first when fill drops

An out-of-date authorisation file is one of the cheapest and most overlooked causes of falling fill rate. It costs nothing to verify and takes minutes to correct.

What GoGo CTV supports

The ad server speaks VAST, VMAP, OpenRTB 2.6 and Prebid Server, and reads SCTE-35 signalling for live insertion.

Version specifics need confirming

Exact supported versions, which optional macros and extensions are honoured, and any known limitations are not published here. Ask for the current conformance details at contact@gogoctv.com rather than assuming from this page.

Next

Get started

Check your setup against the spec.

A solutions engineer can review your current signalling and demand configuration and tell you what would change.