Severity & Critical
severity and critical are two independent workflow-level dials. Most workflows set neither.
Severity
Severity is purely visual — it does not change preferences, digest, or delivery. It only affects how the Inbox renders the notification (color, glow, bell color), and informs the digest skip rule below.
Seeinbox-integration/SKILL.md(“Severity styling”) for the visual mapping (colorSeverityHigh,severityHigh__notificationBar, etc.).
Critical
critical: true is the runtime override. When set:
- Subscriber preferences are bypassed. The notification is delivered even if the subscriber disabled the channel.
- Digest is skipped. Each trigger delivers immediately; no aggregation.
- No delays. All steps run as fast as possible.
- All available channels fire in parallel (Push still gated by
subscriber.isOnline == false).
critical: true for must-deliver events:
- Account suspended / blocked
- Security alert (new device login, suspicious activity)
- Forgot password / OTP delivery
- Legal or compliance notices
A workflow can becritical: truewithseverityunset — the two dials don’t depend on each other.
readOnly vs critical — the trap
These are easy to confuse. They control different things:
In practice you usually want
critical: true (forces delivery). readOnly: true alone just removes the toggle from the UI but does not override existing subscriber overrides. See manage-preferences/SKILL.md for the resolution order.
Behavior Matrix
Digest is automatically skipped when
severity: HIGH or critical: true.
Picking the Right Combination
Common Pitfalls
- Setting
severity: HIGHdoesn’t make the workflow critical — it still respects preferences and runs delays. Addcritical: trueif you need bypass. critical: truedoesn’t auto-set severity — setseverity: HIGHexplicitly if you also want the high-severity Inbox styling.- Don’t mark marketing workflows critical — bypassing preferences for promotional content damages trust and is a deliverability risk.
readOnly: truewon’t force delivery — it only hides the workflow toggle. Usecritical: trueto actually force delivery.
See Also
channel-selection.md— howcriticalexpands the channel mixdigest-defaults.md— when digest is auto-skippedworkflow-templates.md— templates that showcriticalin contextmanage-preferences/SKILL.md— preference resolution order