Tech Stack ยท Ad Serving

CTV ad serving in India explained: the full sequence from break to beacon

Ad serving in CTV is the process by which an ad creative is selected, retrieved, and played within a streaming app during an ad break. It involves the publisher's ad server, VAST tags, CDN delivery, and a series of tracking events that fire as the ad plays. Understanding how India CTV ad serving works end-to-end — and where it commonly fails — equips buyers and publishers to diagnose delivery problems rather than simply reporting them.

The CTV ad serving sequence

When a viewer reaches an ad break in a CTV app, the following sequence occurs:

Step 1 — Break trigger: The CTV app player detects an ad break point in the content stream (via SCTE-35 markers in SSAI, or a programmed break in the app logic for CSAI).

Step 2 — Ad request: The app makes an ad request to the publisher's ad server (Google Ad Manager, JioHotstar's proprietary ad server). The request includes device information, content context, and deal ID information.

Step 3 — Auction and selection: The ad server runs its waterfall — checking for programmatic guaranteed deals first, then PMP deals, then open auction bids from SSPs. The highest-paying eligible bid wins.

Step 4 — VAST tag delivery: The ad server returns a VAST tag to the player. The VAST tag is an XML file specifying the video creative URL (on a CDN), tracking event URLs, and ad duration.

Step 5 — Creative fetch: The CTV player requests the video file from the CDN URL in the VAST tag. The CDN delivers the video file to the player's buffer.

Step 6 — Ad playback and tracking: The ad plays. As playback progresses, the player fires VAST tracking beacons: impression (start), first quartile (25%), midpoint (50%), third quartile (75%), complete (100%). These beacons are fired to the ad server, DSP, and any third-party verification vendors (DoubleVerify, IAS).

Step 7 — Content resumes: After the ad completes (or all ads in the pod complete), the content stream resumes.

SSAI vs CSAI ad serving in India

The sequence above describes CSAI (client-side ad insertion) — where the app player makes live ad requests during the break. SSAI (server-side ad insertion) stitches ads into the content stream before delivery — steps 2–5 happen server-side, and the viewer receives a seamless stream. JioHotstar uses SSAI for its premium inventory. Most other India publishers use CSAI via Google Ad Manager. The user experience with SSAI is smoother (no buffering at breaks); the measurement visibility is lower (third-party tracking is harder).

Common India CTV ad serving failure points

FailureVAST errorCauseFix
No ad fillVAST 303No eligible creative; floor underbid; targeting too narrowCheck line item targeting; raise CPM floor
XML parse errorVAST 100Malformed VAST tag XML; special characters in metadataValidate VAST tag XML; check creative metadata encoding
Video not foundVAST 400CDN link broken or expired; 404 responseRe-upload creative; check CDN URL expiry
Geo-blocked creativeVAST 403CDN blocks requests from India IP rangesEnsure CDN has India delivery enabled; use India-localised CDN
Wrong VAST versionVAST 101Publisher player only supports VAST 2.0; tag is VAST 4.0Provide VAST version compatible with publisher's ad server

Ad server waterfall in India CTV

India CTV publishers typically run a priority-based waterfall: (1) Programmatic Guaranteed deals at negotiated CPM — served first if matching; (2) PMP deals — served at floor CPM if PG demand is not present; (3) Open exchange bids from SSPs — serve if CPM clears the publisher's floor; (4) Direct IO campaigns — guaranteed campaigns fulfil their delivery commitments at any waterfall level with priority overrides; (5) House ads — fill unsold inventory. Understanding the waterfall explains why PMP deals sometimes underdeliver — if PG demand fills the slot first, the PMP deal never gets a chance to bid.