Understanding the Mean Time to Recover (MTTR) Chart
Last updated: October 27, 2026
The Mean time to recover chart on the DORA page measures each incident from its start time to its resolution time. What counts as the start depends on where the incident comes from.
Why it matters
Knowing which timestamps Span uses explains why Span's MTTR can differ from the number in your incident tool, and tells you what to send if you want MTTR to reflect the full time your system was impacted.
How it works
Span calculates each incident's time to recover as:
Time to recover = resolved time − start time
Incident source | Start time | End time |
|---|---|---|
incident.io | When the incident was created in incident.io | The incident's latest "Resolved at" time |
Rootly | When the incident was created in Rootly | The incident's resolved time |
DORA API | The | The |
Two timestamps are easy to mix up:
Incident created: when someone declared or filed the incident.
Incident started: when the impact or outage actually began. This can be earlier than the creation time.
For incident.io and Rootly, Span uses the creation time as the start. For incidents you send through the DORA API, Span uses the startedAt you send, so you decide whether it marks when impact began or when work started. issuedAt on the API is the declared time; Span uses it to place the incident in a date range, not to measure recovery.
The chart then shows the average, P50, P75, P90, or max across every incident created in your date range.
Setup
incident.io and Rootly: nothing extra. Span reads the creation and resolution times from the integration.
DORA API: send
startedAtandendedAton every incident. If you want MTTR to cover the full impact window, setstartedAtto when impact began. You can add or correct it later withPATCH /api/dora/v1/incidents/:incidentId.
Things to know
Open incidents count as 0. An incident with no resolution time adds 0 to MTTR and pulls the average down until it resolves.
API incidents without
startedAtcount as 0. Span can't measure an incident without a start.Your incident tool may report a different MTTR. incident.io, for example, can start its own MTTR at "Impact started" or "Accepted at". Span starts at creation for incident.io and Rootly incidents.
Worked example. Impact begins at 14:00, someone declares the incident at 14:20, and it resolves at 15:30. Sent through the DORA API with
startedAt14:00 andendedAt15:30, the incident adds 1 hour 30 minutes. The same incident from incident.io adds 1 hour 10 minutes, because Span starts at the 14:20 creation time.
Related articles
Mean Time To Recover (MTTR) Report
How to use the DORA API to send deployment activity to Span
How does the Incident.io integration work?
Need help?
Contact your Span account team or reach out to support@span.app.