![]()
OTT Campaign Attribution: Which Show Brought the Subscriber?
Your dashboard says the October campaign produced 4,200 installs at $1.80 each. Finance asks a simpler question: which shows actually paid for themselves? Nobody can answer, because every install was tagged with the campaign name and nothing else.
That is the gap OTT campaign attribution has to close. A streaming service does not sell an app; it sells titles. Budget decisions only become sharp when you can trace a paying subscriber back to the specific show, trailer, and placement that persuaded them. This guide covers how to set up title-level attribution, which events to track, how to work within iOS privacy limits, and how to turn the report into budget moves.
What OTT campaign attribution should answer
OTT campaign attribution connects each install, trial, and subscription to the marketing touchpoint that caused it, down to the title and creative. The question it must answer is not "which channel drove installs?" but "which show, in which creative, on which channel, produced subscribers at an acceptable cost?"
Generic app attribution stops at the channel and campaign level. That works for a utility app with one product. For a streaming catalog, it hides the most important variable. Two campaigns on the same network, with the same budget and the same cost per install, can differ several-fold in subscribers because one promoted a show people finished and the other promoted a show people sampled.
| Attribution depth | What you learn | Decision it supports |
|---|---|---|
| Channel | Meta outperformed YouTube on installs | Coarse channel budget split |
| Campaign | The October push beat September | Whether to repeat a flight |
| Title | Thriller A converts 3x better than Comedy B | Which shows to put paid budget behind |
| Title + creative | Thriller A's cold-open clip beats its trailer | Which assets to produce more of |
The title and creative rows are where OTT marketing budgets are won or lost.
Build a link taxonomy before you build a dashboard
Attribution quality is decided when the link is created, not when the report is read. If a campaign link does not carry the show and the creative, no analytics tool can recover them later.
Give every paid link a consistent set of parameters:
- Channel and campaign: the standard UTM source, medium, and campaign.
- Content ID: your catalog's stable identifier for the show or film, not its display name, which changes with localisation and retitling.
- Creative ID: the specific asset, such as
trailer-30s,coldopen-ep1, orcastclip-ep3. - Destination: the in-app screen the link should open, which usually matches the content ID.
A shared UTM builder helps marketing and growth teams produce links in one format instead of five. Keep a naming sheet that maps each content ID to its title, genre, and release window so reports can be grouped later without re-tagging.
The same link should both measure and route. When a new user installs from a show ad, deferred deep linking opens that show on first launch, which we cover in depth in how deferred deep linking cuts OTT CAC. Attribution then has a clean chain: click on show X, install, view show X, trial, subscription.
The events that turn installs into title-level revenue
An install is the least informative event in a streaming funnel. Track the events that sit between the install and revenue, and attach the acquisition content ID to each one.
| Event | Why it matters | Typical timing |
|---|---|---|
install / first open | Confirms the click produced a user | Minutes to hours after click |
title_view | Proves the user reached the promoted show | First session |
first_play | Shows real intent, not just curiosity | First session |
trial_start | First commercial commitment | First day |
subscription_start | First paid conversion | After the trial, often day 7 |
renewal | Separates sampling from retention | Day 30, 60, 90 |
Two OTT-specific traps are worth planning for. First, free trials push the paid event days after install, so a short attribution window can miss conversions that happen after the trial ends. Second, many subscriptions are billed through Apple or Google, so the subscription event usually comes from your billing backend or store server notifications rather than the app. Forward those server-side events to your attribution platform with the user's acquisition data attached.
Deeplinkly captures clicks, installs, opens, and custom in-app events through its SDKs and exposes them through an API and webhooks, so trial and subscription events can be joined to the original link. Its app attribution platform page describes the event model.

Reading a title-level attribution report
Once events carry the content ID, the useful report groups spend and outcomes by title. The figures below are illustrative, but the shape of the insight is common.
| Title promoted | Spend | Installs | CPI | Subscribers | Cost per subscriber | Day-30 retention |
|---|---|---|---|---|---|---|
| Thriller A | $6,000 | 3,000 | $2.00 | 270 | $22 | 71% |
| Reality B | $6,000 | 4,000 | $1.50 | 160 | $38 | 48% |
| Sports C | $6,000 | 2,000 | $3.00 | 240 | $25 | 63% |
On cost per install, Reality B wins. On cost per subscriber, it is the worst performer, and its subscribers also leave sooner. Sports C has the most expensive installs and still beats Reality B on subscriber cost. A channel-level dashboard would have rewarded the wrong show.
Read the report in this order:
- Cost per subscriber by title. This is the closest thing to title-level CAC.
- Retention by acquisition title. A cheap subscriber who cancels after one month can cost more than an expensive one who stays a year.
- Creative within title. Once a show earns budget, find the asset that converts best for it.
- Channel within title. Some shows work on short-form video and fail on search; others are the reverse.
iOS privacy limits and what they change
On Android, the Play Install Referrer gives a deterministic way to pass a click reference through the Play Store install. On iOS, App Tracking Transparency means you cannot rely on the advertising identifier for users who decline tracking, and ad networks report many iOS campaign results through Apple's SKAdNetwork and AdAttributionKit frameworks instead of user-level data.
In practice, OTT teams should plan for two layers of iOS data:
- Link-level attribution for clicks on your own links, where a deterministic click identifier can match the install. Deeplinkly matches only on supported deterministic signals and does not fingerprint devices, so an install without a deterministic signal stays unattributed rather than guessed. Its privacy documentation lists exactly which signals each setting sends.
- Aggregated network reporting for ads inside networks such as Meta or TikTok, where results arrive through Apple's privacy frameworks with delays and limited granularity.
If you rely on SKAdNetwork postbacks, decide which early events count as conversion values. For a streaming app, trial_start and first_play in the first session are better signals than install. Deeplinkly's free SKAN conversion value builder helps map those events into a schema.
Turning attribution into budget moves
A report earns its keep when it changes next week's spend. A simple weekly loop works for most OTT teams.
- Rank titles by cost per subscriber over a window long enough to include trial conversions.
- Shift budget toward titles under your target CAC and pause titles that sit well above it after a fair test.
- Feed the winners to creative production. If cold opens beat trailers, cut more cold opens.
- Align the programming calendar. Promote titles with new seasons or episodes landing, so subscribers find more to watch after the first show.
- Re-check retention monthly and downgrade titles whose subscribers churn quickly, even if their first-month CAC looks good.
Keep an incrementality check in the loop. Big titles also drive organic installs, and attribution only credits clicks it can see. Periodically pause paid spend on one title in one region and compare total subscribers, not just attributed ones.
The data also helps the product team. When we build OTT platforms at Apexnova, acquisition content IDs flow into the same video analytics pipeline as viewing data, so a subscriber's first show can be compared with what they watch next and how long they stay.
Common OTT attribution mistakes
- Tagging campaigns but not titles. You will know a campaign worked, not why.
- Optimising to cost per install. Cheap installs from low-intent creatives inflate subscriber CAC.
- Attribution windows shorter than the trial. Conversions after a 7-day trial get credited to "organic".
- Ignoring store-billed subscriptions. If subscription events do not reach the attribution platform, the funnel ends at the trial.
- Display names as identifiers. "The Night Shift" and "Night Shift S2" split into two titles in your report.
- Treating unattributed as organic. On iOS especially, some paid installs will be unattributed. Size the gap with holdouts instead of ignoring it.
Frequently asked questions
What is title-level attribution for a streaming app?
Title-level attribution links each install, trial, and subscription to the specific show or film promoted in the ad that drove it. It lets an OTT team calculate cost per subscriber per title instead of only per campaign or channel.
Which attribution window should an OTT app use for subscriptions with a free trial?
Use a conversion window that covers the full trial plus a few days of payment retries. If your trial is 7 days, a window of at least 10 to 14 days avoids crediting post-trial subscriptions to organic traffic.
How do you attribute subscriptions billed through the App Store or Google Play?
Send the subscription event from your backend after you receive the store's server notification, and attach the user's acquisition data. The app alone often cannot see the renewal or the conversion from trial to paid.
Can a streaming app attribute iOS installs without the IDFA?
Yes, for clicks on its own links. A deterministic click identifier can match the click to the first open without the advertising identifier. Ads inside large networks are usually reported through Apple's SKAdNetwork or AdAttributionKit in aggregate instead.
Does attribution software slow down a streaming app?
A well-built attribution SDK does very little work on launch: it resolves the link and sends a few events. Measure cold-start time before and after integration, and keep heavy work off the main thread.
Which shows deserve your next dollar
If you promote more than a handful of titles, channel-level reporting is already costing you money: it rewards shows that attract cheap installs and starves shows that create loyal subscribers. Title-level attribution is the fix, and it starts with a link taxonomy that every campaign follows.
Start with your top three paid titles. Give each its own tagged links, send trial and subscription events from your backend, and compare cost per subscriber after one full trial cycle. Set up title-level attribution free on Deeplinkly, or talk to Apexnova if your OTT app needs the event pipeline and routing built in.