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.

Source scopes:
Observed event states by scope
Add scopes above to see event-state meters.

Bars show unique trigger values observed for each matching scope. Crossing max_event_states is a configuration warning, not a browser-side trigger rejection.

Fire conversion trigger
Trigger attribution_scopes

Select multiple chips for an any-overlap trigger. Leave chips and extra scopes empty to omit attribution_scopes.

Trigger value
Add scopes to the source, then fire triggers to see attribution decisions.
// 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)

see also