Uptime Reports
Turn your monitoring history into a clean, shareable SLA report — in about ten seconds.
What is an uptime report?
An uptime report is a point-in-time summary of how one or more of your monitors performed over a period you choose. You pick the monitors and the date range, and Enori rolls up the uptime percentage, response times, total downtime, and the incidents that happened — into a single page you can view, download, or share.
Example: "For January, my API was up 99.94% of the time, averaged 180ms, and had two short incidents totalling 26 minutes of downtime." That sentence, backed by data your customer can verify, is what a report gives you.
Reports are what you send to a client at the end of the month to prove you met your SLA, or what you keep on file as an internal record of reliability. They are generated on demand — you create one whenever you need it.
When to use it
- Monthly SLA compliance. You promised a customer "99.5% uptime per month" and need to show you delivered. Generate a report for the calendar month and share the link (or send the PDF).
- Client reporting. Agencies and MSPs managing sites or infrastructure for clients — one report per client, covering the monitors you run for them.
- Post-incident records. After a rough week, a report gives you and your team a factual account of what went down, for how long, and when it recovered.
- Quarterly / board reviews. A 90-day report (Business plan) is a tidy reliability summary for a stakeholder update.
When you don't need a report: if you want continuous tracking of a reliability target with alerts when you're burning through your error budget, that's an SLO, not a report. Reports are a snapshot you pull when you need it; SLOs run in the background all the time. Many teams use both — an SLO for day-to-day insight, a monthly report for the customer.
How it works
When you generate a report, Enori computes it once, over the exact period you selected, and stores that result. Reopening the report later shows the same numbers — it is a frozen snapshot of the moment you created it, not a live view. If you want fresh numbers, generate a new report.
A few things make the numbers trustworthy for SLA purposes:
- Settled results only. A check that briefly looked down but was immediately re-verified and cleared does not count against you. Only confirmed results are included — the same math the monitor detail page uses, so a report never contradicts what you see elsewhere in the app.
- Maintenance is excluded. Any downtime that fell inside a maintenance window you had declared on the monitor is left out of the uptime and downtime figures. Planned work shouldn't count against your SLA.
- Downtime is grouped into periods. A run of consecutive failed checks is treated as one downtime period; when checks start passing again, that period closes and any later failure starts a new one. A single isolated failure counts as roughly one check-interval of downtime.
Because of this, the uptime %, the downtime minutes, and the incident list in a report all describe the same, consistent set of confirmed problems.
What a report contains
| Section | What's in it |
|---|---|
| Overall summary | Overall uptime %, average / P95 / P99 response time, total checks, total downtime, number of monitors, number of incidents, and the period length. |
| Downtime periods | Every confirmed downtime period across the selected monitors — which monitor, when it started, when it ended, how long, and whether it's Resolved or still Ongoing. (Shown only when there was downtime.) |
| Monitor breakdown | A per-monitor row: uptime %, avg / P95 / P99 response, total checks, and downtime. (Shown when the report covers two or more monitors — with a single monitor it would just repeat the overall summary, so it's hidden.) |
| Incident timeline | Incidents that occurred during the period — time, title, monitor, duration, and severity (Critical / Major / Minor). (Shown only when there were incidents.) |
What "P95 / P99 response" means: the response time that 95% (or 99%) of your checks came in under. A low average with a high P99 tells you most requests are fast but a few are slow — useful for spotting tail latency.
Generating a report
Open Reports in the sidebar (under Collaborate), or jump straight in from a monitor's Uptime History panel with Create SLA report (which pre-selects that monitor). Then click Generate Report and fill in the modal:
1. Report name
Required. It's pre-filled with something sensible like "January 2026 Uptime Report" — rename it to whatever your client will recognise ("Acme Corp — January SLA").
2. Start date and end date
Two date pickers, pre-filled to the previous calendar month. Rules:
- The end date must be after the start date.
- The end date cannot be in the future.
- The period must fit within your plan's maximum: 30 days on Base, 60 on Pro, 90 on Business. The modal shows "N days selected (max X)" and blocks generation if you go over.
Tip: your plan's maximum report period matches your data retention window, so you can always report on the full span of history Enori has kept for you. To report on a longer stretch, upgrade — or generate several consecutive reports.
3. Monitors
A checklist of your monitors. Tick the ones this report should cover, or use Select all. At least one is required. A single report can cover up to 200 monitors.
4. Generate
Click Generate Report. The report is computed and appears as a card in the grid. Its status moves from generating to ready (a few seconds for most accounts). The modal also shows a "X of N reports used this month" counter so you can see your remaining monthly quota.
Screenshot: the Generate Report modal with a name, date range, and two monitors selected.
Reading the results
Click any report card to open the full report. At the top you get the headline stat cards (overall uptime, avg / P95 / P99, total checks, monitors, incidents, total downtime, period length), followed by the downtime-periods table, the per-monitor breakdown, and the incident timeline.
Uptime figures are colour-coded so you can read health at a glance:
- 🟢 Green — 99.9% or higher.
- 🟡 Amber — 99% to 99.9%.
- 🔴 Red — below 99%.
Sharing a report
(Pro and Business plans.)
On a report, click Share. Enori creates a public link — app.enori.io/reports/ — and copies it to your clipboard. Anyone with the link can view the report in a clean, branded page and download it as a PDF, with no Enori account required.
The public page shows only the report's presentational data — uptime, response times, downtime, incidents. It deliberately does not expose any internal identifiers.
To stop sharing, click Unshare. The link stops working immediately. If you share the report again later, it reuses the same URL, so a link you've already sent will start working again.
Screenshot: the public report viewer at
app.enori.io/reports/, showing the uptime hero and monitor breakdown.
Exporting: PDF and CSV
You have two export formats, and they're available on different plans:
| Format | Plans | What you get |
|---|---|---|
| CSV | All plans | A spreadsheet with one row per monitor (Monitor, URL, Uptime %, Avg, P95, P99, Total Checks, Failed Checks, Downtime) plus an Overall rollup row. Opens cleanly in Excel and Google Sheets. Best for your own records or further analysis. |
| Pro and Business | A print-ready document of the full report — the polished artefact to attach to an email or archive. |
To export, open the report and click CSV or PDF. You can also print or download a PDF straight from a shared report's public page.
On Base, the PDF button isn't shown — CSV export is always available if you need the data in a file. Upgrade to Pro for PDF and public sharing.
Do reports send alerts?
No. A report is something you pull on demand — it doesn't notify anyone on its own, and generating one never triggers an alert.
If you want to be told when reliability slips — before month-end, not after — set up an SLO on the monitor. SLOs track a target continuously and fire burn-rate alerts through your existing channels (email, Slack, Discord, Teams, webhook, push) when you're spending your error budget too fast. Reports and SLOs complement each other: the SLO watches in real time, the report documents the outcome.
FAQ
Why do the report numbers differ from what my dashboard shows now?
A report is a frozen snapshot taken when you generated it. Your live dashboard keeps updating; the report doesn't. If you want current numbers, generate a fresh report — the old one stays as your record of that period.
An outage I remember isn't in the report — why?
Two common reasons, both intentional: the downtime fell inside a maintenance window you'd declared (excluded by design so planned work doesn't count against your SLA), or the failed checks were re-verified and cleared as a false positive and so were never counted as confirmed downtime.
Can I report on a period longer than 90 days?
Not in a single report — the maximum is 90 days (Business), 60 (Pro), or 30 (Base). For a longer span, generate several consecutive reports (e.g. one per month) — which is also how most SLAs are structured anyway.
My report covers one monitor and there's no "Monitor Breakdown" table. Is that a bug?
No. With a single monitor, the per-monitor breakdown would be identical to the overall summary, so it's hidden to avoid showing the same numbers twice. The breakdown appears as soon as a report covers two or more monitors.
Can the person I share with edit or see my other data?
No. The public link is view-only and shows just that one report's numbers. It exposes no account details, no other monitors, and no internal identifiers. Revoke it any time with Unshare.
Does deleting a report free up a monthly slot?
Yes. Your monthly limit counts the reports that currently exist for the calendar month, so deleting one (for example a report that came back failed) lets you generate another in its place.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| "Failed to download PDF. Pro or Business plan required." | PDF export is a Pro/Business feature. | Use CSV (available on every plan), or upgrade to Pro. |
| Report card shows "failed". | Something went wrong during generation (e.g. a very wide window on a large account timing out). | Delete it and generate again, ideally over a shorter period or fewer monitors. Deleting it also frees the monthly slot. |
| "Report period exceeds your plan limit of N days." | The selected range is longer than your plan allows. | Shorten the range to fit (30 / 60 / 90 days by plan), or upgrade. |
| Shared link shows "Report Not Found". | Sharing was disabled, or the report was deleted. | Re-open the report and click Share again — it restores the same link. If the report was deleted, generate a new one. |
| Uptime looks higher than I expected. | Maintenance-window downtime and re-verified false positives are excluded from the figures. | This is correct SLA behaviour. If you want strict, everything-counts numbers, avoid declaring maintenance windows over the period. |
| "Generate Report" button is greyed out. | A required field is missing, the date range is invalid or too long, or you've hit your monthly report limit. | Check that the name is filled, at least one monitor is selected, the range is valid and within your plan's max, and you have quota left this month. |
Reference: plan limits
| Reports per month | Max period | Public sharing | PDF export | CSV export | |
|---|---|---|---|---|---|
| Base | 3 | 30 days | — | — | ✓ |
| Pro | 10 | 60 days | ✓ | ✓ | ✓ |
| Business | Unlimited | 90 days | ✓ | ✓ | ✓ |
Monitors per report: up to 200 on any plan.
Related documentation
- Service Level Objectives (SLOs) — track a reliability target continuously and get alerted on unhealthy burn rate, instead of pulling a report after the fact.
- API Reference — generate, share, and export reports programmatically.
Last updated: 2026-07-21. Feedback or corrections: support@enori.io