Everyone building a web2app funnel (quiz → paywall → web checkout → open the app) talks about conversion rate on the quiz and paywall. Almost nobody talks about the step right after checkout, where the app has to recognize a user who just paid on a completely different surface - and that's the step that actually determines whether the funnel was worth building.
Why this is the hard part
The web checkout and the native app are, from an engineering standpoint, two different clients with two different identity contexts. The web session knows an email, a payment method, and whatever the quiz collected. The app, on first open, knows nothing. Bridging that gap with a deep link or a login screen sounds trivial until you actually have to handle:
- The app isn't installed yet. A deep link to an uninstalled app has to survive a trip through the App Store and still carry the purchase context on first open - this is what deferred deep linking exists to solve, and it's the single most common place these funnels silently lose paying users.
- The user already has the app installed under a different account, or isn't logged in at all when the deep link fires.
- Timing. Webhook-driven entitlement sync (payment provider → your backend → app) can lag behind the user opening the app, so the app has to handle "payment confirmed, entitlement not synced yet" as a real state, not an edge case.
- Platform identity vs. payment identity. The email used at checkout and the identifier the app uses internally (device ID, social login, phone number) aren't guaranteed to be the same thing, and reconciling them after the fact is a support ticket waiting to happen.
Why this matters more than it looks like it should
A person who already paid has a very low tolerance for friction. If the app can't recognize them cleanly on first open, you've converted them on the web and then lost them at literally the last step - and because they already paid, that failure mode generates refund requests and support load, not just a bounced funnel metric.
The fee context driving teams to build this anyway
The reason this pattern is worth the engineering investment at all: Apple's standard in-app commission is 30% (15% for developers under the Small Business Program's $1M threshold), and in the US specifically, link-out purchases are currently at 0% commission because of an active contempt order against Apple - though that's mid-litigation, not settled. Apple has proposed 15% / 10% / 5% rates depending on app type, which Epic is contesting, and a Ninth Circuit ruling from December 2025 left room for the district court to set an actual number. Japan already has a settled rate: 15%, or 10% for qualifying developers and renewal-year subscriptions, announced in December 2025 - with an explicit no-refunds policy on web-linked purchases, which pushes even more of the handoff and support burden onto the publisher's own stack.
RevenueCat's 2026 benchmark (115,000+ apps) shows this pattern concentrating among more sophisticated teams: 41% of top-revenue-tier apps report some web revenue, versus 1.3% in the bottom tier. That gap is plausibly as much about handoff engineering quality as it is about marketing spend - a team that can't build a clean account-matching flow is going to see worse numbers from the same funnel design.
What a reasonably solid handoff actually requires
- Deferred deep linking that survives the install step and restores purchase context on first app open, not just "open the app to the right screen."
- A webhook-driven entitlement check in the app that explicitly handles "payment succeeded, not yet synced" as a loading/pending state, not a silent failure.
- A reconciliation path for when the checkout email doesn't match an existing app account - merge, prompt, or create, decided deliberately rather than left as a null case.
- Logging on every step of the handoff (deep link fired, app opened, entitlement checked, entitlement confirmed) so a support ticket about "I paid but the app won't unlock" can actually be debugged instead of guessed at.
Varmeta's full writeup on web2app funnels covers the funnel stages, the fee rules by market, and when the model is worth building in the first place.
Discussion: if you've shipped one of these, what actually broke the handoff in practice - the deep link surviving install, the identity match, or the entitlement sync timing?
Top comments (0)