·5 min read·Sam Wild

Adding Attribution to Your RevenueCat Setup

RevenueCat handles subscriptions and purchases. But it won't tell you where those subscribers came from. Here's how to add that missing piece.

RevenueCat is probably the best tool for managing in-app purchases and subscriptions. It handles receipt validation, cross-platform entitlements, pricing experiments, and paywalls. Most indie iOS and Android devs use it or have at least considered it.

But there's a gap. RevenueCat tells you that someone purchased. It doesn't tell you why. It doesn't tell you which marketing channel, which influencer, which campaign, or which random Reddit post sent that person to your app in the first place.

That's attribution, and RevenueCat deliberately doesn't do it. Their docs say as much — they integrate with attribution providers rather than building it themselves.

The problem this creates

You're running an app. You've got RevenueCat handling purchases. You're marketing on three channels — say TikTok, Instagram, and Apple Search Ads. Downloads are coming in. Some people buy.

Your RevenueCat dashboard shows: 4 new subscribers today, £16 in revenue. You check TikTok: your post got 3,000 views. Instagram: 800 impressions. Search Ads: 200 impressions, 12 taps.

Which channel drove those 4 subscribers? You genuinely don't know. Maybe all 4 came from TikTok. Maybe none did. Maybe they came from a blog post you wrote six months ago that you forgot about.

Without attribution, you're spending money and time on marketing with no feedback loop. You can't kill what's not working because you don't know what's not working. You can't scale what is working because you don't know what is.

How attribution works with RevenueCat

RevenueCat has a webhook system. Every time a purchase, renewal, cancellation, or billing event happens, RevenueCat sends a POST request to a URL you specify. The payload includes the user ID, product, price, currency, and event type.

Attribution tools hook into this. The flow is:

  1. User clicks a tracked link (from an ad, influencer post, email, wherever)
  2. The attribution tool records the click and associates it with a user identifier
  3. User downloads your app and eventually makes a purchase
  4. RevenueCat fires a webhook for that purchase
  5. The attribution tool matches the purchase back to the original click

The critical piece is step 2 and 5 — linking the click to the purchase through a shared identifier.

Setting this up with LinkOwl

LinkOwl integrates directly with RevenueCat's webhooks. Here's the actual setup:

Step 1: Create tracked links

In your LinkOwl dashboard, create a link for each marketing channel or campaign. Each link gets a unique short code — linkowl.app/l/tiktok, linkowl.app/l/insta, linkowl.app/l/email, whatever makes sense for you.

Step 2: Add the SDK to your app

LinkOwl has a lightweight SDK (Swift for iOS, npm package for React Native). When your app launches, the SDK checks if the user arrived via a tracked link and associates that click with their RevenueCat user ID.

For Swift:

LinkOwl.configure(apiKey: "your-api-key")
LinkOwl.identify(userId: Purchases.shared.appUserID)

For React Native:

import { LinkOwl } from '@linkowlnew/react-native';
LinkOwl.configure({ apiKey: 'your-api-key' });
LinkOwl.identify(appUserId);

That's it on the app side. A couple of lines.

Step 3: Connect the RevenueCat webhook

In your RevenueCat dashboard, go to Integrations and add a webhook. Point it at your LinkOwl webhook URL. LinkOwl gives you this URL when you register your app — it looks like linkowl.app/api/v1/webhooks/revenuecat/[your-app-id].

RevenueCat will now send every purchase event to LinkOwl automatically.

Step 4: Use the data

Your LinkOwl dashboard now shows which links drove which purchases. You'll see something like:

  • TikTok link: 12 clicks, 3 installs, 1 purchase (£4.99)
  • Instagram link: 45 clicks, 8 installs, 2 purchases (£9.98)
  • Email link: 20 clicks, 5 installs, 3 purchases (£14.97)

Email has the best conversion rate. Instagram drives volume. TikTok gets clicks but they don't convert as well. Now you know.

What about RevenueCat's built-in attribution fields?

RevenueCat has attribution data fields in their SDK — you can set network, campaign, and ad group on a user. These are designed for tools like AppsFlyer and Adjust to populate.

The problem: AppsFlyer starts at $500/month. Adjust isn't much cheaper. If you're a solo dev or small team making a few hundred quid a month, spending $500 on attribution is absurd.

LinkOwl costs 5p per attributed purchase. If your app makes 100 sales a month, that's £5. If it makes 10, it's 50p. No monthly minimum.

Limitations to be honest about

Link-based attribution has a gap: if someone sees your TikTok, searches for your app in the App Store directly (without clicking the link), and buys, that purchase won't be attributed. You missed the click event.

This is a limitation of all non-fingerprinting attribution methods. The big MMPs (AppsFlyer, Adjust) use device fingerprinting to bridge this gap, which is more accurate but also why they cost what they cost, and why Apple has been cracking down on it with App Tracking Transparency.

For most indie apps, link-based attribution captures enough signal to make good marketing decisions. You won't attribute every single purchase, but you'll see clear patterns about which channels perform and which don't.

Who this is for

If you're using RevenueCat and any of these describe you:

  • You're spending money or time on marketing but can't tell what's working
  • You've considered AppsFlyer or Adjust but the pricing made you close the tab
  • You're tracking "vibes" instead of data
  • You want to know which influencer or channel actually drives purchases

Then connecting an attribution layer to your RevenueCat setup is probably the highest-leverage thing you can do for your marketing this week. It takes about 20 minutes to set up and the data starts flowing immediately.

Track your marketing links with LinkOwl

5p per sale, no subscription. Know exactly which post, influencer, or campaign drove each purchase.

Start tracking free →

Related articles

← Back to all articles