RevenueCat attribution: which link brought subscribers

On this page
- Why RevenueCat doesn't know where subscribers came from
- Option 1: an attribution provider integration
- Option 2: Apple's ads attribution
- Option 3: your own links, joined to RevenueCat
- Set it up with Unolink
- What you can see
- Name links so the revenue reads well
- Gaps to know about
- Privacy and Apple's rules
- Which option to choose
RevenueCat knows exactly who subscribed, when, on which product, and how much they paid. What it doesn't know is why they installed in the first place: which video, creator, ad or newsletter brought them. That's the number you need when you decide where to spend next week.
This post explains why RevenueCat can't answer that on its own, the usual ways teams connect acquisition to subscriptions, and a lightweight setup for indie apps and small studios.
Why RevenueCat doesn't know where subscribers came from
RevenueCat sits inside your app, and only starts seeing someone once the app is open. Everything that happened before, the tap on a link, the store visit, the install, happened somewhere RevenueCat can't see. Its own documentation is direct about it:
So the source has to come from another tool and be joined to RevenueCat's purchases. There are three common ways.
Option 1: an attribution provider integration
RevenueCat integrates with attribution providers such as Adjust, AppsFlyer, Branch, Singular and Tenjin. The provider works out where the install came from, and revenue shows up next to each campaign in the provider's dashboard.
That's the right choice if you already pay for one of those tools for paid campaigns. It's a lot of tool, and a lot of budget, if all you want is to compare five videos and two creators.
Option 2: Apple's ads attribution
RevenueCat can collect Apple's attribution data for Apple's own ads, with the campaign, ad group and keyword, and lets you segment its charts by them. Useful if you run Apple's search ads. It covers those ads only, not your TikTok posts or a creator's video.
Option 3: your own links, joined to RevenueCat
If most of your growth comes from links (posts, bios, creators, newsletters, QR codes, ads that send traffic to a website), you need three things:
- A link per source. Every post, creator and ad gets its own link that opens the right store.
- An SDK in your app that knows which link brought each install.
- A connection to RevenueCat, so every trial, purchase, renewal and refund lands on the link that brought that person, including the ones that happen while the app is closed.
That's the whole setup. No ad network accounts, no attribution contract, and you see revenue per post rather than per ad network.
Set it up with Unolink
Unolink does option 3, with RevenueCat built in. It needs the Pro plan ($19 a month) or up, for the SDK. Prices are on the pricing page; there's no sales call.
- Create your links. A smart link for the app, and a campaign link per post, creator or ad:
go.unolink.dev/yourapp/creator-anna. Each opens the App Store on iPhone and Google Play on Android. - Add the SDK for iOS, Android, React Native or Flutter. It's a small library that takes minutes to add, and it shows which link brought each install, without fingerprinting. See the SDK docs.
- Connect RevenueCat. The SDK connects to RevenueCat in one line, and you connect RevenueCat once from your app's settings in Unolink. Step by step: RevenueCat docs page.
- That's it. Trials, purchases, renewals and refunds arrive by themselves from then on, and nothing is counted twice.
What you can see
Once purchases flow in, every link has a full funnel: clicks, installs, onboarding, paywall, trial, paid and revenue.
- Clicks2,400
- Installs610−75%(biggest drop)
- Started a trial140−77%
- Paid52−63%
Biggest drop: Installs
- Revenue per link, net of refunds. A refund subtracts its revenue.
- Late payers count. Someone who taps a creator's link today and converts from a free trial next week still counts as a paying user from that link. People are grouped by install date, so last week's numbers can rise as trials convert.
- When people pay. The Report shows the share of installs paying within a day, 7 days and 30 days, the median wait, and how many came back after a quiet week to pay, overall and per link.
- Renewals as their own step. Renewed, cancelled, expired and billing issue can be added to any funnel.
- Already subscribed. Someone who subscribed before this install (a new phone, a reinstall) still adds to revenue, but doesn't count as a new paying user for the link, because that link didn't make the sale.
- Sandbox purchases stay out, like test devices, so your numbers show real customers only.
Name links so the revenue reads well
Revenue per link is only as useful as the link names. Three months from now, link7 means nothing.
- Name the source and the variant:
creator-anna,tiktok-oct-hook2,newsletter-launch,poster-gym-berlin. - One link per thing you'd decide about. If you'd stop paying a creator based on the numbers, the creator needs their own link. If you'd keep or drop a video hook, each hook needs one.
- Don't reuse links across campaigns. A link used for two posts merges their revenue for good.
- Keep the UTM tags ads add for you. Many ads append
utm_sourceandutm_campaignthemselves; they're kept with the click, so you can split one ad link by campaign later.
Gaps to know about
Be clear about the gaps, whatever tool you use:
- App-install campaigns open the store directly and skip your link, so their subscribers can't be tied to it. Use the ad platform's own reporting for those.
- Purchases on the web or on another device need the app to know who the customer is. The Payments and user IDs page covers guests, sign-ups and purchases made elsewhere.
- Small numbers. A link with ten installs and one subscriber tells you little. Give it time and people before you decide.
Privacy and Apple's rules
Joining your own app's purchases to your own app's installs is first-party analytics. It isn't tracking in Apple's sense, which is about linking your data with other companies' apps or websites for advertising, and it needs no tracking prompt. Unolink doesn't fingerprint devices and never shares your users' IDs. More detail, including how to answer App Store Connect's privacy questions: Payments and user IDs.
Which option to choose
- You buy ads across several networks and need them optimised for subscribers: an attribution provider, with its RevenueCat integration.
- You run Apple's search ads: turn on RevenueCat's Apple ads integration; it's cheap to add alongside anything else.
- You grow through posts, creators and a few website ads: your own links, an SDK and RevenueCat connected. It's the simplest, cheapest setup that tells you which link brought subscribers.
For the bigger picture of measuring without a mobile measurement partner, see Which ad brought each install?, and for the events between install and purchase, Onboarding and paywall funnels: what to track.
Share this article


