Guide · Publisher Monetisation

CTV app monetisation guide for India: from zero to live

Setting up ad monetisation on a CTV app in India requires connecting four systems that most app developers have not worked with before: an ad server, one or more SSPs, an SSAI solution, and a measurement layer. Get any one wrong and the result is either zero ad revenue (common) or poor revenue with degraded user experience (also common). This guide walks through each decision in sequence — from the first technical integration to yield optimisation at scale — with India-specific context throughout.

1 Monetisation readiness: are you ready?

Before connecting an ad server, verify that your app meets minimum ad monetisation requirements. The threshold is not technical — it is audience. Ad monetisation on a CTV app with under 50,000 monthly active users will generate less revenue than the time and cost of setup. India CTV programmatic CPMs run Rs 40–150 for a new app without direct sales. At 50,000 MAUs, assuming 30-minute average sessions and 2 ad breaks per session at 2 ads per break with 30% programmatic fill and Rs 70 CPM, monthly revenue is approximately Rs 12,600. That does not justify a full ad operations setup. The minimum viable audience for a standalone CTV monetisation setup is approximately 100,000–150,000 MAUs, or a clear path to get there within 6 months.

Check your readiness first

Use the StratPulse App Monetisation Readiness Assessment to evaluate your current state against the minimum requirements for CTV ad monetisation. It covers audience scale, technical readiness, content rights clearance, and ad break structure — the four dimensions that determine whether monetisation will generate meaningful revenue at your current stage.

2 Ad server selection

An ad server is the central system that manages which ad runs, when, at what CPM, from which demand source. For CTV app monetisation, the ad server sits between your SSAI system and your SSP demand sources. It handles ad decisioning, frequency capping, pacing, and reporting. For India CTV publishers, there are two practical options:

Google Ad Manager (GAM)

GAM is the dominant ad server for India digital publishers and the recommended starting point for CTV app monetisation. Reasons: largest demand access (DV360 demand flows through Google's pipes), strong SSAI integration with third-party SSAI providers, established India publisher support, and free at standard tier. The limitation is that GAM is a Google ecosystem — maximising revenue requires also connecting non-Google SSPs, which GAM supports through open bidding and header bidding integrations.

FreeWheel

FreeWheel (owned by Comcast) is the ad server of choice for premium broadcasters and large OTT publishers. It is better suited to complex ad break structures (pods, competitive separation, roadblocks), direct sales at scale, and broadcast-grade ad decisioning. For a new India CTV app, FreeWheel is likely over-engineered and over-priced unless you are a broadcaster or telco launching a significant platform. Consider FreeWheel when direct sales exceed 40% of revenue and ad break complexity requires broadcaster-grade controls.

3 SSAI: why you need it and how to set it up

SSAI (Server-Side Ad Insertion) stitches the ad into the video stream at the server level before delivery to the viewer's device. Without SSAI, your CTV app makes a client-side ad call — the video player pauses, requests an ad, downloads it, plays it, then resumes content. On a TV screen with a 4K stream and a variable broadband connection, this produces buffering and black frames that destroy user experience and increase session drop-off rates. SSAI eliminates this by pre-stitching the ad into the stream — from the video player's perspective, it is just a continuous stream.

SSAI options for India CTV apps

ProviderBest forIndia CDNCost model
AWS Elemental MediaTailorMost new CTV apps; integrates with CloudFront CDNYes (Mumbai PoP)Per session + per ad
Amagi ThunderstormFAST channels and apps using Amagi playoutYesBundled with Amagi playout
YospacePremium broadcasters needing DAI at scaleVia partner CDNEnterprise contract
Brightcove SSAIApps already on Brightcove video platformVia Akamai/CloudFrontBundled with Brightcove

For most new India CTV apps, AWS MediaTailor is the right starting point. Setup: configure your video origin (S3 or CDN), create a MediaTailor configuration with your ad decision server URL (your GAM VAST endpoint), and update your app's video player URL to point to the MediaTailor playback URL. MediaTailor handles the ad stitching and reports impression and quartile events back to your ad server.

SCTE-35 ad break markers

Your video content must contain SCTE-35 cue markers that tell the SSAI system where ad breaks occur. If your content files do not have SCTE-35 markers, you must add them during content ingest or use a server-side ad break insertion tool. For VOD content, SCTE-35 markers are added during transcoding. For live streams, they are inserted by the encoder at break points. Without SCTE-35 markers, SSAI cannot find the ad break positions and no ads will serve.

4 SSP integration and demand connections

An SSP (Supply-Side Platform) connects your inventory to programmatic advertisers. You connect your ad server to SSPs via VAST tags or header bidding adapters. Each SSP runs its own auction for your inventory and passes the winning bid back to your ad server. The ad server then runs a unified auction across all SSP bids plus any direct-sold campaigns and serves the highest-value ad.

Priority SSP connections for India CTV

  • Google Ad Manager open bidding — connects DV360 and Google Ads demand. This is the single largest programmatic CTV demand pool in India. Enable as your first demand source.
  • Magnite (formerly Rubicon + SpotX) — strong CTV-specific programmatic demand. Magnite has India publisher relationships and CTV-specific demand from US and India buyers.
  • PubMatic — growing India CTV presence, good for Indian advertiser demand.
  • Amazon Publisher Services — connects Amazon DSP demand. Valuable for e-commerce and consumer electronics brand adjacency.

Start with GAM open bidding + Magnite for your first two demand connections. Add PubMatic and Amazon Publisher Services once you have 60+ days of auction data and can evaluate incremental fill lift from each additional connection.

5 Floor pricing and yield basics

A floor price is the minimum CPM you will accept for an ad impression. Below this floor, the impression goes unfilled — you serve a house ad or slate instead of a paid ad. Setting floors correctly is the most impactful yield lever available to a new publisher.

Starting floor recommendations for India CTV:

  • Programmatic floor (all demand): Rs 30–40 CPM minimum. Below this, you are attracting demand that trains buyers that your inventory is cheap — and CPMs do not recover easily once anchored low.
  • Premium content adjacency floor: Rs 60–80 CPM for cricket, Bollywood, and high-engagement genres.
  • Geographic floors: metro audiences (Mumbai, Delhi, Bengaluru) can command Rs 10–20 CPM premium over national average. Set geo-specific floors if your GAM/SSP setup supports it.

Unfilled impressions should serve house ads — your own app promotion, a content recommendation, or a public service announcement — rather than blank breaks. Blank breaks cause session abandonment and train your audience to leave during ad breaks. Fill every break even if it earns nothing.

6 Direct sales layer

Programmatic CPMs for a new India CTV app will be Rs 40–80 at launch. Direct-sold campaigns at Rs 120–200+ CPM produce 2–3x the revenue per impression. The transition from programmatic-only to programmatic + direct is the most important revenue inflection point for a CTV publisher. Direct sales require either an in-house sales function or a sales house/rep firm relationship.

For an app below 500,000 MAUs, an in-house sales hire is rarely justified. Options: partner with a digital media sales house that represents multiple publishers in India (approaches advertisers and agencies with a combined audience proposition), or approach category-specific advertisers directly for sponsorship deals (a cooking app approaching FMCG and kitchen appliance brands; a cricket archive app approaching sports gear and betting-adjacent brands). Structure direct deals as insertion orders with GAM line items set above programmatic floors to ensure they serve first.

7 India CTV publisher CPM benchmarks

Programmatic — new app

Rs 40–80

First 6 months. Low floor, limited audience data, thin direct demand.

Programmatic — established app

Rs 80–150

12+ months of data, optimised floors, multiple SSPs. Sports/premium content higher.

Direct deal CPM

Rs 120–300

Directly sold to advertisers or agencies. Content adjacency and audience targeting premium.

Programmatic fill rate

25–50%

New apps 25-35%. Grows to 40-55% with audience data and multiple SSP connections.

8 Yield management as you scale

Once you have 90+ days of auction data, move from static floors to dynamic optimisation. Key yield levers:

  • Dynamic floor pricing — GAM and most SSPs support dynamic floors that adjust based on historical clearing prices. Enable this once you have sufficient auction history. Dynamic floors typically lift CPMs 10–20% without reducing fill.
  • Header bidding — running an auction across multiple SSPs simultaneously (rather than in a waterfall sequence) increases competition and lifts clearing prices. Implement Prebid.js or a managed header bidding solution once you have 3+ SSP connections.
  • Ad pod optimisation — test pod length (2 ads vs 3 ads per break) and pod frequency. The optimal pod structure is app-specific; longer pods increase revenue per break but increase session drop-off. Track break abandonment rate separately from overall session completion.
  • Audience data packaging — if your app collects registration data (age, gender, location, interests), package this as first-party audience segments in your ad server and price them at a premium. Advertisers will pay Rs 30–60 CPM above floor for verified demographic targeting.

9 Go-live checklist

Ad server and SSAI

  • Google Ad Manager account created, network settings configured
  • SSAI provider selected and configured (AWS MediaTailor recommended)
  • Video content transcoded with SCTE-35 ad break markers
  • VAST endpoint from GAM connected to SSAI ad decision URL
  • End-to-end test: content plays → ad break fires → ad serves → content resumes cleanly
  • House ad/slate creative ready for unfilled impressions

SSP and demand

  • GAM open bidding enabled for Google demand
  • Magnite SSP connected via GAM open bidding or VAST tag
  • Floor prices set: Rs 30–40 CPM minimum programmatic floor
  • Ad categories restricted: confirm gambling/alcohol/political category eligibility
  • Frequency caps set at campaign and app level

Reporting and measurement

  • GAM reporting configured: impressions, fill rate, CPM, revenue by SSP
  • App analytics tracking ad break events (break start, completion, abandonment)
  • Baseline metrics recorded pre-monetisation: session length, retention rate
  • Post-launch monitoring plan: weekly fill rate and CPM review for first 60 days

→ Before building this infrastructure, run the App Monetisation Readiness Assessment to confirm your app is at the right stage for ad monetisation.