demo · v130

cross-campaign confusion — and how scopes fix it

The chromestatus motivation: "API callers not receiving attribution reports or incorrect attribution in scenarios where there are multiple different advertisers/campaigns that all convert on the same destination site." Walk through the exact scenario, with the API's old and new attribution decisions side-by-side.

Privacy Sandbox simulator The Attribution Reporting API requires Privacy Sandbox enabled and only delivers reports off-thread with noise. This page is a deterministic walkthrough of the spec's matching rules so you can see the change in behavior without waiting on real reports.

pick a real-world scenario:

user journey

attribution decision

before scopes (pre-Chrome 130)

click "replay" above

with attribution_scopes (Chrome 130+)

click "replay" above

the spec change

// BEFORE: filter happens AFTER source selection.
//         Same eTLD+1 destination = all sources are candidates.
//         Browser picks one by recency/priority — often the wrong campaign.
{
  "source_event_id": "1234",
  "destination": "https://shop.example"   // shared destination = collision
}

// AFTER: filter happens BEFORE attribution. scopes restrict which
//        sources can match which triggers.
{
  "source_event_id": "1234",
  "destination": "https://shop.example",
  "attribution_scopes": {
    "limit": 5,
    "values": ["campaign-shoes"]
  }
}
// Trigger from shoes campaign only matches scope "campaign-shoes":
{ "attribution_scopes": ["campaign-shoes"] }

see also