12-month reports are available on the Pro plan and above.
Download a report
Open Executive in the console and scroll to 12-month reports. Each status page has a row with its time zone and three downloads:
Every download is recorded in the
audit log as
report.downloaded.
Private checks
A report leaves out private checks (checks hidden from the public status page) by default, so a downloaded report is safe to send to customers. For internal use, tick Include private checks above the list before you download. Those downloads include private checks and are stamped Internal: includes private checks in the PDF header and footer and on every CSV row. Do not send them to customers.The period
A report covers the 12 closed calendar months before the current month, in the page’s time zone. The current month is never included. Download a report on 3 May and it covers May of the previous year through April. Status history is kept as hourly counts of samples per status for 400 days, so a report for the same 12 months gives the same figures whenever you download it.What the PDF contains
- Summary: uptime over the 12 months, days measured, the number of incidents and the mean time to resolve.
- By month: for each month, uptime, days measured, degraded days, down days, incidents and mean time to resolve.
- By check: for each check on the page, uptime over the 12 months, days measured and its lowest month.
- Incidents: publication time (UTC), severity, title, duration, and whether a postmortem is linked. An unresolved incident shows Ongoing.
- How these numbers are computed: the rules below, as printed.
CSV columns
The uptime CSV has one row per month for the page, then one row per check per month:report_scope is on every row of both CSVs: public for a default
report, Internal: includes private checks when private checks are
included. scope is page: <page title> for the page rows and the check’s label
for check rows. uptime_pct has three decimals and is empty when the
month has no measured days.
The incidents CSV has one row per incident, in order of publication:
services lists the affected services,
separated by ; .
How the numbers are counted
These are the rules the report prints. They are the same rules the status page uses for its history bars (see How status is calculated).1
Samples
Each check reports a status with every sample: healthy, degraded or
unhealthy. Thresholds use strict comparison: a value equal to a
threshold does not match it.
2
Hours
Each hour, in the page’s time zone, is judged from its samples:
- unhealthy when at least 2 samples are unhealthy, or its only sample is;
- otherwise degraded when at least 2 samples (or the only one) are degraded or unhealthy;
- otherwise healthy when it has samples.
3
Days
A day takes the status of its worst hour. A day with no samples has no
status and is left out of the figures.
4
Uptime
Uptime is the share of days with a status that were up. Degraded days
count as up: the service was served, slower or in part. Only unhealthy
days count against uptime. Days with no samples are not counted either
way.
5
Page figures
For the page, each day takes the worst status across all of the page’s
checks. The page’s uptime is computed from those days.
6
Incidents
Incidents are those published on the page and visible to everyone,
counted in the month they were published. Duration runs from
publication to resolution. Maintenance windows are not incidents and
are not listed.
- The report covers the checks added to the page. Private checks are left out unless you include them (see Private checks).
- Incidents visible only to selected customers are not included.
- Maintenance windows do not change the uptime figures. A day during a maintenance window counts like any other day.
- Live status, incidents, alerts, SLOs and SLA statements do not use the hourly rule above. It applies to history only.

