Weekly
Get a weekly incident report by severity
Each Monday you see last week's incidents grouped by severity, with status and how long each lasted.
- Runs
- Weekly
- Apps
- incident.io
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every Monday at 9am email me last week's incident.io incidents grouped by severity, with each one's status and duration.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
The head of engineering is asked on Monday how reliable the platform was last week, and the honest answer takes an hour. Someone has to open incident.io, scroll through the incidents list, work out which were real and which were tests, and count how many were high severity. The summary written from memory in a hurry leaves out the Sunday night database failover that mattered most to customers.
Once a week, ClickRuntime lists the incidents created in the past 7 days from incident.io, groups them by severity, and emails you the result with each incident's name, severity and current status. Your Monday review starts from a complete, sorted list instead of from memory.
It is useful for engineering managers, SRE leads and anyone who reports reliability to executives or customers.
What you get out of it
A complete list, not a recollection
When the summary is built from the incident record, a quiet Sunday night incident cannot be forgotten. Leadership sees everything that happened, which builds more trust than a summary that looks suspiciously tidy.
Severity grouping shows what mattered
Seeing critical incidents separated from minor ones tells you at a glance whether the week was calm or concerning. You can open the discussion with the facts that deserve the most time.
Open incidents are not left behind
Each entry shows current status, so one that is still investigating or monitoring stands out. A problem that quietly stays open for days is surfaced rather than fading from attention.
Easy input for status reports
Weekly reliability notes for customers, boards and compliance teams can be written from this email. People spend their time deciding what to say to the board or to customers, not hunting for the underlying numbers.
Trends become visible over weeks
A pile of weekly emails is a simple history. Three weeks with several high-severity incidents in one service is a pattern, and it supports a request for engineering time to fix the underlying cause.
How it works
What happens, step by step
Every Monday ClickRuntime gets the incidents created in incident.io over the last week.
It groups them by severity.
You get an email listing each incident with its status and how long it lasted.
Before it runs live
- Connect incident.io
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other incident.io steps into one automation
Under the hood
The code that runs this automation
from collections import defaultdict
from datetime import datetime, timedelta, timezone
from clickruntime import on_trigger, credentials, http, notify
IO = "https://api.incident.io"
def io(path, **params):
resp = http.get(f"{IO}{path}", params=params, headers={"Authorization": f"Bearer {credentials.secret('INCIDENT_IO_API_KEY')}"})
resp.raise_for_status()
return resp.json()
def ts(s):
return datetime.fromisoformat(s.replace("Z", "+00:00"))
@on_trigger
def run(event):
since = (datetime.now(timezone.utc) - timedelta(days=7)).date().isoformat()
incidents = io("/v2/incidents", page_size=250, **{"created_at[gte]": since})["incidents"]
groups = defaultdict(list)
for i in incidents:
end = ts(i["updated_at"]) if i["incident_status"]["category"] == "closed" else datetime.now(timezone.utc)
hours = (end - ts(i["created_at"])).total_seconds() / 3600
groups[(i.get("severity") or {}).get("name", "Unset")].append(f" {i['name']} - {i['incident_status']['name']}, {hours:.1f}h")
body = "\n".join(f"{sev} ({len(rows)})\n" + "\n".join(rows) for sev, rows in sorted(groups.items()))
notify.email_me(f"incident.io last week: {len(incidents)} incidents", body or "No incidents.")
return {"incidents": len(incidents)}FAQ
Common questions
Does the summary include incidents that were only tests?
Which incident.io plan do I need?
Can the summary go to a team address or a Slack channel?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Chase unfinished post-incident follow-ups
Every week you get the follow-ups still outstanding, grouped by owner, with how long each has been open.
See how it worksGet an email when an incident is declared
Within a few minutes of a new incident in incident.io, you get an email with its name and severity.
See how it worksSend a short recap when an incident is resolved
Once an incident closes, stakeholders get a plain summary of what happened, built from its updates.
See how it worksKeep exploring
Set up “Get a weekly incident report by severity” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.