> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rootly.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Incident Lifecycle

> How Rootly models an incident from triage through closure — every status, the timestamps each one records, and how transitions actually happen.

Every incident in Rootly moves through a sequence of **statuses** that mirror how teams actually respond: contain uncertainty, coordinate a response, contain impact, fix the underlying issue, and wrap up the follow-up work. Each transition records a timestamp, which powers MTTx analytics, retrospectives, and workflow automation.

## Overview

Rootly's incident status model has six primary statuses and two optional timestamps. A status change is made from the web UI, from Slack (`/rootly mitigate`, `/rootly resolve`, `/rootly cancel`), or via workflow automation — and Rootly records the corresponding timestamp automatically.

| Status    | Data Value  | Timestamp      | Notes                                                |
| :-------- | :---------- | :------------- | :--------------------------------------------------- |
| Triage    | `in_triage` | `in_triage_at` | Only recorded if the incident actually enters Triage |
| Started   | `started`   | `started_at`   | Set when coordinated response begins                 |
| Mitigated | `mitigated` | `mitigated_at` | Impact contained; work continues                     |
| Resolved  | `resolved`  | `resolved_at`  | Underlying issue fixed                               |
| Closed    | `closed`    | `closed_at`    | All follow-up work complete                          |
| Cancelled | `cancelled` | `cancelled_at` | False positive or duplicate; Triage-only             |

Two additional timestamps — `detected_at` and `acknowledged_at` — are separate fields, not statuses. They power MTTD and MTTA metrics without changing the incident's primary status.

***

## Triage

Incidents often begin with ambiguous signals. **Triage** is designed for the early moment when something *might* be wrong, but responders aren't yet certain. Notifications are limited so teams can investigate without alarming broader stakeholders.

**Enter Triage by:**

* Selecting **Mark as In Triage** when creating the incident
* Updating the status from the incident page or `/rootly status` in Slack

<Frame>
  <img src="https://mintcdn.com/rootly/d2dmochhUzziYtkZ/images/incidents/1.webp?fit=max&auto=format&n=d2dmochhUzziYtkZ&q=85&s=f81c5e0ccacf6bb12a1784710a8b8874" alt="Incident marked as In Triage" width="916" height="1101" data-path="images/incidents/1.webp" />
</Frame>

<Tip>
  Triage contains blast radius. Use it when the signal is real but unconfirmed — you can always promote to Started once you're sure.
</Tip>

***

## Started

Once responders confirm the issue is real, the incident moves to **Started**. This is the point of coordinated response: roles get assigned, communication channels open, and early hypotheses form.

**Enter Started by:**

* Leaving **Mark as In Triage** *unchecked* at creation — Rootly sets Started directly
* Moving from Triage → Started from the incident page or Slack

<Frame>
  <img src="https://mintcdn.com/rootly/d2dmochhUzziYtkZ/images/incidents/2.webp?fit=max&auto=format&n=d2dmochhUzziYtkZ&q=85&s=f87a2d39744cd7eb3ed5ae7c79321c20" alt="Incident in the Started status" width="917" height="1137" data-path="images/incidents/2.webp" />
</Frame>

<Note>
  Skipping Triage during creation is common for confirmed incidents. Rootly sets the incident straight to Started with no intermediate Triage timestamp.
</Note>

***

## Mitigated

**Mitigated** means the immediate impact has been contained. Users may still be affected, but the incident is no longer actively getting worse. This is common when a failover, temporary fix, or emergency control has been applied while the underlying issue is still being investigated.

**Enter Mitigated by:**

* Clicking **Mitigate** on the incident page
* Running `/rootly mitigate` in Slack

<Frame>
  <img src="https://mintcdn.com/rootly/d2dmochhUzziYtkZ/images/incidents/3.webp?fit=max&auto=format&n=d2dmochhUzziYtkZ&q=85&s=9f66d84f1dc18ff77e83ef0f467b20ca" alt="Incident marked as Mitigated" width="899" height="459" data-path="images/incidents/3.webp" />
</Frame>

<Tip>
  If an incident moves straight to Resolved without passing through Mitigated, Rootly sets `mitigated_at` equal to `resolved_at` so time-to-mitigate analytics stay accurate.
</Tip>

***

## Resolved

An incident is **Resolved** when the underlying issue has been fixed and service impact is no longer present. This is the moment that typically triggers stakeholder updates and kicks off the retrospective process.

**Enter Resolved by:**

* Clicking **Resolve** on the incident page
* Running `/rootly resolve` in Slack

<Frame>
  <img src="https://mintcdn.com/rootly/d2dmochhUzziYtkZ/images/incidents/4.webp?fit=max&auto=format&n=d2dmochhUzziYtkZ&q=85&s=86bb23281e8e9c5cc7701166f5b3bcb0" alt="Incident marked as Resolved" width="902" height="470" data-path="images/incidents/4.webp" />
</Frame>

<Note>
  Many teams configure a workflow to automatically generate a retrospective when an incident reaches Resolved. See [Configuring Templates](/retrospectives/configuring-templates).
</Note>

***

## Closed

**Resolved** means the system is fixed. **Closed** means all follow-up work is complete — retrospectives published, action items verified, and communications wrapped up.

Closed is optional but recommended: it separates technical completion from process completion, so dashboards can distinguish "fixed" from "fully done".

<Info>
  Closed status is controlled per-team via **Configuration → Teams → Enable Closed Status**. When disabled, incidents transition directly from Resolved to their final state without a separate Closed step.
</Info>

***

## Cancelled

A **Cancelled** incident is a false positive or a duplicate. Cancelling prevents wasted responder effort and keeps analytics clean by excluding non-actionable events from your incident metrics.

**Enter Cancelled by:**

* Clicking **Cancel Incident** on the incident page
* Running `/rootly cancel` in Slack

<Frame>
  <img src="https://mintcdn.com/rootly/d2dmochhUzziYtkZ/images/incidents/5.webp?fit=max&auto=format&n=d2dmochhUzziYtkZ&q=85&s=a68f54fb480899f743dae393ca66c797" alt="Incident marked as Cancelled" width="902" height="475" data-path="images/incidents/5.webp" />
</Frame>

<Warning>
  Cancel is only available while the incident is in Triage. Once an incident is Started, it must go through the normal Resolved path — even if it turns out to be non-impactful.
</Warning>

***

## Optional Timestamps

Two timestamps sit alongside the primary statuses to support detection and acknowledgement metrics:

<ParamField path="detected_at" type="timestamp">
  When the issue was first *noticed* — often earlier than when response formally began. Powers MTTD (Mean Time To Detect).
</ParamField>

<ParamField path="acknowledged_at" type="timestamp">
  When a specific responder took ownership of the incident. Pauses paging escalations and clarifies responsibility. Powers MTTA (Mean Time To Acknowledge).
</ParamField>

Neither field changes the incident's primary status. Both can be set from the incident page, updated via API, or backfilled with **Update Timestamps** — see [Updating Incident Timestamps](/incidents/managing-incidents/updating-incident-timestamps).

***

## Planned Maintenance

Rootly models scheduled operational work with its own lifecycle values, distinct from unplanned incidents:

| Status      | Data Value    | What It Means                                                       |
| :---------- | :------------ | :------------------------------------------------------------------ |
| Planning    | `planning`    | Scope and impact being defined                                      |
| Scheduled   | `scheduled`   | Approved for a specific window (`scheduled_for`, `scheduled_until`) |
| In Progress | `in_progress` | Work is underway                                                    |
| Completed   | `completed`   | Work is finished                                                    |
| Verifying   | `verifying`   | Final checks in progress                                            |

Planned maintenance uses the same automation, timeline, and retrospective machinery as normal incidents. See [Scheduling a Maintenance Incident](/incidents/incident-operations/scheduling-a-maintenance-incident).

***

## Incident Timeline

Every incident has a **Timeline** that captures status changes, role assignments, workflow actions, Slack updates, alert events, and manual entries in one chronological view. It's the source of truth for retrospectives and stakeholder recaps.

Timeline entries can be added from Slack, the web UI, email-to-incident, or automations. See [Incident Timeline](/incidents/incident-timeline/incident-timeline).

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="Cancel Incident button is missing" icon="ban">
    Cancel is only available while the incident is in Triage. If the incident has already moved to Started, resolve it as normal — cancellation isn't possible from later stages.
  </Accordion>

  <Accordion title="mitigated_at wasn't recorded" icon="clock">
    If the incident went straight from Started to Resolved without a Mitigate action, Rootly sets `mitigated_at` equal to `resolved_at`. To backfill a true mitigation timestamp, use **Update Timestamps** on the incident page.
  </Accordion>

  <Accordion title="Closed status doesn't appear as an option" icon="lock">
    Closed is controlled per-team. Ask an admin to check **Configuration → Teams → Enable Closed Status**. When disabled, incidents finalize at Resolved.
  </Accordion>

  <Accordion title="Slack `/rootly mitigate` says the incident can't be mitigated" icon="triangle-exclamation">
    Common causes:

    * The incident is already Resolved, Closed, or Cancelled — check the channel header before running the command.
    * Your team has **Sub-Statuses** enabled, which disables `/rootly mitigate` by design. Use `/rootly status` and pick the appropriate sub-status instead. See [Managing Incident Status via Slack](/incidents/managing-incidents/managing-incident-status-via-slack) for the full sub-status flow.
  </Accordion>
</AccordionGroup>

***

## Frequently Asked Questions

<AccordionGroup>
  <Accordion title="What status should I use when I'm not sure it's really an incident?" icon="clock">
    Use **Triage**. It limits notifications and keeps early investigation to a small responder group. Promote to **Started** once you're confident the issue is real.
  </Accordion>

  <Accordion title="Can I skip Triage entirely?" icon="forward">
    Yes. Leave **Mark as In Triage** unchecked at creation and Rootly sets the incident directly to Started. No `in_triage_at` timestamp is recorded.
  </Accordion>

  <Accordion title="Do I have to use Mitigated?" icon="circle-check">
    No. Mitigated is optional but recommended. If you go straight to Resolved, Rootly sets `mitigated_at = resolved_at` automatically so MTTM analytics still work.
  </Accordion>

  <Accordion title="What's the difference between Resolved and Closed?" icon="split">
    **Resolved** means the technical issue is fixed and impact is gone. **Closed** means all follow-up work — retrospective, action items, comms — is complete. Many teams resolve within hours but close days later.
  </Accordion>

  <Accordion title="Why aren't Detected and Acknowledged in the status list?" icon="circle-info">
    They're timestamp fields, not statuses. `detected_at` and `acknowledged_at` power MTTD and MTTA metrics but the incident's primary status keeps moving through the main lifecycle (Triage → Started → Mitigated → Resolved).
  </Accordion>

  <Accordion title="Can I add custom statuses?" icon="wand-magic-sparkles">
    You can add **sub-statuses** underneath the primary statuses to model your team's more granular process (for example, "Investigating" or "Awaiting Vendor" beneath Started). See [Incident Sub-Statuses](/configuration/incident-status).
  </Accordion>

  <Accordion title="Where should follow-up actions live?" icon="list-check">
    In [Action Items](/incidents/action-items/action-items). Once every action item is closed and the retrospective is published, move the incident to Closed.
  </Accordion>
</AccordionGroup>
