Overview
Every alert in Rootly progresses through a well-defined finite state machine (FSM) that dictates how it escalates, notifies responders, synchronizes with alert groups, and ultimately resolves.Understanding these states ensures predictable behavior across Routing, On-Call Escalation Policies, Alert Grouping, and integrations like Slack. Rootly alerts can be in one of four statuses:
- open
- triggered
- acknowledged
- resolved
status enum. All transitions, notification triggers, and timeline events are governed by Rootly’s internal state machine.
Status Definitions
open
The alert is not actively paging a responder. This can be its initial state before a notification target is assigned, or the result of a paging attempt that could not notify any target. Typical reasons for anopen alert:
- The alert was ingested but did not match a Routing Rule
- The alert is a non-paging alert
- It was created manually without a destination
- A paging attempt could not notify any target
open → triggered(once a notification target is assigned via routing or manual paging)open → resolved
An alert immediately transitions from open → triggered when Routing assigns a team, service, user, or escalation policy.
When a paging attempt cannot notify any target—for example, because the selected escalation policy has no pageable targets—Rootly transitions a non-open alert back to
open and records a status_update/open timeline event.triggered
The alert is actively paging responders. This is the state where on-call users are notified based on escalation logic. A triggered alert:- Sends notifications (SMS, push, phone call, Slack)
- Can be acknowledged by responders
- Can be resolved manually or via automation
triggered → acknowledgedtriggered → resolvedtriggered → triggered(retrigger—for example, ack timeout, forced escalation, manual actions)triggered → open(paging could not notify any target)
All transitions into
triggered create a status_update timeline event.acknowledged
A responder confirmed that they have seen the alert and are working on it. Escalation pauses unless a timeout or retrigger occurs. Allowed transitions:acknowledged → resolvedacknowledged → triggered(ack timeout or manual retrigger)acknowledged → open(paging could not notify any target)
If an acknowledged alert hits acknowledgement timeout, Rootly automatically re-triggers it and resumes escalation.
resolved
A closed state indicating no further action is currently required. Notifications cease and Rootly recordsended_at; the alert can still be reopened through the transitions below.
However, Rootly allows:
resolved → triggered(re-open regression, manual retrigger, new escalation)resolved → open(paging could not notify any target)
Resolved alerts remain visible and analyzable in your alert history, even after re-triggering.
Summary Table of Allowed Transitions
How Rootly Records Status Changes
Every transition writes astatus_update event into the alert timeline.
A status event includes:
- The new status
- The previous status
- Who performed the action (user or system)
- Metadata such as escalation step, ack timeout, grouping rule, or routing origin
Interaction With Alert Grouping
When an alert is part of an Alert Group, status synchronization is automatic:Leader Alert Behavior
- The group leader is the first alert in the group (the one that paged).
- Any change to the leader’s status cascades to all members.
- Member alerts update timestamps, noise indicators, and events to match the leader.
Member Alert Behavior
- Members never independently influence group state.
- Status changes come exclusively from the group leader.
- Retriggering the leader retriggers all members.
This ensures responders never lose the true “source of paging,” even when many alerts represent the same event.
Visual Indicators Across Rootly
Rootly uses consistent color/status styling across the Web UI, Slack, and Mobile:- 🟥 Open / Triggered — Requires action
- 🟧 Acknowledged — Someone is actively working the alert
- 🟩 Resolved — Incident has concluded
- Alert lists
- Slack alert threads
- Alert details
- Incident sidebars when alerts link to incidents
Timestamp Behavior
Each alert automatically manages its own lifecycle timestamps:- started_at – The time the alert began, taken from the source event when provided; otherwise set when the alert is created
- ended_at – Set when transitioning into
resolved - ended_at is cleared whenever the alert leaves
resolved, including transitions totriggeredoropen
Troubleshooting
My alert is stuck in open
My alert is stuck in open
- It may not match any routing rules
- The alert source may not be associated with an Alert Route
- No notification target was assigned
- The selected escalation policy may have no pageable targets, or every target may have been skipped
- The alert may be a non-paging alert
An alert never triggered escalation
An alert never triggered escalation
- Ensure its status is triggered, not open
- Validate the routing rule actually assigned a team or escalation policy
- Confirm notification channels are enabled
- Check for quiet-only escalation paths
Acknowledged alerts are retriggering unexpectedly
Acknowledged alerts are retriggering unexpectedly
- Review acknowledgement timeout settings
- Check whether escalation policies intentionally retrigger
- Ensure grouping leader logic isn’t retriggering members
Resolved alerts are triggering again
Resolved alerts are triggering again
This is expected if:
- A user manually retriggered
- The system detected a regression
- A new routing condition matched and assigned a destination
Summary
Alert Statuses are the backbone of Rootly’s alerting engine. They define:- How and when responders are notified
- How escalation policies activate
- How grouping behaves
- How alerts appear in dashboards and Slack
- How timeline events reflect real-world activity