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
| Failure | VAST error | Cause | Fix |
|---|---|---|---|
| No ad fill | VAST 303 | No eligible creative; floor underbid; targeting too narrow | Check line item targeting; raise CPM floor |
| XML parse error | VAST 100 | Malformed VAST tag XML; special characters in metadata | Validate VAST tag XML; check creative metadata encoding |
| Video not found | VAST 400 | CDN link broken or expired; 404 response | Re-upload creative; check CDN URL expiry |
| Geo-blocked creative | VAST 403 | CDN blocks requests from India IP ranges | Ensure CDN has India delivery enabled; use India-localised CDN |
| Wrong VAST version | VAST 101 | Publisher player only supports VAST 2.0; tag is VAST 4.0 | Provide 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.