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.
| Standard | Direction | Answers |
|---|---|---|
| SCTE-35 | Into the stream | Where does a break start, and how long is it? |
| VMAP | Publisher → ad server | What is the schedule of breaks for this content? |
| OpenRTB | Ad server ↔ buyers | Who wants this impression, and at what price? |
| Prebid Server | Ad server ↔ many buyers | Can I ask all of them at once? |
| VAST | Ad server → player | Which creative plays, and what do I report? |
| ads.txt | Publisher → buyers | Is this seller allowed to sell this inventory? |
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).
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.
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.
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.
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.
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.
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
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.
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.
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.
The ad server speaks VAST, VMAP, OpenRTB 2.6 and Prebid Server, and reads SCTE-35 signalling for live insertion.
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.
A solutions engineer can review your current signalling and demand configuration and tell you what would change.