Deferred Deeplinks

Bridge your web funnel to your native app with deferred deeplinks and pass user context securely for a seamless post-purchase experience.

Deferred deeplinks let you send users from your web funnel into your native app — even if the app is not installed yet. They preserve context (like the user’s email or ID) across install and first open, enabling automatic sign-in and personalized onboarding.

This guide covers using AppsFlyer OneLink with Zellify.

  1. A user completes a step in your Zellify funnel (e.g., purchase or onboarding).

  2. The user clicks a button configured with an AppsFlyer OneLink URL.

  3. If your app is installed, the link opens the app directly; if not, the user is sent to the App Store / Play Store based on device.

  4. On first open after install, the AppsFlyer SDK delivers the original link data (including any query parameters Zellify appended) to your app.

  5. Your app reads these parameters (e.g., email, user ID) to sign the user in or complete setup.

Set Up in Zellify

  • In AppsFlyer, create a OneLink and enable deferred deep linking.

  • Configure your iOS and Android destinations.

  • Copy your base OneLink URL (for example: https://yourapp.onelink.me/abc123).

  1. Open your funnel in the editor.

  2. In the left sidebar Component Library, scroll to Integrations.

  3. Add the AppsFlyer OneLink component to the page where you want the link.

  4. In the component settings, paste your AppsFlyer OneLink into OneLink URL.

  5. Optionally select which parameters Zellify should append to the link when a user reaches this page, and customize the parameter key names if desired.

  6. Publish the funnel to apply these changes.

Optional parameters you can append

Select which parameters to include and customize their keys. Available options:

  • Current user email address

  • Current funnel identifier

  • Current time when link is generated

  • Current customer UID

  • Current organization

Notes:

  • Zellify URL-encodes parameter values automatically.

  • Parameter key names are configurable. For example, you can use &amazingEmail={email} to send the user’s email under a custom key.

Example final URL shape after Zellify appends parameters:

https://yourapp.onelink.me/abc123?email=jane.doe%40example.com&userId=usr_123&funnelId=fnl_789&timestamp=1731436800

Example with customized keys:

https://yourapp.onelink.me/abc123?amazingEmail=jane.doe%40example.com&customer_uid=usr_123&funnel=fnl_789

Important prerequisites and warnings

  • If you expect to append email, the user must have authenticated earlier in the funnel so Zellify knows their email. If there’s no prior authentication step, the email cannot be interpolated and will not be added.

  • Similarly, Current customer UID and Current organization require that the funnel session has that context available.

  • Keep parameter names stable (or update your app’s parsing accordingly) so your app can reliably read them.

Step 3: Test end-to-end

  1. Complete a test flow in your funnel (use sandbox/test environment when possible).

  2. Click the OneLink button on a real device (not a simulator).

  3. If the app isn’t installed, install it from the store and open it.

  4. Verify your app receives the appended parameters on first open via the AppsFlyer SDK.

  5. Confirm the app links the session to the correct user and purchase.

Implementing in your mobile app

  • Integrate and initialize the AppsFlyer SDK on iOS and Android.

  • Handle OneLink/deep link callbacks on first open and subsequent opens.

  • Parse your chosen parameter keys (including any custom names you set in Zellify) and use them to sign the user in or continue onboarding.

  • Avoid placing secrets or tokens in URL parameters. Only pass identifiers; fetch sensitive data server-side after validation.

Refer to the official AppsFlyer documentation for OneLink setup and SDK deep link handling.

Best Practices

  • Pass only the minimum identifiers needed (e.g., email or userId) and fetch the rest via your API.

  • Use a short-lived in-app flow to validate the purchase server-side after open.

  • Maintain separate OneLinks for staging and production environments.

  • Log link clicks and app opens to monitor attribution health.

  • Keep parameter keys consistent across environments, or ensure your app handles variations.

Parameters are missing when the app opens
  • Confirm you used the OneLink base URL in the component and not a direct app URL.

  • Ensure the AppsFlyer OneLink component is configured to append the parameters you need.

  • Verify the required funnel context exists (e.g., user authenticated before this page to populate email).

  • Check that the AppsFlyer SDK is initialized before your deep link handling logic.

  • Inspect the final URL in the browser’s address bar or network logs to ensure parameters are appended.

Wrong user is signed in
  • Prefer a single source-of-truth identifier (email or userId) and ensure it’s accurate at the time of link generation.

  • Clear app caches between tests to avoid stale state.

  • Validate server-side that the purchase/session matches the identifier received.

Works on iOS but not Android (or vice versa)
  • Double-check package IDs, SHA certificates (Android), and associated domains (iOS).

  • Ensure both platforms are configured correctly in AppsFlyer.

  • Test with clean install flows on each platform.

Last updated