Attribution for streaming, audio and news apps, title by title
Tie every trailer, creator post and match-day campaign to the viewer who pressed play, finished the trial and paid. Each link opens the exact show, episode or article, even after a fresh install.
Streaming, audio drama and news teams measure installs to first play and paid subscription with Linkrunner
Customers include SnapTV, The Tatva, Flick TV, Piku TV, SermonTV, TIMIO News.





Optimise on the viewer who pays or keeps watching
For subscription tiers, the value event is the first paid subscription; for ad-supported tiers and news, it is a watch-time threshold such as 10 minutes watched or three articles read. A viewer who never presses play is worth nothing to either model, so installs alone tell you little. Every post-install event stays tied to the attributed install, whether it happens on day 0 or day 40.
- Install
- 1First play or first article openedSame sessionProves the deep link landed on content and the creative matched the title
- 210 minutes watched (or 3 articles read)Day 0 to day 2Best early predictor of a D7 return for ad-supported and news apps
- 3Free trial started (RevenueCat TRIAL_STARTED)Same session to day 1Intent signal only, ahead of trial-to-paid conversion; carries no revenue
- Optimise on thisFirst payment (RevenueCat FIRST_PAYMENT, or server API for web)Day 3 to day 30, depending on trial lengthThe value event for subscription tiers; the first real money
- 5Subscription renewedDay 30 onwardsSeparates campaigns that bring payers from campaigns that bring one-month viewers
Why streaming and news attribution breaks in standard setups
Campaigns sell a title, so links must open that title
A trailer ad for one show or a creator post about one episode should land on that show, not the home screen. Linkrunner links are deferred by default, so the title, season and episode survive the install and open on first launch. Name campaigns by title and the dashboard ranks shows, not just channels.
See how deep links carry content through install →
1. Campaign destination
https://get.example.com/product2. The link a user taps, with your parameters
https://get.example.com/AbCdEf?variant_id=987&promo=summer3. getAttributionData() on first open after install
{ "deeplink": "https://get.example.com/product?variant_id=987&promo=summer", "campaignData": { "name": "Summer sale", "type": "INORGANIC" } }4. Your app routes the user
navigate("Product", { id: url.searchParams.get("variant_id") }) // 987
Release days and live sport bend every chart
A season drop or a big cricket match can triple installs for 48 hours, and a cheap spike can hide weak viewers. Give each release or match its own link and campaign, compare D1 and D7 retention against your baseline, and watch for click flooding when spend jumps.
See Fraud Control rules for high-spend days →
Subscriptions arrive through the store and the web
Store purchases flow in through RevenueCat, but web checkouts never touch the store. Send those payments from your backend through the server API, so they credit the campaign that drove the install. Only completed payments count as revenue, and app payments are deduplicated by payment ID.
See how revenue tracking handles every payment route →
- type
- FIRST_PAYMENT
- payment_id
- ord_88213
- user_id
- user_2041
TV and CTV ads drive installs that look organic
A viewer sees your show advertised on a connected TV, picks up a phone and searches the store, so the install arrives with no click. With CTV attribution, the CTV partner sends impressions to Linkrunner server to server, so installs driven by TV spend stop hiding inside organic.
See CTV attribution →
- 20:14:07festive_tv_oct49.36.x.12
- 20:14:05festive_tv_oct106.51.x.88
- 20:13:58cricket_tv_oct122.171.x.4
- 20:13:51festive_tv_oct157.45.x.30
- 20:13:44cricket_tv_oct49.207.x.61

1. Campaign destination
https://get.example.com/product2. The link a user taps, with your parameters
https://get.example.com/AbCdEf?variant_id=987&promo=summer3. getAttributionData() on first open after install
{ "deeplink": "https://get.example.com/product?variant_id=987&promo=summer", "campaignData": { "name": "Summer sale", "type": "INORGANIC" } }4. Your app routes the user
navigate("Product", { id: url.searchParams.get("variant_id") }) // 987
Where streaming and news teams find viewers who stay
- Meta (Advantage+ app campaigns and Reels): Trailer cuts and episode clips work as Reels creatives, and the Creatives tab shows which clip brought paying viewers, not just the cheapest install.
- Google App campaigns (YouTube and Search): Searches for a show or match name convert well; a deep link destination opens the searched title after install.
- Creators on Instagram and YouTube: One link per creator per title, grouped under an Influencers channel. The social intermediary page gets viewers out of the Instagram in-app browser and into the store.
- WhatsApp and push for news and live sport: Article and match links shared on WhatsApp open the story or the live stream, so returning readers land where the message promised.
- CTV and TV: For releases backed by TV spend, CTV attribution moves installs driven by TV impressions out of organic.
- ShareChat and Moj, Jio Ads: Regional OTT and audio drama apps reach Hindi and regional-language audiences on India-native inventory.
Frequently asked questions
Know which title brought your paying viewers
Live within a week, before your next release, with your first 25,000 attributed installs free.