Notification Delivery State Machine

Summary

Notifications convert platform events into communication attempts. The state machine keeps intent, policy, rendering, dispatch, provider outcome, retry, suppression, and audit separate.

Reader Question

How does a notification move from domain intent to provider delivery while respecting channel policy, retry behavior, and auditability?

State Machine

Intent Created starts with a domain service deciding that communication may be needed. Policy Checked applies channel eligibility, suppression, tenant, actor, and recipient rules. Rendered creates provider-ready content. Dispatch Pending records the side effect before it is attempted.

Sent, Delivered, Bounced, Suppressed, and Failed are provider or policy outcomes. Retries should resume from dispatch state with idempotency rather than re-deriving intent. Permanent failures should become reviewable when the domain workflow needs human attention.

This pattern lets email, SMS, Teams, and future channels share delivery semantics while still allowing domain-specific policy.

Visual

The diagram separates domain intent from provider outcome and shows retry and suppression as explicit branches.