Bridgly
Troubleshooting4 min read

Why your app install link isn't working: a diagnostic checklist

Work through the failure modes in order — wrong destination, in-app browser blocking, broken deep-link association, stripped parameters, and dead store URLs. Each has a distinct symptom.

Install-link failures are frustrating because they are usually silent. The visitor closes the page and moves on. Nobody files a bug. You just see lower numbers than expected.

Work through these in order. Each has a distinct symptom.

Symptom: works on your phone, fails for roughly half of everyone else.

Check: open the link on the platform you did *not* build on. If an Android device lands on an App Store page, the link is not routing.

Fix: use a routing link that detects device and platform server-side.

This is the most common failure and the easiest to miss, because you test on your own phone and it works perfectly.

2. Custom URL scheme with no app installed

Symptom: blank page, an error, or a tap that visibly does nothing.

Check: does the URL start with something like myapp:// rather than https://?

Fix: use standard https store URLs. A custom scheme only works if the app is already installed — which, for an install campaign, is nobody.

3. In-app browser blocking

Symptom: works from Safari or Chrome, fails from Instagram, TikTok, or LinkedIn. Traffic from one social platform converts far worse than others with no obvious reason.

Check: post the link in an Instagram story and tap it from a real phone. Repeat on TikTok and LinkedIn, on both iOS and Android.

Fix: redirect server-side in a single hop to an https store URL, and render a visible fallback button if the automatic redirect does not fire.

This one is worth specific attention because social is usually where install links live. See in-app browsers break install links.

Symptom: the link opens a web page instead of the app, even though the app is installed.

Check (iOS): apple-app-site-association reachable at /.well-known/, served over HTTPS as JSON, with no redirect on that path, and the correct TEAMID.BUNDLEID.

Check (Android): assetlinks.json at /.well-known/, and — the usual culprit — the SHA-256 fingerprint matching the key Google Play actually signs with, not your local keystore. Play App Signing re-signs your app.

Fix: correct the file, then reinstall the app. Both platforms cache association state, so an old failed verification can persist.

5. Stripped tracking parameters

Symptom: redirects work, installs happen, but your analytics shows no source data.

Check: click a tagged link from inside an in-app browser and confirm the source tag actually arrives in your analytics — not just that the redirect completed.

Fix: keep query strings short and minimise redirect hops. Every hop is a chance for parameters to be dropped.

This is the sneakiest failure on the list, because everything appears to work. You only discover it when you try to explain where installs came from.

6. Dead store URL

Symptom: worked previously, now 404s.

Check: open the raw store URL directly in a browser.

Fix: update the destination. This is the argument for encoding a link you control rather than a store URL — especially in print and QR codes, where the artifact cannot be changed after it ships.

7. Region restrictions

Symptom: works for you, fails for users in other countries.

Check: is the app published in their store region? Some store URLs are region-specific.

Fix: confirm availability by region, and use a fallback that explains the situation rather than showing a bare error.

8. Desktop with no fallback

Symptom: desktop visitors hit an error or an app page they cannot act on.

Check: open the link on a laptop.

Fix: define a web fallback. Best case, that page offers a QR code so the visitor can move to their phone — which is the only device that can complete the install anyway.

A test matrix worth keeping

ContextiOSAndroidDesktop
Safari / Chrome
Instagram in-app
TikTok in-app
App installed
App not installed
QR scan from print

Six of those cells are where problems hide, and none of them are covered by "I tested it on my phone."

How Bridgly reduces the surface

Bridgly's routing is server-side, single-hop, to a standard https store URL — which eliminates failures 1, 2, and most of 3 by construction. Web fallbacks are configured per link, covering 8. Because the destination lives on the link rather than in whatever you published, 6 is a settings change rather than a reprint.

Start free · Read: QR codes for app downloads

The short version

  • Test on the platform you did not build on.
  • https store URLs, never custom schemes, for install flows.
  • Test inside Instagram and TikTok specifically.
  • Verify parameters *arrive*, not just that the redirect works.
  • Always define a desktop fallback.

Frequently asked questions

Why does my app store link open a blank page?
Most often the link uses a custom URL scheme such as myapp:// and the app is not installed, so the operating system has nothing to hand it to. It can also happen inside in-app browsers that block custom schemes. Using a standard https store URL resolves both cases.
Why does my link work on iPhone but not Android?
Usually the link points at a single store rather than routing by device, so Android visitors receive an App Store URL. It can also indicate a missing or mismatched assetlinks.json if you are relying on Android App Links.
Why is my install link losing tracking parameters?
Some in-app browsers strip or rewrite query strings, and some redirect chains drop them between hops. Keeping parameters short and minimising the number of redirect hops both help. Verify by checking whether the source tag actually arrives in your analytics, not just whether the redirect works.

Read more