Appearance
Integration Overview
The web funnel sells the subscription. Your app gives access when the buyer signs in with the same email they entered in the funnel and verifies it. The email is the only link between the purchase and the app account; no click attribution is involved.
The Flow
text
Visitor completes the web funnel and checkout with their email
-> installs and opens your app
-> signs in with that email and verifies it
-> backend verifies the subscription with that email
-> matched user is returned with a stable user.user_id and access status
-> backend tracks the login and saves user.user_id on the account
-> later app opens verify access again with the saved IDIf you use AppsFlyer, you can prefill the sign-in email from a OneLink on the funnel's download button. See Connect your app.
The Trust Rule
Verify email ownership before looking up a subscription by email. A typed, prefilled, or link-provided value is not proof of ownership.
Identity And Access
- Call
POST /sdk/public/users/verify_subscriptionwith the verified email. It returnsactive, thetestmode flag, and, when a user matches,user.user_idwithout changing state. - If a user resolves, call
POST /sdk/public/users/track_loginwith thatuser_id, regardless of paid access. - Save the exact returned ID on the authenticated app account.
- On later app opens, verify access again with the saved ID.
Verification is read-only. Login tracking records App Login after identity ownership has been proven, including for users without a subscription. Unlock paid production content only when verification returns active: true and test: false.
Responsibilities
| Area | Responsibility |
|---|---|
| Web funnel | Capture email, show the paywall, and complete checkout. |
| Billing system | Create and track the subscription. |
| App | Sign the user in with email and verify it. |
| Customer backend | Verify access by email, track login, and save the stable funnelsgrove user ID. |
| funnelsgrove SDK API | Resolve project-scoped subscription state and record App Login. |
| App backend webhook receiver | Optionally receive signed funnel user, payment, and subscription updates. |
FAQ
What if the user signs in with a different email?
verify_subscription returns user: null. Ask them to sign in with the email they used in the funnel. Never move access from an unverified email.
What if the user paid but has not signed in to the app yet?
Nothing happens until they sign in. Remind them by email to install the app and sign in with the same address.
Which platforms fit this flow?
Any app with email sign-in: iOS, Android, or web. Nothing in the flow is platform-specific.