
App Analytics
Deep links and app destinations
A campaign link should deliver the content promised by the ad, whether the person has the app, lacks it or returns after a break. The destination is a journey …
A campaign link must deliver the content the ad promises, whether the person has the app, lacks it or returns after a break. The destination spans the ad, web domain, operating system and app.
Map the states
For each campaign URL, define the intended app screen and an equivalent web page. On iOS, universal links associate a website with an app; on Android, verified App Links do the same on supported devices.
When the app is not installed, a web URL can show website content. Installation alone does not guarantee the intended screen: the app must parse the URL and handle unavailable or restricted content.
| User state | Destination check | Good fallback |
|---|---|---|
| App installed and signed in | Correct product, article or offer screen | Relevant screen with clear recovery |
| App installed but signed out | Sign-in preserves intended destination | Return to promised content after login |
| App absent | Useful web content and installation choice | Do not strand the user at a store listing |
| Content expired | Honest explanation and relevant alternative | Avoid a blank or generic home screen |
Deferred deep links try to preserve a destination across installation; the sibling guide explains how they differ from ordinary deep links. Firebase Dynamic Links shut down on 25 August 2025, so check current provider support before relying on post-install routing.
A Universal Link uses the website's standard HTTP or HTTPS address for both destinations. iOS opens the installed app when the association is valid and opens the website in Safari when the app is absent. Apple calls the association a trust relationship between the website file and the app entitlement, not a custom scheme another app could claim.
Android App Links also use HTTP or HTTPS URLs and a verified website-app relationship. App Links are available from Android 6 on devices with Google services. Ordinary user-managed Android deep links work across Android versions but lack the same verified domain association.
iOS Universal Links vs Android App Links: Key Differences
- Platform Support
- iOS (iOS 9.3.1+), Apple devices only
- Link Format
- HTTPS URLs (standard web format)
- Domain Verification
- apple-app-site-association file on HTTPS server + app entitlement
- App Ownership Check
- Trust relationship between website and app (Apple’s system)
- Android Support
- Android 6+ with Google services
- Link Format
- HTTPS URLs (standard web format)
- Domain Verification
- Digital Asset Links statement in assetlinks.json at .well-known location
User State Destination Check – Best Practice
- App installed and signed inDeliver correct product, article or offer screen
- App installed but signed outPreserve destination after sign-in; show clear recovery path
- App absentShow useful web content with clear install option — no store-only landing
- Content expiredProvide honest message and relevant alternative — avoid blank or generic home screen
Choose a link form
Deep linking describes the destination: a link opens a particular piece of content instead of making someone navigate from the app or website home page. Link format determines how the operating system routes that request. For content on a website you control, standard HTTPS links with platform domain verification provide both a direct app route and a web route.
A custom URI scheme can identify app content, but it is not a standard web URL and another app can register the same scheme. On Android, more than one app may match a deep link: the system can use a default app, open the only match or show a dialogue letting the person choose. Verified App Links add a domain-ownership check for website links.
Associate the website and app
For iOS Universal Links, create an apple-app-site-association file listing the website paths the app can handle, upload it to the HTTPS web server and add the associated-domains entitlement to the app. The app must also handle the incoming link. Apple advises a separate association file for each domain with unique content the app supports.
For Android App Links, declare the website URLs in an intent filter in the app manifest and request verification with android:autoVerify="true". Publish a Digital Asset Links statement in assetlinks.json at the domain's .well-known location; its SHA-256 signing-certificate fingerprint must match the app. Android uses this association to verify the website and route matching links to the app.
Apple advises keeping the Universal Link path list fairly short and using wildcard matching where appropriate. For apps running iOS 9.3.1 and later, the uncompressed association file must be no greater than 128 KB. On Android, the manifest's intent filters and website association both determine which URLs are eligible to open in the app.
Setting Up Verified App Links (Android)
- Declare URLs in app manifestAdd intent filter with android:autoVerify="true" for target URLs
- Publish Digital Asset Links fileUpload assetlinks.json to https://example.com/.well-known/assetlinks.json
- Test link routingUse Android Studio’s App Links Assistant or test via device
Define the destination rules
Treat the URL as input the app must interpret, not as a screen by itself. On Android, an intent filter can specify schemes and constrain accepted URLs by path, path pattern or path prefix; the app uses the incoming intent data to direct the person to the right content. Agree which URL patterns map to which app content before distributing campaign links.
Android 15 and later add Dynamic App Links on devices with Google services. Supported link rules - paths, query parameters, fragments and exclusions - can be adjusted in the hosted assetlinks.json file without releasing a new app version. The app manifest must still allow the relevant link patterns.
Test the actual journey
Use a device matrix covering iOS and Android, installed and uninstalled states, signed-in and signed-out states, and the campaign's real placements. Open a link by tapping it in the intended app or message; entering it in a browser bar can behave differently. Record the URL, device, app version, outcome and defect owner.
Track the rate of valid destination opens alongside clicks, installations and useful downstream actions. A click does not prove the promised screen loaded. Keep parameters free of sensitive customer data and preserve a web route where possible.
In this guide
- Deferred deep links versus ordinary deep linksAn ordinary deep link takes someone who has the app to a specified screen. A deferred deep link also tries to carry the intended destination through an install so …
- Sending returning users to the correct app screen: setupA returning user who taps an ad for a particular product should not land on the app home screen without a reason. Define the destination as content, not merely …
- Testing deep links when the app is not installedThe uninstalled-app route is where a campaign promise often disappears. Test it as a customer journey: tap the actual ad link on a device without the app and check …
- Tracking broken links between campaigns and app contentA campaign link can register a click while failing to open the intended content. Monitor the destination, not only the ad platform's click count.



