[Obsolete] Migration guide (Chrome 92): Conversion Measurement API to Attribution Reporting API

The Conversion Measurement API is changing in Chrome 92.

What's changing?

Following the API proposal's changes in the first months of 2021, the API implementation in Chrome is evolving. Here's what's changing:

  • The API name, and the permissions policy name.
  • The HTML attribute names and .well-known URLs.
  • The format of the reports. Reports are now sent as JSON in the request body.
  • The content of the reports: credit has been removed, along with reports that would have had 0 credit.

What remains unchanged in Chrome 92 is the set of supported features: event-level reports, for clicks only. Expect updates on this. After this change, other updates and features will be released in future Chrome versions.

When do these changes take effect?

These changes take effect starting from Chrome 92, stable on July 20th 2021. Chrome 92 beta was released on June 3rd 2021.

What should you do?

If you were running an origin trial or have implemented a demo for this API, you have two options:

  • Option 1 (recommended): migrate your code now or in the following weeks, ideally before mid-July 2021. This way, your codebase will be ready for future changes and will keep working for newer Chrome clients.
  • Option 2: Wait for more updates and features to be released in future Chrome versions, and make all necessary code changes at once.

Migrate

Example migration

You can see a migration example for a small demo app in this pull request (draft).

Update your permissions policy code

Legacy code New code
allow='conversion-measurement' allow='attribution-reporting'

Update your feature detection code

Legacy code New code
document.featurePolicy.features()
.includes('conversion-measurement')
document.featurePolicy.features()
.includes('attribution-reporting')

Update the HTML attributes

Legacy code New code
conversiondestination attributiondestination
impressiondata attributionsourceeventid
impressionexpiry attributionexpiry
reportingorigin attributionreportto

Update window.open() arguments

An attribution source can be registered for navigations initiated by window.open(). Update these calls if you're using window.open() to register attribution sources.

Your new code should look as follows (this renaming follows the HTML attributes renaming):

window.open(
  'https://dest.example',
  '_blank',
  'attributionsourceeventid=1234,attributiondestination=https://dest.example,attributionreportto=https://reporter.example,attributionexpiry=604800000'
);

Update your registration call URL and parameter

Legacy code New code
.well-known/register-conversion?conversion-data={DATA} .well-known/attribution-reporting/trigger-attribution?trigger-data={DATA}

Update your reporting endpoint code

Legacy code New code
Requests to expect from the browser .well-known/register-conversion?impression-data=&conversion-data={DATA}&attribution-credit=100 .well-known/attribution-reporting/trigger-attribution
Incoming reports Sent as URL parameters. Sent as JSON in the request body.

The report data is included in the request body as a JSON object with the following keys:
source_event_id: formerly impression-data, the 64-bit event id set on the attribution source.
trigger_data: formerly conversion-data, the 3-bit data set in the attribution trigger redirect.

⚠️ credit has been removed.

Attribution Reporting: all resources

See Attribution Reporting.