demo · v130
Scope Event-State Visualizer
Chrome 130 adds attribution_scopes to the Attribution Reporting API. A source can carry up to 20 scopes; triggers that share any scope are eligible to attribute to that source, while triggers with no scope keep every source eligible. This visualizer lets you assign source scopes, fire single-scope, multi-scope, and unscoped triggers, and watch the declared event-state model for each matching scope.
Source registration
max_event_states is not a trigger quota. It declares how many event states the caller plans to use for the source's information-bound model; the meter below tracks distinct trigger values that actually matched each scope.
Bars show unique trigger values observed for each matching scope. Crossing max_event_states is a configuration warning, not a browser-side trigger rejection.
Select multiple chips for an any-overlap trigger. Leave chips and extra scopes empty to omit attribution_scopes.
// Chrome 130: attribution_scopes on a source registration
// Response to Attribution-Reporting-Register-Source request:
{
"destination": "https://advertiser.example",
"source_event_id": "12345",
"expiry": 2592000,
"attribution_scopes": {
"values": ["campaign-a", "brand-video", "retargeting"],
"limit": 3, // max registered scopes
"max_event_states": 3 // declared event-state cardinality, not a quota
}
}
// Trigger registration matches if any scope overlaps:
// Attribution-Reporting-Register-Trigger:
// { "attribution_scopes": ["campaign-a", "loyalty"] }
// → attributed ✓ because "campaign-a" overlaps.
// If the trigger omits attribution_scopes entirely:
// { "event_trigger_data": [{ "trigger_data": "purchase" }] }
// → all sources remain eligible.
// Attribution-Reporting-Register-Trigger: { "attribution_scopes": ["campaign-b"] }
// → filtered ✗ (no overlap)