Web-to-app handoff for a freemium funnel
Let users start onboarding in the browser and resume mid-flow in the app — no restart, no lost progress.
Freemium products love the web for the top of the funnel — it's frictionless, indexable, and shareable. But the best experience lives in the app. The handoff between them is where activation quietly bleeds: the user does three steps on the web, installs, and the app makes them start over.
The context cliff
A browser cannot pass state to a freshly installed app. So the email captured, the plan selected, the workspace named — all of it evaporates at install unless you deliberately carry it across.
Pass onboarding state through the store
When the web flow hands off to install, encode the progress into the deferred link. On first open, the app reads it and drops the user back into the funnel where they left it.
{
"deepLinkPath": "/onboarding/step-3",
"customData": {
"email": "sam@example.com",
"plan": "pro-trial",
"workspace": "acme",
"step": 3
}
}Pick the right resume screen
- Resume at the next incomplete step — never replay steps they already finished.
- Pre-fill, don't pre-submit — let the user confirm carried data so it feels trustworthy.
- Have a clean fallback if the payload is missing, so a cold install still works.
What moves
The metric is activation rate for web-originated installs, measured against a control that restarts onboarding. Removing even two redundant steps at the seam reliably lifts completed activation — and activation is the number a freemium business actually compounds on.
“Every step you make a user repeat after install is a step they're allowed to quit on.”