Deferred Deep Links (DDLs) provide the most seamless way to guide users from your funnel to your mobile application after purchase, eliminating the need for manual login or authentication. You’ll configure these links using button actions in the Visual Editor.
This guide uses AppsFlyer OneLinks. You’ll need an active AppsFlyer account to implement deferred deep link identification.
Deferred deep links (DDLs) enable you to pass information (such as user identifiers or tokens) through a single link that can:
  • Redirect new users to the App Store if the app isn’t installed
  • Automatically open the app if it’s already installed
  • Deliver metadata (like authentication tokens) into the app on first launch, even after installation
This creates a frictionless post-purchase experience with no login steps required.

Prerequisites

Before setting up deep links, ensure you have:
  • AppsFlyer account with OneLink configured
  • Mobile app with AppsFlyer SDK integrated
  • FunnelFox funnel ready for button configuration

Configuration

Funnel Setup

1

Generate AppsFlyer OneLink

  1. Log into your AppsFlyer dashboard
  2. Create a new OneLink or use an existing one
  3. Copy your OneLink URL (format: https://yourapp.onelink.me/example)
2

Create Button Element

  1. In your funnel, add a Button element where you want the app redirect
  2. Configure the button with External Link action
  3. (Optional) Mark this button as CTA for analytics tracking
3

Configure Deep Link URL

Set the button link with ffkey query parameter using user variables:
https://yourapp.onelink.me/example?ffkey={{user.session_id}}
You can use other identifiers like {{user.profile_id}} or custom properties depending on your authentication flow.
Your web configuration is now complete! Next, you’ll need to handle these links in your mobile application.

Mobile App Implementation

The goal is to read the ffkey query parameter from the deep link and use it to identify or authenticate the user automatically. When the app isn’t installed, AppsFlyer SDK will invoke a callback (typically onConversionDataSuccess) with the original link parameters after installation.

Implementation

  1. Listen for the callback from AppsFlyer SDK
  2. Extract ffkey from the conversion data
  3. Identify/authenticate the user using the extracted key
For complete implementation details, refer to the AppsFlyer documentation.

Code Examples

import AppsFlyerLib

class AppsFlyerDelegateHandler: NSObject, AppsFlyerLibDelegate {
    static let shared = AppsFlyerDelegateHandler()

    func onConversionDataSuccess(_ data: [AnyHashable : Any]) {
        guard let status = data["af_status"] as? String, 
              status == "Non-organic" else { return }

        if let sessionId = data["ffkey"] as? String {
        // Identify user using the AppsFlyer DDL ffkey from conversion data.
        }
    }

    func onConversionDataFail(_ error: Error) {
        print("AppsFlyer DDL failed: \(error)")
    }
}