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