demo · v144

First-party Recipe

If you used Attribution Reporting to count conversions from an ad to a purchase, you now do that with first-party signals: a click ID in the landing URL, a logged event keyed by user or session, and a server-side join. This walkthrough shows the whole chain — impression, click, landing, conversion — and prints the JSON your server would receive.

Attribution Reporting is fully removed in Chrome 144. The shape below is the recommended replacement: first-party measurement against logged-in users, or against a click ID joined server-side. No third-party cookies, no attribution-reporting permission policy.
1

impression

an ad slot logs the impression with a server-issued impression_id.

0
2

click

click adds ?cid=<click_id> to the landing URL.

0
3

landing

your site reads cid, stores it in first-party storage.

0
4

conversion

purchase fires a fetch with cid. Server joins.

0

your server receives:

the migration shape

// before (attribution-reporting, now removed)
<a href="https://shop.example/p/42" attributionsrc="...">buy</a>

// after (first-party + server-side join)
<a href="https://shop.example/p/42?cid=ad_2026_q2_abc123">buy</a>

// on landing
const cid = new URL(location.href).searchParams.get("cid");
if (cid) localStorage.setItem("cid", cid);

// on conversion
fetch("/track/conversion", {
  method: "POST",
  body: JSON.stringify({ cid: localStorage.getItem("cid"), value: 49.99 })
});

// server joins on cid (or session) and de-dupes

see also