Glossary/Android platform
Attribution Reporting API
Definition
The Attribution Reporting API was a Google API for Chrome and Android that measured ad conversions by registering ad clicks as sources and conversions as triggers, then returning noised event-level and aggregate reports, and it was retired in October 2025.
It was the Privacy Sandbox's answer to attribution without cross-party identifiers, and the closest thing the web and Android had to SKAdNetwork. Google announced its retirement on 17 October 2025, on both Chrome and Android. It is documented here because the design is still the clearest illustration of how noised attribution works, and because a great deal of live vendor documentation still presents it as forthcoming.
Status first
Retired on both Chrome and Android
Google's Privacy Sandbox announcement of 17 October 2025 lists the Attribution Reporting API among the technologies being retired on Chrome and Android. Chrome began removing the web implementation in early 2026. Do not start an integration, and remove any you have rather than leaving it to return empty reports.
| Surface | State reached | Now |
|---|---|---|
| Chrome (web) | Generally available, low adoption | Being removed |
| Android | Developer preview and beta | Retired before GA |
| Cross-platform (web-to-app) | Partially specified | Abandoned |
How it worked: sources and triggers
The model is worth knowing on its own terms, because every identifier-free attribution system converges on something like it. An ad click registers a source; a conversion registers a trigger; the browser or OS performs the join privately and emits a deliberately degraded report.
HTTP/1.1 200 OK
Attribution-Reporting-Register-Source: {
"destination": "android-app://com.example.shop",
"source_event_id": "84259648135568",
"expiry": "2592000",
"priority": "100",
"filter_data": { "campaign": ["spring_sale"] },
"aggregation_keys": { "campaignCounts": "0x159" }
}HTTP/1.1 200 OK
Attribution-Reporting-Register-Trigger: {
"event_trigger_data": [{
"trigger_data": "3",
"priority": "100",
"filters": { "campaign": ["spring_sale"] }
}],
"aggregatable_trigger_data": [{
"key_piece": "0x400",
"source_keys": ["campaignCounts"]
}],
"aggregatable_values": { "campaignCounts": 32768 }
}| Event-level | Aggregatable | |
|---|---|---|
| Granularity | One report per conversion | Summary across many conversions |
| Trigger data | 3 bits (clicks) / 1 bit (views) | Higher-precision values |
| Privacy mechanism | Randomised response noise | Differential privacy in an aggregation service |
| Delay | Randomised, in reporting windows | Randomised, ~1 hour minimum |
| Good for | Optimisation signals | Campaign totals and value |
Three bits, and randomised response
Event-level reports carried three bits of conversion data for clicks — eight possible values, the same order of magnitude as SKAdNetwork's six. Worse, a fraction of reports were deliberately falsified by randomised response, so a single report could not be trusted and only the distribution was meaningful. Every design in this space trades the same way.
Why it never took hold
- Operational cost. Aggregatable reports required running or contracting an aggregation service with trusted execution environments, a significant burden for anything short of a large ad network.
- No deadline. Once Google decided to retain third-party cookies in Chrome, the reason to absorb that cost disappeared.
- Noise budgets. Privacy budgets constrained how many queries you could run against a cohort, making everyday reporting slices unavailable.
- Bit budget. Three bits, plus randomised response, gave less usable signal than the identifiers it replaced.
- Android arrived late. The Android implementation never left preview, so nobody built production Android measurement on it.
The contrast with Apple is instructive: SKAdNetwork got adopted despite comparable limitations because the IDFA was removed at the same time. An identifier-free API only wins when the identifier goes away, and on Android it never did.
What replaces it
| Need | Use |
|---|---|
| Android install attribution | Play Install Referrer with a first-party click ID |
| Meta campaign attribution | Meta install referrer, decrypted server-side |
| iOS install attribution | SKAdNetwork and AdAttributionKit |
| Web-to-app routing and conversion | Universal Links and App Links with your own click ID |
| Post-install events | First-party server-side events keyed on your own identifiers |
The honest summary is that Android measurement did not move to a privacy-preserving aggregate model at all — it stayed where it was. That is a better outcome for anyone whose attribution is built on first-party link data, and a worse one for anyone who deferred that work waiting for the platform to solve it.
# App code and manifests
grep -rn "attribution-reporting\|AttributionReporting\|adservices" \
--include="*.kt" --include="*.java" --include="*.xml" app/src
# Server side: response headers you may still be emitting
grep -rn "Attribution-Reporting-Register" server/
# HTML for the web side
grep -rn "attributionsrc" web/Android SDK documentation
Our Android SDK measures installs from the Play install referrer and your own click IDs, so the Attribution Reporting API's retirement removes nothing from it — there was never a dependency to unwind.
Open the android sdk documentation →Frequently asked questions
- What is the Attribution Reporting API?
- It was a Google API for Chrome and Android that measured ad conversions without cross-party identifiers by registering an ad click as a source and a conversion as a trigger, letting the browser or operating system join them privately and return deliberately noised event-level or aggregate reports. Google announced its retirement in October 2025.
- Is the Attribution Reporting API deprecated?
- Yes. It was among the Privacy Sandbox technologies Google announced it was retiring on 17 October 2025, on both Chrome and Android, with Chrome beginning removal of the web implementation in early 2026. The Android implementation never reached general availability, so it was retired while still in preview.
- What is the difference between event-level and aggregatable reports?
- Event-level reports covered a single conversion and carried only three bits of trigger data for clicks, with a fraction of reports deliberately falsified by randomised response so individual reports could not be trusted. Aggregatable reports summarised many conversions with higher-precision values, but required an aggregation service running in a trusted execution environment and were subject to a privacy budget.
- Why did the Attribution Reporting API fail to gain adoption?
- Running aggregatable reports required significant infrastructure, the bit budget and randomised response left less usable signal than existing identifiers, privacy budgets restricted routine reporting slices, and the Android implementation never left preview. Once Google decided to keep third-party cookies in Chrome, the deadline that would have forced adoption no longer existed.
- What should I use for conversion measurement instead?
- On Android, the Play Install Referrer API carrying a first-party click identifier, plus the Meta install referrer decrypted server-side for Facebook and Instagram campaigns. On iOS, SKAdNetwork and AdAttributionKit. For post-install events on both platforms, first-party server-side events keyed on identifiers you control rather than on any platform-mediated aggregate report.
Related terms
- Privacy Sandbox on Android — The Privacy Sandbox on Android was Google's initiative to replace cross-app advertising identifiers with on-device APIs for interest inference, audience targeting and conversion measurement, and Google announced its retirement in October 2025.
- Play Install Referrer — The Play Install Referrer is a Google Play API that lets a newly installed Android app read the referrer string and click timestamps recorded when the user arrived at its Play Store listing.
- SKAdNetwork — SKAdNetwork is Apple's StoreKit framework that attributes app installs to advertising campaigns without exposing a device identifier, by having the operating system send a delayed, aggregated postback to the ad network that won the install.
- GAID — The GAID, or Google Advertising ID, is a resettable per-device identifier that Android provides for advertising and analytics, and which is replaced by a string of zeros for users who opt out of ads personalisation.