Billing
RevenueCat
Connect RevenueCat so subscriptions, one-time purchases, renewals, and refunds attach to the creator who drove the install. Work in Tap App Link first, then click through the RevenueCat dashboard with the values you copied.
Vendor reference: RevenueCat webhook docs · Dashboard: https://app.revenuecat.com
1. Copy the URL from Tap App Link
- Open your app, then Revenue Tracking.
- Switch the workspace to the environment you are connecting (Sandbox or Production). Each environment has its own URL and secret.
- Select RevenueCat and generate a signing secret.
- Copy the webhook URL and the Authorization value shown next to it.
2. Identify in your app
After trackInstall(), call setAppUserId() with Purchases.getAppUserID() / Purchases.shared.appUserID. The id on the webhook has to be the same string.
- After Purchases.configure, read the App User ID with Purchases.getAppUserID() (iOS: Purchases.shared.appUserID).
- If you call Purchases.logIn, call setAppUserId after logIn so the id matches the one RevenueCat puts on webhooks as app_user_id.
- Call setAppUserId immediately after trackInstall, before the first purchase.
await TapAppLink.trackInstall();
await TapAppLink.setAppUserId(await Purchases.getAppUserID());3. RevenueCat dashboard
- Open your project in the RevenueCat dashboard.
- In the left menu, open Integrations, then Webhooks.
- Choose Add new configuration.
- Name it so you can tell environments apart, for example Tap App Link sandbox or Tap App Link production.
- Paste the Tap App Link webhook URL for this environment.
- Set the Authorization header to the value copied from Tap App Link, including the word Bearer.
- Under which purchases to send, pick sandbox purchases for Tap App Link Sandbox, or production purchases for Tap App Link Production. RevenueCat is one project: this filter is store sandbox vs live, not a separate RevenueCat environment.
- Leave the webhook scoped to all apps in the project unless you only want one app.
- Leave event types enabled for the list below, or send all events. Unknown types are ignored.
- Save. Use Send test event from this configuration to confirm Tap App Link returns 2xx, then make a sandbox purchase on a TestFlight or Play license tester build.
Paste the copied value into RevenueCat's Authorization header field, including the word Bearer.
4. Events to keep enabled
Leave these event types on. Extra events are ignored. Unknown names return 2xx so the provider does not retry forever.
INITIAL_PURCHASENON_RENEWING_PURCHASETRIAL_CONVERTEDRENEWALCANCELLATIONUNCANCELLATIONEXPIRATIONREFUNDBILLING_ISSUEPRODUCT_CHANGE
5. Discount codes (optional)
Map discount.billingOfferId to a RevenueCat Offering identifier and present Purchases.getOfferings().all[billingOfferId].
Full product guide: Discount codes.
6. Verify in sandbox
- Switch Tap App Link to Sandbox and open the Live Attribution Debugger.
- Start a link session, scan the QR, then launch the test build with the sandbox SDK key.
- Confirm the timeline reaches install matched and billing customer linked. If you retry, call
resetForTesting()in debug builds first. - Trigger a sandbox purchase and confirm a paid event on the timeline.
Other providers
Superwall · Adapty · Qonversion · Billing overview
Questions: support@tapapplink.com.