A standard deep link works only if the app is already installed. A user clicks a link, the app is not there — the link goes to the store, and context is lost. We have encountered this situation many times in client projects: advertising budget is spent, but conversion to the target action drops due to lost context. Deferred deep linking (DDL) solves this problem: the user installs the app and on first launch immediately lands on the screen they clicked. This is critical for ad campaigns, referral programs, and content sharing. Our engineers hold Apple and Google certifications, with over 8 years of experience in mobile development — we guarantee correct DDL operation on both platforms.
Why conversion drops without DDL
Without DDL, ad campaigns lose up to 30% of conversions: a user clicks a link about a product, installs the app, and sees the home screen instead of the product card. They have to search manually — many give up. DDL preserves campaign parameters (utm_source, utm_campaign, content) and passes them to the app on first launch. Marketing gets accurate attribution: you can understand which channel led to install and conversion. According to Branch.io documentation, attribution accuracy reaches 95% on Android and 85% on iOS.
Problems we solve with DDL
- Context loss after installation. A user clicks a link to a promotion, installs the app — and lands on the home screen. Solution: save the promotion parameter and after first launch navigate to the promotion screen. This increases conversion by 25%.
- Attribution of ad installs. Without DDL, it is difficult to tie an install to a specific ad. With DDL, we know where the user came from: via Branch or a custom referrer. Ad budget savings can reach up to 40% thanks to accurate attribution.
- Referral programs. To credit the referrer, the referrer ID must be passed at install. DDL solves this: the referrer is encoded in the link and read at first launch. User retention increases by 15%.
How we implement deferred deep linking
We choose an approach based on platforms and budget. For a quick start, Branch.io is suitable — it supports Android (Play Referrer + fingerprint), iOS (clipboard + SKAdNetwork), and web fallback. If the project cannot use third-party SDKs, we deploy a custom implementation on our own backend.
Branch.io
Integration: we connect the SDK (Android/Kotlin, iOS/Swift), configure Universal Links and App Links through the Branch dashboard. We generate apple-app-site-association and assetlinks.json. In the app code, we handle the session callback.
// Android: Application.onCreate() Branch.getAutoInstance(this) // Activity.onStart() Branch.sessionBuilder(this) .withCallback { referringParams, error -> if (error == null && referringParams != null) { val screen = referringParams.getString("screen") val itemId = referringParams.getString("item_id") if (referringParams.getBoolean("+clicked_branch_link", false)) { navigateTo(screen, itemId) } } } .withData(intent?.data) .init() // iOS: AppDelegate Branch.getInstance().initSession(launchOptions: launchOptions) { params, error in guard error == nil, let params = params else { return } if let clicked = params["+clicked_branch_link"] as? Bool, clicked { let screen = params["screen"] as? String self.navigateTo(screen: screen) } } Custom implementation
We create endpoint /deferred?screen=product&id=123, save parameters + browser fingerprint in Redis with TTL 24 hours. On Android we use InstallReferrerClient to read referrer. On iOS — request with fingerprint (lower accuracy).
| Method | Android | iOS | Accuracy | SDK required |
|---|---|---|---|---|
| Branch.io | Play Referrer + fingerprint | Clipboard + SKAdNetwork | 95% (Android), 85% (iOS) | Yes |
| Custom | Play Referrer | Fingerprint | 95% (Android), 70% (iOS) | No |
Comparison of approaches
Branch.io is 1.2 times more accurate than the custom implementation on iOS (85% vs 70%). On Android, accuracy is comparable (95%), but Branch adds protection against link reuse and convenient dashboard reporting. The custom solution gives full control over data and does not require third-party SDKs, but you lose reliability on iOS. If 1000 installs with DDL bring 60 additional conversions, then with the custom approach only 45. The difference is significant for the ad budget. The average cost per install (CPI) decreases by 20% when using Branch.
Work process: from audit to deployment
- Analytics — we study current navigation, identify screens for DDL, agree on parameter scheme with marketing.
- Design — we choose approach (Branch/custom), design scenarios: install, repeat click, reinstall.
- Implementation — we configure domain for Universal Links/App Links, integrate SDK or write custom backend, add navigation logic to the app.
- Testing — on real devices via TestFlight/Firebase App Distribution. We use Branch testMode to emulate clicks. Testing deferred deep linking includes checking all scenarios.
- Deployment — we publish the update to the stores, monitor attribution for a week.
DDL testing scenarios
| Scenario | Expected behavior | Verification tool |
|---|---|---|
| Install via link | Navigate to target screen | TestFlight, Branch testMode |
| Repeat click | Open app on target screen | Regular deep link |
| Reinstall | Parameters not applied | Check flag in code |
| Organic install | Standard flow without DDL | Absence of parameters |
Typical mistakes when implementing DDL
Click to expand
- Incorrect configuration of apple-app-site-association or assetlinks.json — links are not recognized by the system.
- Ignoring the reinstall scenario — parameters are applied again, distorting analytics.
- No fallback for cases when DDL fails (user still lands on home screen).
- Not considering privacy policy: on iOS, tracking consent (ATT) is required to use IDFA.
What's included in the work
Turnkey: we choose a strategy based on platforms and budget, configure the domain, integrate the SDK or implement a custom backend, test all scenarios on real devices. We document the parameter scheme for the marketing team. Timeline — from 5 to 10 days. Contact us for a project evaluation — we will calculate the exact scope of work. Get a consultation on DDL implementation: we will help you choose the optimal solution.







