Measuring App Installs From Ads on iOS and Android

When you pay for ads that promote an app, you want to know which ad, network or campaign brought each install, and whether those people went on to sign up or buy. On the web, a click identifier in the link does that job. Inside the app stores it works differently: on iOS, Apple sends delayed, privacy-limited reports through its own frameworks, and on Android, Google Play passes the referral details to your app on first launch. This guide explains how each works and what to plan for. Checked against Apple and Google developer documentation on 5 November 2026.

The sources are Apple's developer documentation for AdAttributionKit, its pages on receiving ad attributions and postbacks, conversion windows and SKAdNetwork interoperability, plus SKAdNetwork and AdServices; Google's Play Install Referrer and Install Referrer library pages; and the Privacy Sandbox feature status page and October 2025 update. How to set up Apple Ads and Google App campaigns is in our app advertising guide; in-app analytics and Apple's tracking prompt are in our mobile app analytics guide.

Two platforms, two models

On iOS, the device itself decides which ad gets credit for an install and later sends a signed report, called a postback, to the ad network. The report carries campaign-level numbers, never a user or device ID, and arrives a day or more after the fact. On Android, Google Play stores the referral details from the link that led to the install, and your app reads them once on first launch. That gives you the campaign details for each install directly, which you then handle under your own privacy policy and consent rules.

Either way, the ad platforms do much of this for you if you use their SDKs or a mobile measurement partner. What you control is which in-app events count, how they are encoded, and whether your app calls the right APIs at the right time.

iOS: AdAttributionKit and SKAdNetwork

Apple's SKAdNetwork page now carries a note: "Use AdAttributionKit for app ad campaigns on the App Store and alternative marketplaces." AdAttributionKit is the newer framework; Apple's interoperability page says it "works with both the App Store and alternative app marketplaces, while SKAdNetwork works specifically with the App Store." The two share ad network IDs, and when an app updates a conversion value through SKAdNetwork, the system mirrors the call into AdAttributionKit.

Three parties take part, as Apple describes them:

  • Ad networks register with Apple, sign their ads, and receive postbacks;
  • Publisher apps list the networks' IDs and display their signed ads;
  • Your advertised app registers a conversion by updating the conversion value on first launch, and may keep updating it as the person uses the app.

If several ads qualify, only one wins. Apple's rule is that "attribution goes to the ad the person most recently tapped", or, if none was tapped, the one most recently viewed; taps always beat views, and at most six impressions are considered. For installs, up to five other networks get a nonwinning postback. You can also add a server address to your app's settings to receive "an exact copy of the winning postback", which is useful for checking what networks report.

One point that surprises many teams: Apple says apps "don't need to use AppTrackingTransparency before calling ad attribution APIs, and can call these APIs regardless of their tracking authorization status." You do not need the tracking prompt for this kind of measurement.

Conversion windows, delays and data tiers

Timing limits from Apple's attribution page:

  • After tapping an ad, a person has 30 days to install; after only viewing it, 24 hours.
  • After installing, the device has 60 days to send the first conversion value update, and your app sends that update when it is opened.
  • Re-engagement (an existing user opening the app from an ad) counts only for taps, not views.

After the first launch there are three conversion windows: days 0 to 2, days 3 to 7 and days 8 to 35, each producing one postback if your app updates the value during it. Postbacks are sent after the window closes plus a random delay: "24 to 48 hours for the first postback, and 24 to 144 hours for the second and third postbacks." An app can lock a value early to get the postback sooner.

How much detail you get depends on a postback data tier that Apple sets based on crowd size, so that small campaigns cannot identify people. In the highest tiers, the first postback has a fine-grained conversion value and a source identifier of up to four digits; in lower tiers you get a coarse value (low, medium or high) and two digits; at Tier 0 only the first postback is sent, with a two-digit source identifier. Second and third postbacks only ever carry coarse values. Design your events so the most important signal (say, completed sign-up or first purchase) fits a coarse low/medium/high scale and happens early.

Apple Ads: the AdServices attribution token

For Apple's own search ads in the App Store there is a separate route. Apple's AdServices page describes the Apple Ads Attribution API: your app requests a token from the AdServices framework, sends it to Apple's attribution server, and gets back a record whose values "correspond to your campaigns in the Apple Ads Campaign Management API". It covers only Apple Ads campaigns, not other networks.

Android: the Play Install Referrer API

On Android, Google's Install Referrer page says the API lets you "securely retrieve referral content from Google Play", including the referrer URL of the installed package, the time of the referrer click and the time the install began (both client and server side), and the app version at first install. It needs a Google Play Console account and works on devices with Play Store app version 8.3.73 or later. Kotlin and Java apps use Google's client library.

Google's library page adds a caution worth passing to your developer: the information "will be available for 90 days and won't change unless the application is reinstalled", and you should "invoke the API only once during the first execution after install", then close the connection. Campaign details reach the referrer through the Play Store link your ad or website uses, so tag those links consistently, in the same spirit as UTM links on the web.

Android Privacy Sandbox: retired

Google spent several years building Privacy Sandbox APIs for Android, including an Attribution Reporting API. In its October 2025 update, Google said it had decided "to retire" a list of technologies "in light of their low levels of adoption", including the "Attribution Reporting API (Chrome and Android)", Protected Audience, Topics and the SDK Runtime. The feature status page, last updated 14 August 2026, lists the Android APIs under "Deprecate and remove" and marks Attribution Reporting "Scheduled for phaseout." If an older plan or vendor pitch relies on it, ask what replaces it.

Planning your measurement

  • Decide the two or three in-app events that show an install was worth paying for, and make sure they can happen in the first days.
  • On iOS, agree a conversion value schema with your ad networks or measurement partner, including what low, medium and high mean.
  • Call the conversion update on first launch, and keep updating through the three windows if you want later postbacks.
  • Opt in to receive copies of winning postbacks, so you can check networks' numbers.
  • For Apple Ads, use the AdServices token; for Google Play, read the install referrer once on first launch.
  • Expect delays: judge campaigns on days of data, not hours.
  • List every advertising or measurement SDK in your App Store privacy labels and Play Data safety form.

Frequently asked questions

Do I need the App Tracking Transparency prompt to measure installs from ads?

Not for Apple's own attribution frameworks. Apple's AdAttributionKit and SKAdNetwork pages say apps don't need to use App Tracking Transparency before calling these APIs, and can call them regardless of the person's tracking choice. The prompt is only needed if you track people in Apple's sense.

Should I use AdAttributionKit or SKAdNetwork?

Apple's SKAdNetwork page now points to AdAttributionKit for app ad campaigns. The two work together: when both have impressions, the system picks one winner, and SKAdNetwork conversion value updates are mirrored into AdAttributionKit. Use what your ad networks support; calling both APIs is allowed.

How quickly do Apple attribution postbacks arrive?

Not in real time. Apple sends the first postback after the first conversion window (days 0 to 2) ends, or once the app locks the value, plus a random delay of 24 to 48 hours. The second and third postbacks follow their windows with a random delay of 24 to 144 hours.

How long is Google Play install referrer data available?

Google's Install Referrer library page says the information is available for 90 days and won't change unless the app is reinstalled, and recommends calling the API only once, during the first run after install.

Can I use the Android Privacy Sandbox Attribution Reporting API?

Google announced in October 2025 that it is retiring the Attribution Reporting API on Chrome and Android, along with other Privacy Sandbox technologies. Its feature status page lists the Android APIs as deprecate and remove, so it is not something to build on now.

Planning an app and want measurement built in from the start? See our mobile app development service and all our services, or email [email protected].