← Back to Blog
Measure Add to Home Screen conversions: phones adding a PWA icon with a funnel chart

How to Measure Add to Home Screen Conversions and Track PWA Installs (2026)

To measure Add to Home Screen conversions properly, you need more than a count of install prompts. A PWA install happens in the browser, sometimes outside your own UI, and on iOS it fires no event at all. This guide shows how to track PWA installs on Android and iOS, which signals to trust, and how to connect installs back to the campaigns that drove them.

What counts as an Add to Home Screen conversion

"Install" covers several different moments, and mixing them is the most common reason PWA install numbers look wrong. Define each step of the funnel separately:

Funnel step

What it means

How you observe it

Eligible

The browser considers the app installable

beforeinstallprompt fires (Chromium browsers)

Prompt shown

Your UI or the browser showed the install dialog

Your own event when you call prompt()

Prompt accepted

The user tapped Install in the dialog

userChoice resolves with outcome: "accepted"

Installed

The app was added to the device

appinstalled event (Chromium browsers)

First standalone launch

The user opened the app from the home screen

display-mode: standalone on load, first time

Active installed user

The user keeps returning through the installed app

Repeat standalone sessions

The conversion that matters for most campaigns is not "prompt accepted" but installed followed by real use. A home screen icon that is never opened adds nothing.

If you need a refresher on how the prompt itself works on each platform, start with our guide to the Add to Home Screen prompt.

How to track PWA installs on Android (Chromium browsers)

Chrome, Edge, Samsung Internet and other Chromium browsers expose three useful signals.

1. Eligibility. Listen for beforeinstallprompt, store the event, and log that the visitor was eligible. This gives you the denominator for your install rate.

let deferredPrompt;
window.addEventListener('beforeinstallprompt', (e) => {
  e.preventDefault();
  deferredPrompt = e;
  track('pwa_install_eligible');
});

2. Prompt outcome. When the user clicks your install button, call prompt() and read userChoice.

installButton.addEventListener('click', async () => {
  track('pwa_install_prompt_shown');
  deferredPrompt.prompt();
  const { outcome } = await deferredPrompt.userChoice;
  track('pwa_install_prompt_' + outcome); // accepted or dismissed
  deferredPrompt = null;
});

3. Installation. Listen for appinstalled. It also fires when the user installs from the browser menu rather than your button, so use it as the install count rather than "prompt accepted".

window.addEventListener('appinstalled', () => {
  track('pwa_installed');
});

How to track PWA installs on iOS

Safari on iOS has no beforeinstallprompt and no appinstalled. Users add the app through the Share menu, and your page is not told. That leaves two practical approaches:

  • Count first standalone launches. When the app opens from the home screen, it runs in standalone mode. Check it on load and record the first one per device.
const isStandalone =
  window.matchMedia('(display-mode: standalone)').matches ||
  window.navigator.standalone === true; // iOS Safari

if (isStandalone && !localStorage.getItem('pwa_first_launch')) {
  localStorage.setItem('pwa_first_launch', Date.now());
  track('pwa_first_standalone_launch');
}
  • Tag launches through the manifest. Give start_url in the web app manifest a parameter such as ?source=homescreen, so every home screen launch is identifiable in analytics, not just the first.

On iOS, "installed" therefore means "opened from the home screen at least once". Installs that are never opened are invisible. Report iOS on that definition rather than mixing it with Android's appinstalled count.

Also check that the manifest is valid, because an app that does not meet installability requirements never becomes eligible on Chromium. Our PWA manifest requirements guide lists the fields browsers check.

Sending install events to GA4 as key events

Any analytics tool works, but with GA4 the setup is short:

  1. Send the funnel events with gtag('event', 'pwa_installed', {...}) or through Google Tag Manager, using consistent names across platforms.
  2. Mark pwa_installed (Android) and pwa_first_standalone_launch (all platforms) as key events in GA4, so they can be reported and, where you choose, imported into Google Ads as conversions.
  3. Add a custom dimension for display mode (browser vs standalone) and send it with every page view. This lets you compare engagement and purchases between installed users and browser users, which is usually the most persuasive number for the PWA business case.

Connecting installs to the campaign that drove them

An install event is only useful for optimisation if you know which ad, campaign or link produced it.

  • Capture first-touch parameters on landing. Save UTM parameters and click IDs (such as gclid, fbclid or ttclid) in first-party storage when the visitor lands, and attach them to the install events you send later.
  • Know where storage is shared. On Android, an installed PWA generally uses the same origin storage as the browser, so values saved before installation are available after it. On iOS, a Home Screen web app does not share Safari's cookies and storage, so values saved in Safari before installation are not visible inside the installed app.
  • Use a server-side identity where you can. If the user signs up or logs in before installing, attach attribution to the account on your server. This survives storage boundaries and lets you send conversions server-to-server to ad platforms.
  • Count each install once. appinstalled can coincide with an accepted prompt, and first-launch logic can repeat if storage is cleared. Deduplicate on your side with a device or user identifier before reporting conversions to an ad platform.

Benchmarks and reading the numbers

Install rates vary widely by audience, traffic source and how the prompt is presented, so external benchmarks are of little use. Track your own funnel over time instead:

  • Eligible → prompt shown: tells you whether your install UI is actually reaching people.
  • Prompt shown → installed: reflects the value proposition and timing of your prompt.
  • Installed → first launch → 7-day return: shows whether installs turn into usage.

When you change the install UI or the moment you ask, compare these ratios before and after rather than total installs, which also move with traffic. Our PWA landing page guide covers how the page structure around the install step affects these rates.

FAQ

Can I detect a PWA install on iOS?

Not directly. Safari on iOS does not fire beforeinstallprompt or appinstalled. The reliable signal is the first launch in standalone mode, so iOS installs are measured as "opened from the home screen at least once".

Should I count "prompt accepted" or "appinstalled" as the conversion?

Use appinstalled on Chromium browsers. It also captures installs started from the browser menu and confirms the installation, while "accepted" only records the choice in your dialog.

How do I know if a session comes from the installed app?

Check window.matchMedia('(display-mode: standalone)').matches on load (and navigator.standalone on iOS Safari), or add a source parameter to start_url in the manifest. Send the result as a custom dimension with every page view.

Can install events be used as conversions in Google Ads or Meta?

Yes, as web conversion events. Send them through the platform's tag or server-side API, deduplicate them, and pass the original click ID where possible so the conversion is credited to the right campaign.

The short version

To measure Add to Home Screen conversions, separate eligibility, prompt, install and first launch. On Android, count appinstalled; on iOS, count the first standalone launch. Tag launches through the manifest, capture campaign parameters at landing, attach them server-side when you can, and judge success on installed users who keep coming back. ROIBest works with teams running PWA campaigns on this kind of install funnel.

ROIBest

Build your next growth engine with ROIBest

Talk to our team about a stable, high-converting Android PWA solution.