Skip to main content

Frequency Documentation

Ad Insertion

Frequency provides multiple advertising services. These include:

  • Advertising placement in all scheduled programs

  • Interactive, frame-accurate, tools for advertising insertion

  • Automated creation of advertising pods from imported “cue points” metadata

  • Single-click utility for stretching advertising pods to fill target program duration

  • Delivery of advertising markers in all output streams (HLS, MPEG-TS) via SCTE-35 markers

  • Server Side Ad Insertion (SSAI) for content provides and distribution partners when required

Distributor Advertising Integration Models

Below is a table of the advertising services required by each supported Frequency Studio integrated distribution partner. Note that all distributors require and accept Frequency’s SCTE-35 Markers, but only some require Frequency’s SSAIservices, while the remainder offer this service themselves.

Distribution Partner

SCTE-35 Markers

Frequency Server-Side Ad Insertion (SSAI)

The Roku Channel



Vizio Watch Free









TiVo Plus



Brightcove Beacon





Samsung TV+


Sling TV












Supported Formats

DAI Output


Cue Points


SSAI supported templates

VAST 3.0

Ad Fallback

See Linear Creatives



Cue Points

Frequency Studio's powerful tools allow you to create a publicly accessible HLS manifest compatible with most major SSAI providers and passes frame-accurate cuepoints which are setup either in MANAGE or during content ingestion to delineate ad avails in-stream. We currently support #EXT-X-VERSION:3 and pass cue point duration through EXT-X-CUE SCTE ad markers. These SCTE markers allow you to set ad pod duration and program identifiers to tie in to your EPG metadata in your preferred Ads Decisioning Server (ADS).

Example EXT-X-CUE Markers


SSAI Provider Compatibility

Adobe Primetime


Amazon Mediatailor

Google DAI


Server Side Ad Insertion (SSAI)

Frequency SSAI can support the following VAST 3.0 / SSAI enabled Ads Decisioning Servers (ADS). If your provider is not on this list, please email to certify your ad server for SSAI delivery.

ADS Support

Google Ad Manager 360




Linear Content Ad Behavior

In live streams, Frequency SSAI always performs ad replacement, preserving the total time between the ad markers as closely as possible. When ad markers include the DURATION attribute, we use the value to determine the duration of the ad break. Every CUE-OUT indicator must have a matching CUE-IN indicator in live workflows.

Pre-Roll Ads

Frequency SSAI can insert ads at the beginning of a playback session, before the main content begins in the manifest playback.

Mid-Roll Ads

Frequency SSAI tries to play complete ads, without clipping or truncation. Whenever Frequency SSAI encounters an ad marker that indicates an end to the ad break, it returns to the underlying content. This can mean shortening an ad that is currently playing. At the end of the duration, Frequency SSAI returns to the underlying content. If Frequency SSAI runs out of ads to play for the duration of an ad break it will default to the Ad Fallback Linear Creative. This usually happens when there aren't enough transcoded ads to fill up the duration of the ad break.

Dynamic Ad Variables

We can pass on the following dynamic ad variables into your ad tag. Some variables are generated by our vendor and the rest are obtained from the manifest and the player's session initialization request.




A number that represents the position of an ad avail in an index. At the start of a playback session, Frequency SSAI creates an index of all the ad avails in a manifest and stores the index for the remainder of the session. When Frequency SSAI makes a request to the ADS to fill the avail, it includes the ad avail index number. This parameter enables the ADS to improve ad selection by using features like competitive exclusion and frequency capping.


A random number between 0 and 10,000,000,000 that Frequency SSAI generates for each request to the ADS. Some ad servers use this parameter to enable features such as separating ads from competing companies.


The value parsed by Frequency SSAI from the SCTE-35 splice_insert field unique_program_id. The ADS uses the unique program ID (UPID) to provide program-level ad targeting for live linear streams. If the SCTE-35 command is not splice insert, Frequency SSAI sets this to an empty value.


The duration in milliseconds of the ad availability slot. The default value is 300,000 ms. Frequency SSAI obtains the duration value from the input manifest as follows:

For HLS, Frequency SSAI obtains the duration from the #EXT-X-CUE-OUT: DURATION or from values in the #EXT-X-DATERANGE tag. If the input manifest has a null, invalid, or 0 duration for the ad avail in those tags, Frequency SSAI uses the default.


The duration in seconds of the ad availability slot, or ad avail. Frequency SSAI determines this value the same way it determines [session.avail_duration_ms].


The remote IP address that the Frequency SSAI request came from. If the X-forwarded-for header is set, then that value is what Frequency SSAI uses for the client_ip.


A unique numeric identifier for the current playback session. All requests that a player makes for a session have the same id, so it can be used for ADS fields that are intended to correlate requests for a single viewing.


Usually, the URL of the page that is hosting the video player. Frequency SSAI sets this variable to the value of the Referer header that the player used in its request to Frequency SSAI. If the player doesn't provide this header, Frequency SSAI leaves the [session.referer] empty. If you use a CDN or proxy in front of the manifest endpoint and you want this variable to appear, proxy the correct header from the player here.


The User-Agent header that Frequency SSAI received from the player’s session initialization request. If you're using a CDN or proxy in front of the manifest endpoint, you must proxy the correct header from the player here.


Alternative to []. This is a unique identifier for the current playback session, such as the following:


Player Data

We can pass on data received from the player to the ADS as long as the session initialization call from the player passes on the key-value pairs as the value of a single query parameter using URL encoded pairs. Example request:


We can provide reporting for SSAI events handled by Frequency in our ANALYZE tool.