For Mobile · RevenueCat · Adapty · Qonversion · StoreKit
Affiliate attribution for mobile subscription apps.
Universal Links and App Links. RevenueCat-native conversion tracking. No IDFA. No SKAdNetwork paperwork. No $1,000-a-month MMP bill.
Indie mobile founders have two real options. Now there's a third.
Pay Branch or AppsFlyer $1,000 a month plus tiered usage fees. Or roll your own attribution and spend two weeks fighting Apple's ATT prompt, SKAdNetwork conversion-value bits, and your subscription provider's webhook quirks. AffRef is the third option. Drop in the SDK, paste your Team ID and Bundle ID, and ship. Same architecture the paid MMPs use, without the MMP bill.
Universal Links + App Links
Tap a referral URL with the app installed, it opens straight into your app with the affiliate code. The deterministic, Apple- and Google-blessed mechanism. ~99% accuracy when set up.
RevenueCat native
Paste one webhook URL into RevenueCat. We listen for INITIAL_PURCHASE, TRIAL_CONVERTED, and CANCELLATION. Conversions and refunds fire automatically.
Adapty + Qonversion adapters
Not on RevenueCat? The SDK forwards the captured affiliate code to any subscription stack as a user attribute. One line per provider. Documented for Adapty, Qonversion, and raw StoreKit / Play Billing too.
Recurring commissions
App Store renewal? AffRef fires another commission. Cap at 12 months, 24 months, or lifetime. Configurable per affiliate or per app.
Refund-aware
User refunds via App Store support? RevenueCat fires CANCELLATION with the reason. AffRef auto-reverses the commission. No clawback emails.
Trial-to-paid policy
Pay your affiliate when the trial starts, or only when it converts. Pick the default, override per app. Trial drop-off is your data; we just record what RevenueCat sends.
Privacy-clean
No IDFA, no GAID, no ATT prompt, no clipboard reads, no fingerprinting from the SDK. The captured device ID is a UUID generated locally, app-scoped, not cross-app.
Sandbox vs production
TestFlight and StoreKit-sandbox events are dropped from live conversions by default. Toggle the gate per app when you're wiring up integrations.
Setup, end to end
Six things, total. Once they're in place, every affiliate-driven install and subscription flows through automatically.
- Create a Mobile brand in AffRef. AffRef generates your publishable key (
pk_live_…) and per-brand smart-link URL. - Paste your Team ID + Bundle ID + Android package name + SHA256 fingerprint into the Mobile SDK integration page. AffRef serves the matching
apple-app-site-associationandassetlinks.jsonat the link domain. You host nothing. - Add the entitlement. iOS: an Associated Domains capability with
applinks:affref.com. Android: an autoVerify intent-filter onaffref.com. One line of XML or one Xcode capability click. - Drop the SDK in your app. Two lines of Swift or Kotlin. Initialise with your publishable key, forward Universal-Link activities into
AffRef.handle(...), then set the captured code as a subscriber attribute on RevenueCat (or Adapty or Qonversion). - Connect the RevenueCat webhook. Paste AffRef's per-brand webhook URL into RevenueCat's webhook settings. Set a shared Authorization header. Done.
- Share affiliate smart links. Every affiliate in your program gets a URL like
https://affref.com/go/your-app/THEIRCODE. Tap on a device with the app installed, app opens with the code. Tap without, App Store / Play Store interstitial.
No SDK in the middle for the conversion event itself. RevenueCat handles StoreKit and Play Billing; we just record the attribution. AffRef never touches the money.
What the integration actually looks like
Two pieces, side by side in your AffRef brand's integration page. The SDK captures the affiliate code on install via Universal Links and App Links. The RevenueCat webhook fires the conversion when the user pays.
What mobile founders actually ask
Is the SDK on a public package registry yet?
Not yet. AffRef's Mobile SDK is in private beta. Sign up, create a Mobile brand, and message us via the in-app chat. We'll send you the SDK package directly and walk you through the five-minute integration. We're opening public access once the first cohort of merchants is live.
Does this work with Adapty, Qonversion, or raw StoreKit?
Yes. The SDK is subscription-stack-agnostic. It captures the affiliate code from the Universal Link. You forward that code as a user attribute on whichever stack you use. One line per provider, documented in the SDK docs.
What about SKAdNetwork?
Skipped on purpose. SKAdNetwork is designed for paid ad networks with aggregated conversion-value postbacks. It requires Apple paperwork, postback URL configuration, and gives lossy aggregated data. For affiliate attribution from organic creator-shared links, Universal Links is the better fit and works in real time.
How does this compare to Branch.io or AppsFlyer?
Same core mechanism (Universal Links + post-install matching). The difference is scope and price. Branch and AppsFlyer are full mobile measurement platforms with SKAdNetwork orchestration, ad-network postbacks, custom dashboards, and per-event tiered pricing that starts around $1,000 a month and scales with MAUs. AffRef does affiliate attribution specifically, flat fee, no MAU tier. If you're running an indie subscription app and need to know which creator referred each paying user, AffRef is purpose-built for that.
Can affiliates use promo codes inside the app instead of links?
Yes. Add an in-app text field, call AffRef.setCode("THECODE") when the user submits, and the SDK validates the code against your active affiliates server-side. Useful for podcast sponsorships where the host reads "use code JOSH20" instead of sharing a link.
Does it handle trial-to-paid attribution?
Yes. Pick the policy per brand. Default is "credit at trial start, refund-reverses if they don't convert". Alternative is "credit only on first paid renewal" if your trial drop-off is high and that's fairer to your margins. Configurable in the Mobile SDK integration page.
Will my users see the "AffRef pasted from Safari" prompt?
No. The SDK does not read the clipboard. Attribution flows through Universal Links and App Links, which iOS and Android invoke directly without any user prompt. Privacy-clean by design.
What if the user doesn't have my app installed when they tap an affiliate link?
The affref.com URL opens an interstitial in their browser that redirects to the App Store or Play Store. After install and first open, AffRef runs IP-fingerprint matching server-side to credit the install. Accuracy in that path is ~50-70%, no SDK code needed. The Universal Links path takes over for any subsequent affiliate-link tap.
Get started
Start your 7-day free trial. Pick the Mobile platform when you add your first brand. The setup wizard walks you through the Team ID, Bundle ID, and entitlement steps. From there you'll be one merchant chat away from the SDK package.
Questions? Email [email protected]. We're async-only. No demos, no sales calls, no pipeline. Just ship.