What Is SGAI (Server-Guided Ad Insertion) for Streaming?

By Alex Topilski, Founder · June 29, 2026

Ad-supported video now accounts for a growing share of OTT subscriptions globally. For operators offering a free or discounted AVOD tier alongside a paid plan, the quality of ad delivery determines whether the revenue model actually pays. Standard ad insertion approaches have a hard trade-off: client-side insertion (CSAI) is easy to implement but vulnerable to ad blockers and gives fill rates of 70-80%; server-side stitching (SSAI) achieves 90-95% fill but requires expensive transcoding infrastructure that scales with your channel count, not your subscriber count. Server-Guided Ad Insertion (SGAI) is the architecture that threads this needle.

What Is SGAI?

SGAI stands for Server-Guided Ad Insertion. It is a hybrid ad delivery model where the server provides structured guidance to the client player - ad break timing, creative metadata, tracking requirements - and the client handles actual ad playback. The key distinction from pure SSAI is that no video frames are stitched together on the server. The key distinction from pure CSAI is that the server retains authority over where breaks appear and which impressions count.

The guidance typically takes two forms. First, SCTE-35 cue markers embedded in the HLS or DASH segment playlist at configured ad opportunity positions. Second, a sidecar API call that returns VAST 4.x creative metadata when the player hits a cue point. The player reads the marker, pauses the content stream, calls the ad decision server (ADS), pre-buffers the creative, plays the ad, fires tracking beacons at standard quartile events (25%, 50%, 75%, 100%), then resumes content at the EXT-X-CUE-IN marker - all without a single server-side frame stitch.

CSAI vs SSAI vs SGAI: How They Compare

Understanding where SGAI sits relative to the other two approaches makes it easier to decide which is right for your service. The comparison below covers the attributes that matter most to an operator choosing an ad delivery architecture.

Attribute CSAI SSAI SGAI
Who inserts the ad Client only Server Client (server-guided)
Ad blocking resistance Low High Medium
Typical fill rate 70-80% 90-95% 85-92%
Real-time bidding (RTB) Yes Harder Yes
Server transcoding overhead None High Low
Tracking accuracy Low High High
SCTE-35 support No Yes Yes

SSAI's high fill rate comes at a cost: stream stitching scales with the number of concurrent channels being transcoded, not just subscriber count. A 500-channel IPTV service running SSAI requires infrastructure capable of maintaining 500 parallel stitch pipelines. SGAI scales differently - server load is proportional to SCTE-35 injection throughput and VAST API calls, both of which are far lighter than real-time frame stitching.

How SGAI Works: The Technical Flow

A complete SGAI session for an HLS stream proceeds through these steps every time an ad break is reached:

  1. Manifest request - the player requests the master HLS manifest from the CDN.
  2. SCTE-35 marker injection - the middleware inserts EXT-X-CUE-OUT markers into segment playlists at configured break intervals. For long-form VOD, breaks typically appear every 300-900 seconds. For live news or sports, every 90-180 seconds.
  3. Player cue detection - the player encounters the EXT-X-CUE-OUT tag and pauses content delivery.
  4. ADS request - the player fires an SGAI session call to the ad decision server with subscriber ID, device type, content ID, viewport dimensions, and geography.
  5. RTB auction - the ADS runs a programmatic auction with a latency budget of 200ms and returns a VAST 4.x wrapper with creative URL, duration, skip settings, and beacon URLs.
  6. Creative playback - the player pre-buffers the creative (typically a 15-30 second pre-encoded MP4 or HLS segment) and plays it.
  7. Beacon firing - the player fires VAST quartile tracking beacons at impression, firstQuartile (25%), midpoint (50%), thirdQuartile (75%), and complete (100%).
  8. Content resume - the player reads the EXT-X-CUE-IN tag and resumes the main content stream.

The full cycle from EXT-X-CUE-OUT to first frame of ad should stay under 500ms to avoid perceived buffering. Operators who pre-fetch the ad creative during the content segment immediately before the break consistently hit this target even on 4G connections. The 200ms RTB budget is the binding constraint - ad networks that cannot respond within this window receive a no-bid, reducing fill rate.

SGAI and AVOD Revenue: The Math

For an operator already paying $0.20 per active subscriber per month for CrocOTT middleware, adding an AVOD tier creates a second revenue stream without displacing subscribers who prefer free access. Consider a 2,000-subscriber service where 40% choose an ad-supported tier at $0/month instead of paying $6/month for a premium subscription. Those 800 ad-supported subscribers need to generate ad revenue above what they would have contributed as paying subscribers to make the model viable.

At a $30 CPM (a realistic mid-tier OTT rate for 2026), with 4 ad impressions per viewer-hour and an average of 1.5 hours of daily watch time, a single active subscriber generates approximately $0.27 per day - around $8.10 per month in gross ad revenue. That is 35% above the $6/month SVOD subscription they replaced, before accounting for ad network revenue share (typically 20-30%). The math only holds if fill rates stay above 80%, which requires an integrated ADS and a properly configured SGAI pipeline. An operator whose current platform delivers 70% CSAI fill leaves roughly $2/subscriber/month on the table.

Ad Skip Control, Brand Safety, and CPM Premiums

One underappreciated advantage of SGAI over pure CSAI is that break authority lives on the server. When the middleware defines a 30-second break window via SCTE-35, the player SDK can disable seek controls for that window across every device in your fleet - iOS, Android, Smart TV, Roku, web - without platform-specific customizations. Advertisers pay a CPM premium of $10-20 per thousand impressions for guaranteed-completion spots versus skippable placements. Enforcing no-skip consistently across all 9 supported platforms requires a single source of truth for break timing, which is exactly what SGAI provides.

Brand safety also improves. Because SCTE-35 markers carry content metadata describing the surrounding segment, the ADS can apply content classification rules - excluding ads from appearing alongside violence, news, or sensitive categories that premium buyers want to avoid. This is a standard requirement for most programmatic guaranteed deals above $40 CPM and is straightforward to configure when the break signal contains content context. Pure CSAI implementations rarely pass this context reliably.

Implementing SGAI: What You Need

A production SGAI deployment has three integrated layers. All three must work together - a gap in any one reduces fill rate, breaks tracking, or creates buffering that viewer churn studies consistently link to a 15-20% increase in session abandonment.

  • Middleware with SCTE-35 ad marker support - your middleware must inject EXT-X-CUE-OUT/IN markers into HLS and DASH playlists and expose an SGAI session API. Configuration determines which channels carry ads, which subscriber packages are ad-supported, and how long each break window is. CrocOTT supports per-channel and per-package ad configuration, so you can offer ad-free premium subscriptions alongside ad-supported basic tiers from the same channel lineup without maintaining two stream paths. See the full feature list for details on ad tier configuration.
  • Player SDK with SGAI client implementation - white-label player apps must parse SCTE-35 markers, call the ADS endpoint, render VAST 4.x creatives, and fire tracking beacons. Once implemented, changing your ad network or renegotiating CPMs requires only an ADS endpoint configuration change - no app update or re-submission to app stores. CrocOTT's white-label app stack includes this as a configurable module across all supported platforms.
  • An ad decision server (ADS) or SSP connection - the endpoint that accepts subscriber context and returns VAST 4.x responses. For operators starting out, Google Ad Manager Video (GAM) is the most accessible option with a free tier up to $1 million per year in ad revenue. Larger operators typically connect to managed SSPs such as SpringServe, Magnite, or FreeWheel. The ADS choice does not affect the middleware or player SDK implementation - only the endpoint URL configured in CrocOTT.

When to Use SGAI vs SSAI

SGAI is the pragmatic default for most IPTV and OTT operators launching an ad-supported tier. If your channel count is under 200 and your peak concurrent viewers are under 5,000, SGAI gives you 85-92% fill rates at a fraction of the infrastructure cost of SSAI. The server-side transcoding required for SSAI at that scale adds $500-2,000/month in compute to a streaming stack that might already be running efficiently at $25-100/month for a FastoCloud media server instance.

SSAI makes sense when two conditions are met simultaneously: your advertiser contracts require stream-level ad blocking resistance (meaning even a determined user cannot skip), and your infrastructure is already running high-throughput transcoding for other reasons - so the stitching overhead is incremental rather than additive. Broadcasters with thousands of concurrent linear streams often already meet the second condition. For most OTT operators building on self-hosted middleware, SGAI is the correct starting point, with SSAI as an upgrade path if premium guarantee contracts demand it. The platform comparison page covers which middleware solutions support SSAI, SGAI, or both.

The Bottom Line

SGAI is not a compromise between CSAI and SSAI - it is the architecture that makes ad-supported streaming operationally viable for the majority of IPTV and OTT operators. The server controls where breaks go and what gets measured. The client handles playback at latency the viewer will not notice. Fill rates of 85-92% with low infrastructure overhead and full RTB support represent a meaningful improvement over the 70-80% fill that operators typically get from unguided CSAI deployments.

For operators running a self-hosted middleware like CrocOTT, enabling SGAI is primarily a configuration and ADS integration task - SCTE-35 marker intervals per channel, the ADS endpoint URL, and the per-package ad-supported flag. No new infrastructure, no additional stream paths, no per-channel compute overhead. If you want to explore what an SGAI-enabled ad-supported tier looks like in practice alongside your existing subscription tiers, start a free CrocOTT trial - no credit card required.