Deferred Deep Link
Send users to the right place in your app from the web.
After a user completes a purchase in your funnel, you’ll often want to guide them into your app. The smoothest way to do this is with Deferred Deep Links (DDLs).
DDLs let you include data—like a user email—within a single link. That link can:
Send new users to the App Store if the app isn’t installed
Open the app directly if it is already installed
And most importantly: pass metadata (like email) into the app on first launch, even after install
This creates a seamless post-purchase experience — no manual steps.
How to Set It Up
1. Create a OneLink in AppsFlyer
Go to your AppsFlyer dashboard and generate a OneLink. Example:
https://yourapp.onelink.me/example
2. Add the OneLink in Your Funnel
In your funnel editor, find the AppsFlyer OneLink component in the sidebar component library.
Drag it into your flow and configure the button with the following:
Set the link to:
https://yourapp.onelink.me/example
Set Custom Key:
Pass the current user’s email address as a custom key.
If you don’t specify a key, it will default to
deep_link_sub3
.
Optional Dynamic Variables:
You can also pass additional context through the OneLink using dynamic variables such as:
Current funnel identifier
Current organization
Current timestamp
Any custom variables you may need
That’s it for the web configuration! Next, you’ll need to handle the link in your app to extract and use this data.
Handling DDL in Your App
To receive and process the data (like the email), follow AppsFlyer's DDL setup documentation.
Here’s a Swift example of how to extract the email on first app launch using AppsFlyer’s SDK:
import AppsFlyerLib
class AppsFlyerDelegateHandler: NSObject, AppsFlyerLibDelegate {
static let shared = AppsFlyerDelegateHandler()
func onConversionDataSuccess(_ data: [AnyHashable : Any]) {
if let userEmail = data["deep_link_sub3"] as? String {
// TODO: identifyUser(with: userEmail)
}
}
func onConversionDataFail(_ error: Error) {
print("AppsFlyer DDL failed: \(error)")
}
}
Last updated