Deeplinkly

Glossary/Metrics and growth

Web-to-app conversion

Definition

Web-to-app conversion is the process of moving a mobile web visitor into a native app, ideally landing them on the same content they were viewing rather than on a generic home screen.

The mobile web is where most first contact happens and the app is where retention and revenue live, so the handoff between them is one of the highest-leverage funnels a product has. It is also one of the leakiest, because every step crosses a boundary — browser to store, store to app — where context is discarded by default rather than preserved.

The funnel, and where each step leaks

There are five steps between a web visitor and an engaged app user, and each is a distinct problem with a distinct fix. Teams routinely optimise the first and lose everything at the fourth.

The web-to-app funnel with the typical failure at each step.
StepWhat has to happenTypical leakFix
1. PromptVisitor sees the app offerInterstitial dismissed or penalised by searchSmart app banner or an inline prompt
2. TapVisitor chooses the appNo reason given to switchState the benefit, not the brand
3. RouteApp opens if installedAlways sent to the store, even for existing usersUniversal link / App Link
4. InstallStore page to installed appLargest single dropNothing removes this; minimise binary size
5. Restore contextApp opens on the right contentDropped on a generic home screenDeferred deep linking

Step 3 is the one worth checking first, because it costs nothing to fix and is wrong on a surprising number of sites. Sending a user who already has your app to the store page is a pure loss: they bounce, or they tap Open and land on the home screen having lost the page they were reading.

Step 5 is where the value is. A user who installs to read a specific article and is dropped on a home feed has to find that article again, and most will not. The difference in first-session behaviour between contextual and non-contextual landing is usually the largest single lever in the whole funnel, and it is entirely under your control.

The routing decision, in code

The web page cannot reliably ask whether the app is installed — both platforms deliberately prevent that. The workable pattern is to let the platform decide: a universal link opens the app when it is installed and falls back to your web page when it is not, with the store redirect happening only from that fallback.

A link that lets the OS route, and preserves context either way
// Do not sniff for the app. iOS and Android both make that unreliable
// on purpose, and every timer-based trick misfires on slow devices.
//
// Instead: one universal/app link that carries the destination. If the
// app is installed the OS intercepts it; if not, the page below loads
// and forwards to the store with the same payload attached.
function appOrStoreHref(pathname, campaign) {
  const params = new URLSearchParams({
    // What the app should open once it is running.
    target: pathname,
    utm_source: campaign.source,
    utm_campaign: campaign.name,
  });
  return `https://links.example.com/open?${params.toString()}`;
}

// On the fallback page, forward to the store. The same params are held
// server-side against this click so the app can claim them at first open.
document.querySelector("#open-in-app").href =
  appOrStoreHref(location.pathname, { source: "mweb", name: "article-banner" });

Full-screen interstitials are a search ranking risk on mobile

Google has long treated intrusive interstitials that obscure content on mobile as a negative signal, and app-install interstitials are explicitly named in that guidance. A smart app banner or a compact inline prompt achieves the same handoff without the risk, which is a strong argument for the platform-native banner over a custom overlay.

Measuring it end to end

The measurement gap sits exactly at the store boundary. Web analytics ends when the browser leaves; app analytics begins at first open; nothing natively joins them. The join is the click identifier, and if it does not survive, your funnel is two disconnected halves that cannot be divided into a rate.

What each side of the boundary can see.
EventVisible to web analyticsVisible to app analyticsJoin key
Banner impressionYesNoSession ID
Banner tapYesNoClick ID issued here
Store page viewOnly via store console, aggregatedNoNone
InstallNoYesReferrer on Android, deferred match on iOS
First open with contextNoYesClick ID recovered
Post-install conversionNoYesYour user ID

The third row is a permanent blind spot on iOS: App Store page views are available only in aggregate through App Store Connect, never joined to a specific click. Plan the funnel with tap-to-install as one combined step rather than expecting to measure the store page separately.

  1. Issue a click ID at the tap and store it server-side with the destination.
  2. On Android, carry it in the Play install referrer so first open reads it directly.
  3. On iOS, recover it with a deferred match at first open — nothing survives the store on its own.
  4. Report banner impression → tap → install → contextual first open as four rates, not one.
  5. Segment by page type. An article banner and a checkout banner convert differently enough that a blended rate hides both.

Finally, compare retention between users who landed on context and those who did not. It is the cleanest internal argument for spending engineering time on step 5, and it usually settles the debate faster than any funnel percentage — see cohort analysis for the table that makes the comparison.

Universal link tester

Step three of this funnel — the app opening instead of the store for users who already have it — depends entirely on whether your universal link paths actually match. This checks a URL against your live association file and shows which component pattern matched or why none did.

Open the universal link tester

Frequently asked questions

What is web-to-app conversion?
It is the process of moving a mobile web visitor into your native app while preserving what they were doing, so they arrive on the same content rather than a generic home screen. It spans five steps — prompt, tap, route, install and context restoration — each of which leaks users for a different reason.
How do I know whether a visitor already has my app installed?
You cannot reliably detect it from a web page, and both platforms prevent it deliberately. The correct pattern is to let the operating system decide: use a universal link or Android App Link, which opens the app when it is installed and loads your web fallback when it is not, forwarding to the store only from that fallback.
Do app install interstitials hurt SEO?
Full-screen interstitials that obscure content on mobile are treated as a negative ranking signal by Google, and app-install interstitials are specifically named in that guidance. The platform-native smart app banner and compact inline prompts are not affected, which makes them the safer way to present the same offer.
Why does context get lost between the store and the app?
Because no URL parameter survives an App Store or Play Store visit by default. On Android the install referrer carries a payload through, but on iOS nothing does, so the app opens with no knowledge of the page the user came from unless a deferred deep link re-establishes it at first launch.
How do I measure the web-to-app funnel?
Issue a click identifier at the moment of the tap and store it server-side with the intended destination, then recover it at first open through the install referrer on Android or a deferred match on iOS. Report impression, tap, install and contextual first open as separate rates, since a single blended conversion number hides which step is actually leaking.

Related terms

  • Smart app bannerA smart app banner is a native promotional bar that Safari on iOS renders at the top of a web page when the page declares an `apple-itunes-app` meta tag, offering to open or install the associated app.
  • QR code deep linkA QR code deep link is a QR code encoding a universal or app link, so that scanning it opens the corresponding app directly on the intended content, or routes to the app store and restores that content after install.
  • Universal LinkA Universal Link is a standard HTTPS URL that opens an iOS app directly when that app is installed and the domain has authorised it, and loads the equivalent web page when it is not.
  • Cohort analysisCohort analysis groups users by a shared starting event, usually their install date, and measures each group separately over time so that changes in behaviour can be separated from changes in acquisition mix.