RevenueCat's dashboard is satisfying. You see purchases roll in, MRR tick upward, trial conversions land. It gives you clean revenue data without you having to wrestle with StoreKit receipts.
What it quietly doesn't do is tell you where any of those purchases came from.
A subscriber shows up on Tuesday. Was it the TikTok post from last week? The Reddit thread you commented on? The influencer you paid? Your App Store listing doing its job on its own? RevenueCat has no idea, and it's not really trying to. That's not what it's for.
This gap matters more than most developers think, because it's the difference between "marketing that feels productive" and "marketing that actually is."
The attribution blind spot
RevenueCat tracks what happens after the install: trials, purchases, renewals, cancellations. It's excellent at this. But it has no concept of what happened before the install, which is exactly where your marketing lives.
You're posting on three platforms, running a small ad campaign, and maybe paying a creator to mention your app. Revenue goes up a bit. But which of those activities caused the increase? Without attribution, you're guessing. And guessing leads to spending more on things that feel like they're working rather than things you can prove are working.
I've watched developers double down on Instagram because "engagement is good" while their actual purchases were coming from a single Reddit post they barely remembered writing.
Why RevenueCat can't solve this alone
RevenueCat processes purchase events. It knows the transaction amount, the product, the user ID, and the subscription state. It doesn't know the user tapped a link in someone's TikTok bio three days ago.
Some developers try to work around this by tagging users with custom attributes in RevenueCat. You can set a source attribute on a subscriber and filter by it later. This works in theory but breaks down quickly:
- You need to figure out the source client-side before setting the attribute
- If the user came from a web link, your app needs to catch that context at launch and persist it
- You're building your own attribution system inside a tool that wasn't designed for it
It's possible, but it's fragile and it's a lot of code for something that should be straightforward.
Filling the gap with tracked links
The simpler approach: give each marketing channel its own link. When someone taps that link and eventually makes a purchase, the purchase gets tied back to the link.
Here's what the flow looks like with LinkOwl:
- You create a tracked link for each channel (one for your TikTok bio, one for an influencer, one for a Reddit post)
- Someone taps the link and gets redirected to the App Store
- They install the app. LinkOwl's SDK picks up the attribution data
- They make a purchase. RevenueCat processes the transaction
- RevenueCat sends a webhook to LinkOwl, which matches the purchase to the original link
Now when you look at your LinkOwl dashboard, you can see: this link generated 14 purchases, that one generated 2, and the other one generated none.
Setting up the RevenueCat webhook
The webhook integration takes about five minutes. RevenueCat already supports sending purchase events to external URLs, so there's nothing custom to build.
In your LinkOwl dashboard, go to your app settings. You'll see a RevenueCat webhook URL. Copy it.
In RevenueCat, go to Integrations > Webhooks and add a new webhook with that URL. Select the events you care about (at minimum, INITIAL_PURCHASE and RENEWAL). Save.
That's it. RevenueCat will now forward purchase events to LinkOwl, which matches them against click data using the appUserId.
For this matching to work, you need to set the same user identifier in both RevenueCat and LinkOwl's SDK. If you're using RevenueCat's anonymous IDs, LinkOwl's SDK handles this automatically. If you're using custom IDs, pass the same one to both.
What you can actually learn
Once data starts flowing, the useful questions become answerable:
Which platform converts best? Not which one gets the most clicks or impressions, but which one results in actual money. I've seen apps where TikTok drives 10x the traffic of Reddit but Reddit converts at 5x the rate. Without attribution, you'd assume TikTok was your best channel.
Which influencer is worth paying again? When each creator has their own link, you stop guessing about who drove value. One creator might have 500K followers and generate two purchases. Another might have 20K followers and generate forty. The numbers don't always go the direction you'd expect.
Is your ad spend working? Even small ad budgets deserve proper tracking. If you're spending £50/month on Apple Search Ads and £50 on TikTok promotion, knowing which one generates more revenue per pound spent is the difference between scaling intelligently and wasting money.
What's your real cost per acquisition? RevenueCat tells you average revenue per user. LinkOwl tells you where the user came from. Combine the two and you have cost per acquisition by channel, which is the number that actually matters for deciding where to spend.
A practical example
Say you're running a habit tracking app with a £4.99/month subscription. You're marketing on three channels:
- Instagram (organic posts, link in bio)
- A YouTube creator doing a sponsored mention
- Reddit (posting in relevant subreddits)
You create three links in LinkOwl. After a month:
| Channel | Clicks | Installs | Purchases | Revenue |
|---|---|---|---|---|
| 340 | 45 | 6 | £29.94 | |
| YouTube | 890 | 120 | 22 | £109.78 |
| 95 | 18 | 8 | £39.92 |
If you'd only looked at clicks, Instagram and YouTube would seem like the clear winners. But Reddit's conversion rate from click to purchase is 8.4%, compared to Instagram's 1.8%. If you were going to spend money amplifying one channel, the data points toward Reddit.
Without attribution, you'd probably have invested more in Instagram because "the engagement is there."
The cost question
LinkOwl charges 5p per attributed purchase. No monthly fee, no minimum spend. If you make 50 purchases through tracked links in a month, that costs £2.50. If you make zero, it costs nothing.
Compare that to running your own attribution: developer time building and maintaining the system, debugging edge cases, and hoping your custom RevenueCat attributes don't silently break during an app update.
For context, the enterprise attribution tools (AppsFlyer, Adjust, Branch) start around $200-500/month. They do more than basic channel attribution, but if you're an indie developer making 200 sales a month, you don't need what they're selling.
Getting started
If you're already using RevenueCat, the setup is:
- Sign up at linkowl.app and register your app
- Add the LinkOwl SDK to your project (Swift or React Native)
- Copy the webhook URL from your dashboard into RevenueCat's webhook settings
- Create tracked links for each marketing channel
- Use those links in your marketing instead of direct App Store links
First attributed purchase data usually shows up within a day or two, depending on how quickly your users convert.
The whole point is to stop wondering which marketing works and start knowing. RevenueCat already gives you the "how much" — attribution gives you the "from where."