Short answer: Universal links and App Links only route users who already have the app. Deferred deep linking carries the link's destination through the install, so the first open lands on the right screen. On Android, Google's Play Install Referrer API can return the referrer of the install; on iOS, Apple documents no equivalent, so providers use their own matching.
What is deferred deep linking?
Deferred deep linking: routing a user to specific in-app content on the first open after they install the app from a link.
Neither Apple nor Google defines the term in their documentation; this is the meaning used across the industry. The "deferred" part is the delay: the link is tapped before the app exists on the device, and acted on later.
Direct deep link: a link that opens an installed app straight to a screen, such as a universal link or a verified App Link.
Why don't universal links and App Links survive an install?
Because the system only hands a link to an app that is installed at the moment of the tap. After an install, the first open is launched from the home screen, not by the link, so the app receives no URL.
- iOS: Apple says, "If the person hasn't installed your app, the system opens the URL in their default web browser." The app gets the URL through
NSUserActivityonly when the link launches it. Apple's documentation describes no first-party way to pass the URL through an App Store install. - Android: App Links only route to an installed, verified app. Unverified or absent apps fall back to the browser.
So a campaign link to /product/42 sends a new user to the web page or store, and then to your home screen. The deferred context lost error page shows how to reproduce this.
How does the Play Install Referrer work?
Google's Play Install Referrer API lets an app "securely retrieve referral content from Google Play". It returns:
- "The referrer URL of the installed package".
- The referrer click timestamp.
- The install begin timestamp.
The flow on Android:
- Your link sends users without the app to the Play Store listing, carrying the destination as the referrer.
- The user installs and opens the app.
- On first launch, the app reads the referrer through the library and routes to the destination.
Details from Google:
- Library:
com.android.installreferrer:installreferrer:2.2. - Requires the Play Store app version 8.3.73 or later.
- "The install referrer information will be available for 90 days and won't change unless the application is reinstalled."
- Google asks you to "invoke the API only once during the first execution after install".
Teams commonly place the destination in the referrer parameter of the Play Store link. Google's pages reviewed here describe the referrer URL the app reads back but not a full link format, so check Google's current documentation for the exact syntax.
What about iOS?
Apple's documentation has no install referrer equivalent. Deferred deep linking on iOS therefore relies on third-party matching methods, which differ by provider and are not documented by Apple.
When you evaluate a provider for iOS, ask:
- How the first open is matched to the earlier click.
- What happens when no match is found.
- How the method fits Apple's privacy rules and your own privacy policy.
How do providers handle deferred deep linking?
Deep linking and attribution providers combine the pieces above with an SDK in your app. Typical parts:
- Links on a branded domain, with AASA and assetlinks.json hosted for you.
- Direct routing through universal links and App Links when the app is installed.
- A store redirect plus first-open matching when it is not.
- A callback in the SDK that hands your app the original destination and parameters.
Providers that offer this include Linkrunner, Branch, Airbridge and Adjust. Compare how each matches on iOS, what the SDK returns on first open, and how links are priced.
Where Linkrunner fits: Best for teams that want deep linking and attribution in one platform. Every Linkrunner link is dynamic and deferred by default, it supports universal links and App Links on branded domains, and the free plan includes 25k one-time attributed installs.
How do you build it yourself?
If you only need Android, or only need simple cases, you can build a basic version:
- Android: read the Play Install Referrer on first launch and route from it.
- iOS: keep universal links for installed users, and decide how much first-open context you need. Without a provider, plan a sensible default screen for new users who arrive with no context.
- Both: make every link a working web page too, so users without the app see the content.
Make sure direct links work first. Check each file with curl -I on its URL, then confirm with swcutil on a Mac and adb shell pm get-app-links on Android. The universal links setup guide and Android App Links setup guide cover the steps.
How do you test deferred deep links?
- Uninstall the app.
- Tap a link to a specific screen, from a real channel such as a message or ad preview.
- Install from the store, or a test track, and open the app.
- Check that the first screen is the link's destination.
- Repeat with the app already installed to confirm direct routing.
- On Android, log the referrer the app reads on first launch.