Meet the Revidd team 🚀 at StreamTV Denver 2026

Element Image
Element Image

Revidd team at StreamTV Denver 2026

Element Image

Meet the Revidd team at NAB 2026

Meet the Revidd team 🚀 at StreamTV Denver 2026

Element Image

Meet the Revidd team 🚀 at StreamTV Denver 2026

Element Image
Element Image

Revidd team at StreamTV Denver 2026

How to Set Up Programmatic Ads on Your OTT Platform

How to Set Up Programmatic Ads on Your OTT Platform

A step-by-step guide for broadcasters on setting up programmatic ads on an OTT platform: ad server, SSAI, SCTE-35 ad pods, frequency capping, and demand.

Diagram of a programmatic ad workflow on an OTT platform showing SCTE-35 cue points, an SSAI stitcher, and an ad server returning ad pods

How to Set Up Programmatic Ads on Your OTT Platform

By Sampath Mallidi, CEO of Revidd · Last updated June 2026

To set up programmatic ads on an OTT platform, you connect a video ad server or SSP to your player, enable server-side ad insertion (SSAI) to stitch ads into the stream, mark ad breaks with SCTE-35 cue points, define ad pod length and frequency caps, and wire in demand. Done in that order, ads serve cleanly across every device. The result is programmatic ads on OTT that fill, render, and pay.

Most broadcasters get stuck because they treat ad serving as one switch. It is not. It is five decisions that have to line up: where the ad call goes, how the ad gets into the stream, where breaks are allowed, how often a viewer sees an ad, and which buyers can bid. This guide walks each one in the order you actually configure them.

TL;DR

  • Ad server or SSP first. This is the decision engine. Google Ad Manager, FreeWheel, and Magnite are the common choices for CTV and OTT.

  • SSAI does the stitching. Server-side insertion splices ads into the video so they look like part of the program and survive ad blockers.

  • SCTE-35 marks the breaks. Cue points tell the system exactly where an ad pod can open, frame-accurate, on live and FAST channels.

  • Ad pods and frequency caps control the viewer experience. Pod length sets how much ad time per break. Frequency caps stop the same spot repeating.

  • Brand safety and demand come last. Block unwanted categories, then connect direct deals, programmatic guaranteed, and open auction demand.

What does "programmatic ads on OTT" actually mean?

Programmatic ads on OTT means ad slots in your streaming content are filled automatically through real-time technology rather than sold by hand. When a viewer hits an ad break, your platform sends a request to an ad server or SSP, that system runs an auction or applies a direct deal, and a creative comes back and plays. No insertion order emailed back and forth, no manual trafficking per show.

This matters because the money is moving here. Digital video ad spend is projected to reach $72 billion in 2025, growing 14 percent year over year, with connected TV alone expected to hit $26.6 billion, according to the IAB 2025 Digital Video Ad Spend report. A broadcaster with a library and a growing audience cannot capture that demand by selling spots one at a time.

Programmatic applies to two ad models on your platform: AVOD (ad-supported on-demand) and FAST channels (ad-supported linear). The plumbing is mostly shared. If you want the model context first, our explainer on how AVOD works covers the revenue side, and this post covers the technical setup.

Step 1: Choose your ad server or SSP

Your ad server is the decision engine that receives every ad request and decides what plays. Pick this before anything else, because the rest of the stack points at it. For OTT and CTV, the established options are Google Ad Manager, FreeWheel, and Magnite. Each handles VAST and VMAP responses, pod-level decisioning, and CTV-specific signals.

Here is the practical difference between the layers people confuse:

Component

What it does

Examples

Ad server

Receives the ad request, decides what plays, returns the creative

Google Ad Manager, FreeWheel

SSP (supply-side platform)

Connects your inventory to programmatic demand and runs the auction

Magnite, PubMatic

SSAI / stitcher

Splices the returned ad into the video stream server-side

Built into your OTT platform

Player / SDK

Requests the ad and reports impressions back

Google IMA SDK

What you configure here: an ad unit or inventory definition for each placement (pre-roll, mid-roll, FAST channel break), the ad request macros that pass device type, content metadata, and consent, and the VAST tag URL that your platform will call. Get the macros right. Missing device or app-bundle signals is the most common reason CTV demand does not bid.

Step 2: Turn on SSAI to stitch the ads

Server-side ad insertion (SSAI) stitches ads into the video stream on the server so they play as one continuous file, frame for frame matched to the program. This is what makes OTT ads render reliably across Roku, Apple TV, Samsung, LG, Vizio, and mobile, and it is why ad blockers cannot strip them out the way they strip client-side ads.

The alternative, client-side ad insertion (CSAI), asks the player to fetch and play the ad. It is simpler but breaks more: buffering at the break, blocked requests, and inconsistent behavior across TV operating systems. For linear FAST channels and any premium AVOD experience, SSAI is the standard.

A few things to get right at this step. Ads should be transcoded to match the stream's bitrate and resolution, an HD ad in a 4K stream looks wrong. Ad-stitching also needs an ad filler or slate to play when no paid ad comes back, so the channel never shows a black gap. If you want the full mechanics, our guide to what SSAI is and how it works goes deeper than this section can.

On Revidd, SSAI and dynamic ad insertion are part of the platform, so the stitcher and the Ad Filler Playlist are configured in the same console as the rest of your channel, not bolted on from a separate vendor. The Ad Filler Playlist is a named channel setting: it plays during ad breaks when no paid ad comes back, so the channel never shows an empty gap. Paired with it is the Rescue Playlist, a backup that auto-plays if scheduled content fails or is missing, so the channel stays on air. This is the broadcast-grade plumbing that runs across the platform, which reaches more than 38 million viewers in 15 countries.

Step 3: Mark your ad breaks with SCTE-35

SCTE-35 is the signaling standard that marks exactly where an ad break can open in a live or linear stream, frame-accurate, so the SSAI system knows when to call for ads and how long the break is. Think of it as a flag embedded in the stream that says "ad pod starts here, runs 90 seconds." Without clean cue points, mid-rolls land in the wrong place or breaks run long.

For on-demand AVOD, you place cue points at the timestamps where mid-rolls should fall. For live and FAST channels, SCTE-35 markers are inserted into the transport stream, either generated at the encoder or set on the schedule. Our primer on what SCTE-35 is explains the cue types and how they flow downstream.

On a Revidd FAST channel, you enable SCTE, set the Ad Break Duration in seconds, and use Insert Ad Breaks to auto-add breaks at configured times in the drag-and-drop Program Manager. The Program Manager shows Channel Time, UTC, and Browser Time together so you do not misplace a break across time zones, which is the kind of error that breaks ad serving on a live linear feed. The HLS output carries the markers downstream to the ad platform. That is the broadcaster-side configuration: you schedule where ads go on the timeline, the platform handles the signaling. Operators such as Niche Network TV run 200+ linear and re-stream channels on this setup, and TrueVi runs a multi-channel FAST ecosystem on the same tooling.

Mid-content checkpoint

If you are a faith network, regional station, or sports rights holder sitting on a library and trying to turn views into ad revenue, the setup above is exactly what slows teams down without an OTT engineer. Revidd ships the ad server integration, SSAI, and SCTE-35 tooling in one platform. Book a demo and we will walk your specific channel through the ad workflow.

Step 4: Set ad pod length, structure, and frequency caps

An ad pod is the block of time in a break that holds one or more ads, and frequency capping limits how often a viewer sees the same ad or ad category. Pod structure controls the load: a 90-second pod might hold three 30-second spots or six 15-second spots. You define maximum pod duration, how many ads can fill it, and whether the pod can be partially filled.

Frequency capping is what keeps viewers from churning. Set caps per viewer per session and per day, both at the creative level and the advertiser level. A viewer who sees the same insurance ad eight times in one episode is a viewer who leaves. This is a known driver of completion rates on ad-supported streaming.

Practical defaults broadcasters use as a starting point:

  • Pre-roll: one pod, 15 to 30 seconds, before content starts.

  • Mid-roll pods: 60 to 120 seconds, spaced by content length, not too frequent.

  • Frequency cap: 2 to 3 exposures per advertiser per hour as a baseline, then tune.

  • Competitive separation: no two ads from competing brands in the same pod.

Step 5: Set brand safety rules

Brand safety controls which advertisers and ad categories are allowed to run against your content, before you open the doors to programmatic demand. You block categories that clash with your audience (gambling, alcohol, political, competitor brands) and set content-level rules so sensitive programming does not get inappropriate ads. For a faith broadcaster or a kids channel, this is not optional.

Configure block lists at the ad server, allow lists for advertisers you have vetted, and category exclusions per content type. Programmatic open auctions bring volume but also bring creatives you did not hand-pick, so the safety layer is what lets you accept that volume without surprises. Set it before you connect open demand, not after.

Step 6: Connect demand

Connecting demand means wiring the buyers who will actually pay for your inventory, in priority order so your highest-value deals fill first. You typically layer three tiers: direct-sold deals you negotiated, programmatic guaranteed and private marketplace (PMP) deals at fixed or floor prices, and open auction demand from SSPs to fill whatever is left.

Set the priority and price floors in your ad server so direct and PMP deals win before open auction. This is how you protect rates while still filling unsold inventory. For broadcasters new to this, start with a single SSP connection and your direct deals, prove the fill and the rendering, then layer in more demand partners. For how this feeds your broader monetization mix across SVOD, AVOD, and FAST, see our breakdown of FAST channel revenue models.

How long does it take to set up programmatic ads on OTT?

With the right platform, the technical setup of programmatic ads on OTT is days, not months, because the ad server integration, SSAI, and SCTE-35 tooling are already built. The longer pole is usually demand: negotiating direct deals, getting approved by SSPs, and passing the brand-safety and inventory-quality checks buyers run. The plumbing is fast. The business relationships take longer, and they are worth doing right.

Building this stack in-house is the slow path. You would be integrating an ad server, a stitcher, SCTE-35 signaling, and per-device player SDKs, then maintaining them across Roku, Apple TV, Android TV, Samsung, LG, and Vizio as each platform updates. That is full-time engineering work. A plug-and-play OTT platform collapses it into configuration: Revidd delivers a broadcaster's branded apps from one integration across 50+ device endpoints in as little as one to two weeks. The honest caveat is the part outside any vendor's control: each device's app store runs its own review before your app goes live, so plan that review time per platform on top of the build.

Set up programmatic ads without building the stack

If you run a broadcasting business with a real library, faith, sports, ethnic and diaspora, or regional TV, the ad revenue is there. What stops most teams is the engineering: ad server, SSAI, SCTE-35, frequency caps, brand safety, and demand, all working together across nine device types. Revidd delivers that as one platform. The platform reaches more than 38 million viewers across 15 countries, with dynamic ad insertion, SSAI, ad server integration, and SCTE-35 built in, so you configure the ad workflow instead of building it.

Request a demo and we will set up a programmatic ad workflow against your actual content and devices, so you can see the breaks, the pods, and the fill before you commit.

FAQ

What is the difference between SSAI and an ad server?
The ad server decides which ad plays; SSAI puts that ad into the video stream. The ad server (Google Ad Manager, FreeWheel) runs the decision and returns a creative. SSAI is the stitching layer that splices that creative into the program server-side so it plays smoothly across every device. You need both.

Do I need SCTE-35 for AVOD or just for FAST channels?
SCTE-35 is essential for live and FAST channels, where it marks ad breaks in real time. For on-demand AVOD, you place cue points at fixed timestamps instead, which does not strictly require SCTE-35 signaling. Any platform running linear FAST channels needs SCTE-35; pure VOD ad insertion can use timed cue points.

What is an ad pod in OTT advertising?
An ad pod is the block of time in an ad break that holds one or more ads. A 90-second pod might contain three 30-second spots. Pod configuration controls maximum duration, how many ads can fill it, and whether partial fills are allowed, which directly affects ad load and viewer experience.

Can I use Google Ad Manager, FreeWheel, or Magnite with my OTT platform?
Yes, these are the standard ad-tech systems for OTT and CTV and integrate with OTT platforms that support VAST and SSAI. Google Ad Manager and FreeWheel are ad servers; Magnite is a supply-side platform that connects programmatic demand. A capable OTT platform passes the required CTV signals so these systems can decision and bid correctly.

Why are my OTT ads not filling?
The most common cause is missing or malformed ad request signals, such as device type, app bundle ID, or consent, which stops CTV demand from bidding. Other causes are price floors set too high, brand-safety blocks that are too broad, or no demand partners connected yet. Check the ad request macros first.

Is server-side ad insertion better than client-side for OTT?
For OTT, yes, in most cases. Server-side ad insertion (SSAI) stitches ads into the stream so they render reliably across TV operating systems and survive ad blockers, while client-side insertion (CSAI) is simpler but breaks more often on connected TV. SSAI is the standard for FAST channels and premium AVOD.

{{Schema JSONLD}}