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.

  1. Create a Mobile brand in AffRef. AffRef generates your publishable key (pk_live_…) and per-brand smart-link URL.
  2. Paste your Team ID + Bundle ID + Android package name + SHA256 fingerprint into the Mobile SDK integration page. AffRef serves the matching apple-app-site-association and assetlinks.json at the link domain. You host nothing.
  3. Add the entitlement. iOS: an Associated Domains capability with applinks:affref.com. Android: an autoVerify intent-filter on affref.com. One line of XML or one Xcode capability click.
  4. 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).
  5. Connect the RevenueCat webhook. Paste AffRef's per-brand webhook URL into RevenueCat's webhook settings. Set a shared Authorization header. Done.
  6. 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.

AffRef Mobile SDK and RevenueCat webhook setup cards inside the merchant brand integration page

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.

Ready to grow your affiliate program?

Start your 7-day free trial. Cancel anytime.

View Plans
Usually replies within an hour
Hey 👋 I'm Aaron, founder of AffRef. Drop your email and your question and I'll get back to you fast.
By chatting you agree to our privacy policy.
End this chat? History on this device clears.