Observer
Observer

Subscriber notification events

Which incident and maintenance transitions trigger subscriber emails.

The notification worker reads from pgmq.notification_outbox and fans out to confirmed subscribers on the affected page. The dispatch matrix below lists which event types trigger subscriber email and which do not.

Trigger matrix

EventTriggers subscriber email
incident.createdNo (draft state).
incident.publishedYes.
incident.updatedNo (avoids notification spam on minor edits).
incident.message_addedYes.
incident.resolvedYes.
incident.deletedNo.
maintenance.scheduledYes.
maintenance.starting_soonYes (1h pre-warn).
maintenance.startedNo (the starting_soon mail covered it).
maintenance.completedYes.
maintenance.canceledYes.

Filter scopes

When a subscriber has rows in subscriber_filters, the dispatch only fires when at least one of the incident's affected services or metrics intersects the filter list. Subscribers with no filters receive every relevant event for the page.

Customer-scoped incidents

Incidents with rows in update_customer_visibility are scoped: only subscribers tied to one of the listed customers receive notifications. The MVP customer-binding model on subscribers is still under design; today, customer-scoped incidents skip subscriber dispatch entirely. The webhook layer is unaffected — outbound webhook subscribers always receive every event their subscription opted into, regardless of customer scoping.

Per-attempt audit

Each delivery attempt writes one row to subscriber_deliveries:

id              uuid
subscriber_id   uuid
event_type      text
event_id        uuid
status          text   ('ok', 'error', 'skipped')
status_code     integer (Resend response, when applicable)
error           text   (truncated body on error)
attempted_at    timestamptz

The console Subscribers view exposes the most-recent attempt per subscriber for triage.

Was this page helpful?