App link only works if the app is installed

Custom scheme links, such as ones starting myapp, only open an app that's already installed and show everyone else an error. Use https links in ads instead.

SymptomSome people tap the link and see a cannot open page error, a blank screen or nothing at all.
Likely causeThe link uses the app's own custom scheme instead of https, so it has no website or store fallback.
FixUse an https link that opens the app when installed and a web page or store otherwise.

Short answer: A custom scheme link, such as myapp://product/1, asks the phone to open one specific app. If the app isn't installed, there's nothing to fall back to, so people see an error or nothing happens. In ads, emails and social posts, use an https link that opens the app when it's installed and a web page or store page when it isn't.

What is a custom scheme link?

Custom scheme link: a link that starts with an app's own prefix, such as myapp://, instead of https://, and only works on a device where an app has claimed that prefix.

Universal links and App Links: Apple's and Google's names for normal https links that open an app directly when it's installed and the website is set up to vouch for the app. When the app isn't installed, the same link opens the web page.

Why do custom scheme links fail in campaigns?

Because most people who see an ad don't have the app yet, and a custom scheme link has no web address to fall back on. Google also notes that any app can claim a custom scheme, so the link can open the wrong app or a chooser.

  • No app installed: the phone has nowhere to send the link, so the user sees an error.
  • Inside other apps: Chrome on Android won't launch an app from a custom scheme without a tap from the user, and won't do it from a typed address redirect.
  • Not trackable on the web: with no web page in between, website analytics never see the visit or its UTM tags.

Example

A custom scheme link in an Instagram ad:

myapp://product/123?utm_source=instagram&utm_medium=paid_social

The same destination as an https link on your own domain, which your developers can set up as a universal link and App Link:

https://example.com/product/123?utm_source=instagram&utm_medium=paid_social&utm_campaign=launch

People with the app installed go straight into it. Everyone else gets the web page, where you can show the product and a store button.

How to fix it

  1. Paste the link into the link checker. It labels custom scheme links so you can spot them in a campaign sheet.
  2. Ask your developers whether the app supports universal links (iOS) and App Links (Android) on your domain. The developer notes cover the setup.
  3. Replace every myapp:// link in ads, emails and bios with the matching https link.
  4. Add UTM tags to the https link with the UTM builder, so web visits are credited correctly.
  5. If the link should also send new users to the right store, see one link for both stores.
  6. Keep custom scheme links for places where the app is certain to be installed, such as inside the app itself or push notifications your app handles.
FAQ

Common questions

Is myapp:// the same as a deep link?

It's one kind of deep link, meaning a link to a screen inside an app. The other kind uses https, which is safer in campaigns because it still works without the app.

Why does my app link show cannot open page on iPhone?

The phone doesn't have an app that handles that scheme, usually because the app isn't installed. An https universal link would open the web page instead of an error.

Can I add a fallback to a custom scheme link?

On Android, Google documents an `intent://` format for Chrome with a fallback web address. There's no equivalent in a plain `myapp://` link, which is why https links are the usual choice.

Should I put custom scheme links in emails?

Generally not. Many readers won't have the app installed, and those readers would see an error rather than a page.

What are UTM parameters?

UTM parameters are tags added to the end of a link, such as utm_source and utm_campaign, that tell analytics tools where a visit came from. They let you see which campaign, channel and ad brought each visitor.

Which UTM parameters are required?

Use utm_source, utm_medium and utm_campaign on every campaign link. utm_term and utm_content are optional and help you compare keywords or ad variants.