Skip to content

Deep links

A deep link is a link that opens the app directly on specific content (a product, a category, a page) instead of opening the home screen or the browser.

Without deep links configured, a notification or an email sends the user to the web version even if they have the app installed.

On a phone with the app installed, open a link to your domain from outside the app, for example from a note or a message. If the app opens on that content, deep links are active for that domain. If the browser opens, they are not, or the link does not meet one of the requirements below.

On iOS they are implemented with Universal Links and on Android with App Links. The mechanism is equivalent: the operating system associates your domain with the app, and when someone opens a link from that domain, the app opens if it is installed.

That association requires two things: publishing a verification file on your domain and declaring the domain in the app. It is an operating system requirement, not a Reskyt one.

Your web team publishes the verification files on your domain, because they live on your server:

SystemFileWhere it is published
iOSapple-app-site-associationhttps://yourdomain.com/.well-known/apple-app-site-association
Androidassetlinks.jsonhttps://yourdomain.com/.well-known/assetlinks.json

Reskyt declares the domain in the app. The contents of those files depend on the app’s identifiers, and are settled with the Reskyt team during project configuration.

Declaring a new domain, or changing it, is part of the binary: it requires publishing a new version of the app, and users who do not update keep the previous behaviour.

  1. Check that both files respond from a browser, at the URLs in the table above.
  2. On a phone with a version of the app that already includes the domain, open a link to that domain from outside the app.
  3. Repeat the test with a link sent from your email tool and from a push notification, which are the most used channels.

A notification can open a URL when tapped: that is the url field of the push API. If that URL belongs to an associated domain, it opens the content inside the app.

Many email tools rewrite links with their own tracking domain. A rewritten link no longer belongs to your domain, so the operating system does not associate it with the app and it opens in the browser. If your email tool allows a custom tracking domain, that is the way to keep the behaviour.

The link opens in the browser, at the same URL. That is why deep links should point to URLs that exist on your website: the link also works for people without the app, and there is no need to maintain two sets of links.

Checks, from the most frequent to the least:

  1. The URL does not belong to an associated domain, or it has been rewritten. How to check: the final link must start with your domain, not with a tracking tool’s.
  2. The verification file is not published or not reachable. How to check: open the URLs from the table above in a browser.
  3. The installed app predates the declaration of that domain. How to check: update the app from the store and try again.
  4. The user turned off link opening in the app. On Android it is a per-app option. How to check: Settings › Apps › app name › Open by default.
  5. The link is opened from another app’s in-app browser, which is common in social networks and messaging apps. That browser does not always hand the link to the system. Alternative: the in-app browser’s menu usually offers “Open in browser”, from where the link does open the app.

When a deep link opens the app that is already installed, all URL parameters are propagated as they are to the WebView.

The app does not add UTM parameters on its own. If your analytics needs to attribute campaigns, include your own utm_source and utm_medium in the link. See technical reference.