Overview
The Status property defines the lifecycle stage of an incident and governs how it progresses from investigation through closure. Status transitions are validated to preserve chronological and logical integrity — you can’t skip from Triage to Resolved, andmitigated_at can never precede started_at.
Status is a fixed property: the set of statuses (Triage, Started, Mitigated, Resolved, Closed, Cancelled) is system-defined and can’t be customized. If you need additional state inside a status, use Sub-Statuses (this page) or Custom Statuses.
Standard Incident Statuses
| Status | Description | Data Value |
|---|---|---|
| Triage | An investigative state used to determine whether an issue should escalate into an active incident. This allows teams to evaluate signals before formally beginning response. Timestamped at in_triage_at. | in_triage |
| Started | Marks the official activation of incident response. This is the primary active state during which coordination, mitigation, and communication occur. Timestamped at started_at. | started |
| Mitigated | Indicates that user-facing impact has been halted or reduced, but remediation, validation, or cleanup work may still be ongoing. Timestamped at mitigated_at, which must be after or equal to started_at. | mitigated |
| Resolved | Signifies the completion of active incident response. At this stage, service impact has ended and retrospective processes typically begin. Timestamped at resolved_at. | resolved |
| Closed | Optional terminal status (team-configurable) used to mark incidents as fully finalized after review. Requires the incident to already be in Resolved status. Timestamped at closed_at. | closed |
| Cancelled | Terminal status used for false positives or duplicate incidents. Cancelling prevents further lifecycle progression unless the incident is reopened. Timestamped at cancelled_at. | cancelled |
Terminal Statuses
Resolved, Closed, and Cancelled are terminal statuses. They prevent further lifecycle progression unless the incident is explicitly reopened to Started, which restarts active response tracking. Cancellation is for incidents that turn out to be false positives or duplicates — they shouldn’t appear in production metrics or status pages. Resolution and closure are for incidents that ran their full course.Status Transition Rules
The constraints exist because Rootly’s metrics and retrospective workflows assume an incident in a terminal status actually ran through active response. Skipping Started would produce nonsense lifecycle durations (e.g., MTTR of zero).Timestamp Validation Rules
mitigated_at≥started_atresolved_at≥started_atclosed_at≥started_at
mitigated_at to before started_at — Rootly rejects the change and surfaces a validation error.
Sub-Statuses
When enabled via team configuration, statuses may contain sub-statuses for more granular tracking within a parent lifecycle stage. For example:- Started may include multiple Active sub-statuses (up to 8 per team).
- Resolved may include structured post-incident stages such as “Retrospective”.
Scheduled Maintenance Statuses
Scheduled Maintenance incidents follow a separate lifecycle from standard incidents. Their statuses describe the state of the maintenance window itself, not a response process.| Status | Description | Data Value |
|---|---|---|
| Scheduled | Indicates that the maintenance window has been planned and formally created but has not yet begun. | scheduled |
| In Progress | Indicates that maintenance work is actively underway. | in_progress |
| Completed | Indicates that maintenance activities have concluded successfully. This is the default terminal state. | completed |
Best Practices
- Use Triage for ambiguous signals, not for active incidents. Triage is the “is this even an incident?” stage. Once a responder commits to active mitigation, move it to Started so the lifecycle clock starts.
- Default to Resolved over Closed for most teams. Closed adds an extra review step that’s only worth the overhead if you have a formal post-incident review gate. If you don’t, leave Closed disabled — Resolved is the natural terminal state.
- Reserve Cancelled for false positives. Don’t use Cancelled to “clean up” a real incident that ended up being minor — that incident still belongs in metrics. Cancelled is for incidents that were never real (duplicates, test fires from monitoring tools).
- Use sub-statuses for workflow gating, not for taxonomy. If you want to label incidents as “Investigating”, “Mitigating”, “Verifying”, sub-statuses are the right tool. If you want to label incidents as “Customer Impact”, “Infrastructure”, “Security” — that’s Incident Types or Custom Fields.
- Reopen instead of re-declaring when an incident recurs. Reopening preserves the original timeline, action items, and retrospective context. Re-declaring fragments the history into two records.
Troubleshooting
I can't move an incident from Triage straight to Resolved
I can't move an incident from Triage straight to Resolved
Rootly rejected my timestamp edit
Rootly rejected my timestamp edit
started_at ≤ mitigated_at ≤ resolved_at ≤ closed_at. If you’re backdating Mitigated to be earlier than Started, the system blocks the save. Either adjust Started earlier or move Mitigated forward to match the actual order of events.Closed isn't available in the status picker
Closed isn't available in the status picker
A Status Updated workflow isn't firing for sub-status changes
A Status Updated workflow isn't firing for sub-status changes
I reopened an incident but the original timestamps are gone
I reopened an incident but the original timestamps are gone
started_at to the reopen time. The original started_at, mitigated_at, and resolved_at are preserved in the incident timeline events but not the top-level fields. If you need the original timing for reporting, query the timeline events for the historical status transitions.Frequently Asked Questions
Can I reopen a resolved or closed incident?
Can I reopen a resolved or closed incident?
- An incident recurs after resolution
- Additional investigation reveals the original resolution was incomplete
- A cancelled incident turns out to be a real issue
What's the difference between Resolved and Closed status?
What's the difference between Resolved and Closed status?
Why can't I transition directly from Triage to Resolved?
Why can't I transition directly from Triage to Resolved?
What happens if I set a timestamp that violates chronological order?
What happens if I set a timestamp that violates chronological order?
mitigated_at, resolved_at, or closed_at to a time before started_at, the system will reject the change and display a validation error.Timestamps must follow this order:started_at≤mitigated_at≤resolved_at≤closed_at
How do sub-statuses affect workflow execution?
How do sub-statuses affect workflow execution?