Daily
Get a morning list of incidents open over a day
Every morning you see the incidents still triggered or acknowledged after 24 hours, oldest first.
- Runs
- Daily
- Apps
- PagerDuty
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every weekday at 8:30am, email me PagerDuty incidents that are still triggered or acknowledged more than 24 hours after they started, oldest first, with the service and assignee.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
On a busy engineering team, an incident gets acknowledged at 2 a.m., the on-call person goes back to sleep, and the follow-up never happens. A day later it is still sitting there as triggered or acknowledged. Nobody owns it, the alert noise trained everyone to scroll past it, and the underlying fault, maybe a degraded queue or an expiring certificate, keeps quietly getting worse.
Every morning, PagerDuty is queried for incidents in the triggered or acknowledged state. Anything created more than 24 hours ago is kept, sorted oldest first, and sent to you as one email. If nothing qualifies you still know the check ran, and if something qualifies you see exactly what has been left alone the longest.
Engineering managers and team leads use it as a standing item for standup, and SRE groups use it to catch handoff gaps between shifts.
What you get out of it
Stale incidents stop being invisible
An incident that has been open for a day rarely appears in anyone's chat anymore. A morning list brings it back to the top of an inbox, where someone has to either resolve it or explain why it stays open.
Oldest first matches what to fix first
Sorting by age puts the longest-neglected incident at the top. The person reading has an obvious starting point for the day, and the oldest problems stop quietly drifting into week-old territory.
Better handoffs between shifts
Acknowledged incidents are the ones that fall between people. Listing them daily exposes work that was claimed but not finished, so the next shift knows what the last one left behind.
A cleaner standup agenda
Instead of recalling what is open from memory, the team opens one email with the real list. Standups spend their minutes deciding who takes each item, not reconstructing which incidents exist.
Fewer repeat outages from ignored warnings
Lingering low-urgency incidents often precede a bigger one. Clearing them on a daily rhythm lowers the chance that a known, unresolved warning turns into a customer-facing outage you already had notice of.
How it works
What happens, step by step
Every morning ClickRuntime gets the PagerDuty incidents that are still triggered or acknowledged.
It keeps the ones opened more than 24 hours ago.
You get an email listing them oldest first, with status, service and who is assigned.
Before it runs live
- Connect PagerDuty
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 PagerDuty steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime, timedelta, timezone
from clickruntime import on_trigger, credentials, http, notify
PD = "https://api.pagerduty.com"
def pd(path, **params):
resp = http.get(f"{PD}{path}", params=params, headers={"Authorization": f"Token token={credentials.secret('PAGERDUTY_API_KEY')}",
"Accept": "application/json"})
resp.raise_for_status()
return resp.json()
@on_trigger
def run(event):
cutoff = datetime.now(timezone.utc) - timedelta(hours=24)
incidents = pd("/incidents", **{"statuses[]": ["triggered", "acknowledged"], "sort_by": "created_at:asc", "limit": 100})["incidents"]
old = [i for i in incidents if datetime.fromisoformat(i["created_at"].replace("Z", "+00:00")) < cutoff]
if not old:
return {"open": 0}
lines = [f"{i['created_at'][:16]} [{i['status']}] {i['title']} - {i['service']['summary']}, "
f"{', '.join(a['assignee']['summary'] for a in i['assignments']) or 'unassigned'}" for i in old]
notify.email_me(f"{len(old)} PagerDuty incidents open over 24h", "\n".join(lines))
return {"open": len(old)}FAQ
Common questions
Does an acknowledged incident that auto-resolves still show up?
Can I narrow the list to one service or escalation policy?
How is the 24 hour cutoff measured?
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
Get a weekly incident report by service
Every Monday you see how many incidents each service had last week and how long they took to resolve on average.
See how it worksGet a reminder the day before you're on call
The afternoon before a shift, you get a note saying when your on-call starts and ends.
See how it worksGet an email when a PagerDuty incident changes
When an incident is triggered, acknowledged or resolved, you get the update with its service and urgency.
See how it worksKeep exploring
Set up “Get a morning list of incidents open over a day” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.