The escalation engine that reaches a human
Most alerting is send-and-forget. IRIS treats every alert as a stateful state machine — a Durable Object that routes, notifies, waits, escalates and resolves, then proves it happened. Not a fragile chain of automations that breaks at 2 AM.
- Anna — notified 02:00 · no reply
- Mikael — notified 02:05 · awaiting
- Priya — next in 5 min
The lifecycle
One stateful flow, signal to proof
Each alert lives as a single Durable Object that holds its own state across every step — so timing, rounds and replies are reliable by design, not by polling.
- 01 received
Ingest
A sensor, monitoring system or script posts one alert to the REST endpoint. IRIS creates a stateful alert instance — a Durable Object — that owns this event from signal to proof.
- 02 routing
Route
The alert resolves to a receiver group and an ordered on-call list. Each recipient carries their own number mapping and language — so the message is addressed correctly before it ever leaves the edge.
- 03 notifying
Notify
IRIS notifies the first recipient across the configured channels (SMS and Voice/IVR today), in their language, with a clear acknowledge/escalate instruction.
- 04 awaiting ack
Wait
A timed wait window opens. The state machine holds — durably, with no fragile cron chain — until a reply arrives or the window closes.
- 05 escalating
Escalate
No acknowledgement in time? IRIS advances to the next person on call and notifies again — round by round, up to ~20 rounds — until a human responds.
- 06 resolved
Resolve & prove
A recipient replies “1” to acknowledge or “2” to escalate. On acknowledgement the alert resolves, and IRIS writes an audit-grade record of every step — who, what, when, in which language.
Two-way by design
The recipient is in control. A single keypress closes the loop — and every reply is captured against the alert.
- 1 Acknowledge
The recipient owns the alert. IRIS stops escalating, records the acknowledgement, and resolves the event.
- 2 Escalate now
The recipient hands it on. IRIS skips the wait window and advances to the next person on call immediately.
- — No reply
The wait window closes and IRIS escalates automatically — silence never stalls a critical alert.
Under the hood
Everything the escalation needs
Routing, timing and proof are first-class — configured once, enforced on every alert.
Receiver groups & ordering
Define who is on call and in what order. IRIS walks the group top to bottom, so the right person is always next in line.
Per-recipient number mapping
Each recipient is reached on their mapped number, with country-aware sender numbers for the best deliverability.
Per-recipient language
Messages render in each recipient’s language across 6 supported languages — no manual translation step.
Scheduling & rounds
Configurable wait windows between rounds, up to ~20 rounds. The state is durable, so timing survives restarts and redeploys.
Two-way reply capture
Inbound replies hit a secure webhook; “1” acknowledges, “2” escalates. Every reply is interpreted and logged against the alert.
Completion reporting
On resolution IRIS writes an audit-grade event record — exportable for GxP, HACCP and ISO audits.
State machine, not a chain
Why a Durable Object, not an automation chain
We ran on 26 chained automations before. They have no memory between steps, lose track of who was notified, and break silently under load. IRIS gives every alert one durable, single-threaded instance that remembers its own state — so escalation is reliable, ordered and replayable.
- Remembers who was notified
- Durable timers — no polling
- Ordered, replayable rounds
- Every step audit-logged
See an alert escalate end to end
Spin up a trial workspace with 1,000 credits, no credit card, and watch a real two-way escalation resolve.