Deep linking

For mobile teams routing paid funnel visitors into an iOS or Android app. You'll have a working plan for each major deep-linking provider. You need a Deep Link Button on the funnel's success page and a destination URL or universal link.

What Zellify provides#

Zellify ships two deep-linking components:

  • Deep Link Button — the standard component. Builds a URL from your destination + opt-in built-in parameters (app_user_id, email, fbp/fbc, Stripe customer ID, etc.) and forwards selected params from the funnel landing URL. Use this with Branch, Adjust, plain universal links, or any provider that accepts a query-string contract.
  • AppsFlyer OneLink — a dedicated AppsFlyer variant that loads the OneLink Smart Script and routes through generateOneLinkURL(). Use this if you're on AppsFlyer.

Both are React components in the funnel builder; you drop them on the success page.

Provider compatibility#

AppsFlyer (first-class)#

Use the dedicated AppsFlyer OneLink component. It loads the OneLink Smart Script automatically and handles the pid / c / afCustom plumbing for you, including the keys: [] defense against ad-network URL pollution.

If you'd rather not load the Smart Script, the standard Deep Link Button also works with OneLink — paste the OneLink URL as the destination and toggle on whichever built-in params you need. You won't get Smart Script's redirect optimisations and you'll need to manage pid / c yourself on the URL.

Adjust#

Use the standard Deep Link Button with an Adjust tracker URL as the destination, and toggle on App User ID so each click carries the funnel session identity. Adjust's deferred deep linking handles the not-installed case; on app launch, read the deep link from Adjust's SDK and parse app_user_id off the URL.

If you use Adjust's deep_link param, encode it on the destination URL up front:

Code
https://go.example.com/link?deep_link=myapp%3A%2F%2Fonboarding

Branch#

Use the standard Deep Link Button with a Branch link as the destination. Branch's $deeplink_path and $canonical_url go on the destination URL; toggle on App User ID so the user identity rides along:

Code
https://example.app.link/onboarding?%24deeplink_path=onboarding

Inside the app, read Branch's params on session init.

Point the standard Deep Link Button at your domain's universal link (iOS) or App Link (Android). Toggle on any built-in parameters your app reads from the URL.

Other providers#

Any provider that accepts query-string params works with the standard Deep Link Button. Configure the destination URL with the provider's link format and toggle on the built-in parameters your app needs.

Zellify does not call attribution SDKs server-side: Zellify does not call Adjust, Branch, or other attribution APIs from its backend. The SDKs run inside your app and do attribution, deferred routing, and their own measurement. The AppsFlyer integration runs in the browser via the Smart Script — the SDK still runs in your app for install attribution.
Deep Link Button
Standard component reference.
AppsFlyer OneLink
OneLink Smart Script integration.
Mobile app with RevenueCat
Recipe using the button.
Mobile app with custom backend
Same button, own backend.