v150 · Privacy · Migration

Attribution Migration Guide

The Attribution Reporting API (ARA) is being removed in Chrome 150. This interactive wizard walks you through detecting your ARA usage, mapping to Privacy Sandbox alternatives, and verifying the migration.

1 Detect
2 Map
3 Code
4 Timeline
5 Checklist

Step 1: Which ARA features are you using?

Select the ARA features present in your codebase to get a tailored migration plan.

Feature probe — live browser check

Step 2: ARA → Privacy Sandbox alternatives

ARA feature (removed) Recommended alternative Notes
Event-level reports Protected Audience API — reporting worklets Click/view attribution via PA auction reporting
Aggregatable reports Private Aggregation API Noisy aggregates from within PA or Shared Storage
Attribution-Reporting-Register-Source header Topics API + server-side aggregation Interest-based signals without cross-site identity
Attribution-Reporting-Register-Trigger header Protected Audience conversion reporting Trigger from within fenced frames
Aggregation coordinator Private Aggregation API with TEE coordinator Same coordinator infrastructure, different entry point
attributionsrc attribute Fenced Frame + reportEvent() Signal events from isolated ad frames

Step 3: Code comparison

Old ARA header-based approach vs. new Privacy Sandbox alternative.

Old — ARA header (removed Chrome 150)
// Server sets on source registration: Attribution-Reporting-Register-Source: { "destination": "https://advertiser.example", "source_event_id": "412444888111012", "expiry": 604800, "priority": 100, "aggregation_keys": { "campaignCounts": "0x159" } } // Trigger registration: Attribution-Reporting-Register-Trigger: { "event_trigger_data": [{"trigger_data": "1"}], "aggregatable_trigger_data": [...], "aggregatable_values": {...} }
New — Private Aggregation API
// In a Shared Storage worklet: class MeasurementOperation { async run(data) { // Encode conversion signal const bucket = BigInt(data.campaignId); const value = data.converted ? 1 : 0; // Report via TEE-based aggregation // (no cross-site identity leaked) privateAggregation .contributeToHistogram({ bucket, value }); } } register('measure-conversion', MeasurementOperation);

Step 4: Chrome 150 removal timeline

Chrome 104–148
ARA in origin trial / available
ARA headers and JS APIs available behind origin trial flag
Chrome 149
Deprecation intent announced
Console deprecation warnings added; blink-dev intent to remove published
Chrome 150 (current)
ARA removed from stable
attributionsrc, Attribution-Reporting-* headers, and JS registration APIs removed
Post-Chrome 150
Private Aggregation API stable
Full replacement surface available; Privacy Sandbox APIs stable for production use

Step 5: Migration checklist

Click each item to toggle pass/fail. Green = done, red = still outstanding.

see also

implementation reference

Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗