Deep links & app destinations: Map intended app screen and equivalent web page for each campaign URL; Use verified App Links (Android) or Universal Links (iOS) to associate website and app; Test journeys across devices, app states and real ad placements
Image: Mobile Growth Guide

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 stateDestination checkGood fallback
App installed and signed inCorrect product, article or offer screenRelevant screen with clear recovery
App installed but signed outSign-in preserves intended destinationReturn to promised content after login
App absentUseful web content and installation choiceDo not strand the user at a store listing
Content expiredHonest explanation and relevant alternativeAvoid 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)

  1. Declare URLs in app manifestAdd intent filter with android:autoVerify="true" for target URLs
  2. Publish Digital Asset Links fileUpload assetlinks.json to https://example.com/.well-known/assetlinks.json
  3. 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

  1. 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 …
  2. 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 …
  3. 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 …
  4. 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.

More from App Analytics