Mobile App with RevenueCat
Grant entitlements in your mobile app using RevenueCat after a web funnel purchase through Stripe or Paddle.
The Problem
You have a mobile app that uses RevenueCat to manage subscriptions and entitlements. You want to acquire users through a Zellify web funnel — run them through a quiz or onboarding, present a paywall, and collect payment via Stripe or Paddle. After the user pays, they need to end up in your app with the correct entitlements already granted.
How It Works
The end-user goes through your Zellify funnel (quiz, onboarding, personalization) and reaches the paywall
They complete checkout via Stripe or Paddle. The payment goes directly to your account. Zellify creates a customer in your payment provider with
app_user_idset in metadataStripe or Paddle sends a server-to-server webhook to RevenueCat with the transaction details
RevenueCat reads
app_user_idfrom the payment provider's metadata and creates (or updates) a subscriber profile with the correct entitlementsThe end-user lands on your success page, which contains a Deep Link Button configured with the
app_user_idThe end-user taps the button, is routed to your app (via App Store, Play Store, or directly if already installed), and the app initializes the RevenueCat SDK with the
app_user_idfrom the deeplinkRevenueCat returns the subscriber's entitlements — access is granted
What Zellify Handles
Generates a unique
app_user_idfor every funnel visitorSets
app_user_idon Stripe Customer/Subscription metadata or Paddle Customer/Transaction custom data at checkoutOptionally pre-creates a RevenueCat customer profile with email and funnel metadata (if the RevenueCat toggle is enabled)
Provides the Deep Link Button component on the success page, which interpolates
app_user_idinto the deeplink URL
What You Need to Set Up
1. Connect RevenueCat to your payment provider
This is the required step that makes entitlement granting work. RevenueCat needs to receive transaction events directly from Stripe or Paddle.
If you use Stripe:
Connect your Stripe account to RevenueCat
Configure server-to-server notifications (add RevenueCat's webhook endpoint in Stripe)
Enable "Track new purchases from server-to-server notifications"
Enable
app_user_iddetection from Stripe metadataMap your Stripe products to RevenueCat entitlements
Follow the full setup: RevenueCat: Stripe Integration
If you use Paddle:
Connect your Paddle account to RevenueCat
Configure server-to-server notifications
Enable "Track new purchases from server-to-server notifications"
Enable
app_user_iddetection from Paddle custom dataMap your Paddle products to RevenueCat entitlements
Follow the full setup: RevenueCat: Paddle Integration
For more details on Zellify's side of the RevenueCat configuration, see RevenueCat Integration.
2. Enable RevenueCat metadata enrichment in Zellify (recommended)
This is optional but recommended. When enabled, Zellify calls the RevenueCat API at checkout to pre-create a customer profile with:
app_user_id(the same one set on Stripe/Paddle)Email address
Funnel, campaign, and experiment metadata
This is valuable because the automatic server-to-server integration between Stripe/Paddle and RevenueCat does not carry the email address. By enabling this toggle, the email is available on the RevenueCat subscriber profile, giving you a second way to identify the user beyond app_user_id.
To enable:
Go to Dashboard → Settings → Integrations (https://dash.zellify.app/settings?tab=integrations)
Locate RevenueCat and toggle it on
Enter your RevenueCat REST API Key (starts with
sk_)
3. Configure the Deep Link Button on your success page
Add a Deep Link Button component to the page that appears after your paywall. In the component's configuration panel, set the URL to your deeplink scheme and enable app_user_id interpolation.
The button URL should route users to your mobile app. If you use a deferred deeplink provider (Adjust, AppsFlyer, Branch, etc.), configure the URL according to that provider's format. The app_user_id parameter will be interpolated into the URL automatically.
4. Initialize RevenueCat with app_user_id in your app
app_user_id in your appWhen your app opens from the deeplink, extract the app_user_id parameter and use it to configure the RevenueCat SDK. This tells RevenueCat which subscriber profile to load, and the entitlements granted from the web purchase will be immediately available.
Refer to RevenueCat's SDK documentation for how to configure a custom App User ID:
The Linking Key
The entire flow depends on app_user_id appearing in three places:
Stripe/Paddle metadata — set by Zellify at checkout, read by RevenueCat via server-to-server webhook
Deep Link Button URL — interpolated by Zellify on the success page, carried into your app
RevenueCat SDK initialization — your app uses it to load the correct subscriber profile
Because the same app_user_id is present in all three systems, the web purchase and the in-app experience are connected without any manual matching.
Related
Last updated

