Weekly incident.io metrics to Google Sheets and Slack

Every Monday at 8am, last week's incident.io activity becomes a trending row in your Sheet and a short Slack snapshot for engineering leadership.

Deterministic Code
incident.ioGoogle SheetsSlackEngineeringOperationsDaily DigestsNotifications & Alerts
PromptCreate

Build me a deterministic code workflow that runs every Monday at 8am and turns last week's incident.io activity into a metrics row in a shared Google Sheet plus a short Slack snapshot for engineering leadership. No reasoning or AI drafting. The column layout and message template are fixed.

Trigger: cron, every Monday at 8:00 in my workspace timezone.

Step 1. Use incident.io List Incidents to fetch every incident whose created_at falls in the trailing seven days (last Monday 00:00 through Sunday 23:59 in my workspace timezone). Page through results until you have them all.

Step 2. Use incident.io List Follow-ups to fetch all follow-ups for the organisation, then count the ones whose status is open (or any not-completed status) to get the open follow-ups number. This is a global open count, not just last week's.

Step 3. From the incidents list, compute a fixed set of numbers in code: total incident count for the week; a count per severity (one number per severity that exists in the response); a count per incident type (one number per type that exists in the response); mean time to resolution in hours, averaged across only the incidents that have both a reported timestamp and a resolved timestamp within the week, computed as resolved minus reported. Round MTTR to one decimal.

Step 4. Use Google Sheets Get Values on the Weekly incident metrics spreadsheet to read the last existing data row (the prior week's row). For each metric, compute the week-over-week delta as this week minus prior week. If there is no prior row, deltas are blank.

Step 5. Use Google Sheets Append Values to add one new row to the Weekly incident metrics sheet. Columns, in order: week_ending (Sunday's date, ISO yyyy-mm-dd), total_incidents, count_by_severity (one column per severity, matching the existing header), count_by_type (one column per type, matching the existing header), mttr_hours, open_followups. The spreadsheet ID and sheet/tab name should be configurable inputs at the top of the workflow.

Step 6. Use Slack Send a Message to post a short, pre-formatted snapshot to a configurable channel. Use Slack's mrkdwn formatting. Template:

*Weekly incident snapshot — week ending {date}* Total incidents: {n} ({+/-Δ} vs last week) By severity: {sev1}: {n} ({Δ}), {sev2}: {n} ({Δ}), ... By type: {type1}: {n} ({Δ}), ... MTTR: {h} h ({Δ} h) Open follow-ups: {n} ({Δ})

Deltas should render with a leading + or - sign; blank deltas (no prior row) render as a single dash.

Inputs that should be top-of-workflow configuration: spreadsheet ID, sheet/tab name, Slack channel ID or name, lookback window in days (default 7).

This is intentionally a code workflow rather than an agent. The numbers and message layout are fixed, so determinism and idempotency matter more than narrative quality. If the workflow runs twice on the same Monday, that is acceptable; the duplicate row can be deleted manually.

What does this prompt do?

  • Pulls last week's incidents from incident.io and counts them by severity and type.
  • Calculates mean time to resolution and the number of open follow-ups, with no manual spreadsheet work.
  • Appends one fresh row to your Weekly incident metrics sheet so trends build up automatically over time.
  • Posts a clean, pre-formatted snapshot to a Slack channel of your choice with this week's numbers and week-over-week deltas.

What do I need to use this?

  • An incident.io account with permission to list incidents and follow-ups.
  • A Google account connected to the Weekly incident metrics spreadsheet you want to write to.
  • A Slack workspace, and the name of the channel where the leadership snapshot should land.
  • The header row of your spreadsheet already set up so each metric has a column.

How can I customize it?

  • Change the schedule. Move it off Monday 8am to whatever fits your leadership rhythm.
  • Swap the destination Slack channel, or send to a private channel for senior engineering only.
  • Adjust the metrics. Drop columns you don't care about, or add ones like incidents by team or by customer impact.
  • Change the lookback window from seven days to fourteen or thirty for a longer trailing view.

FAQs

Do I need an AI model to run this?
No. This is a deterministic workflow that pulls fixed numbers from incident.io, writes them to a sheet, and posts a templated Slack message. There is no drafting or reasoning step.
How are the week-over-week deltas calculated?
Before appending the new row, the workflow reads the last row already in the sheet and compares each metric against it. The deltas show up in the Slack snapshot.
What if I don't have a spreadsheet set up yet?
Create a Google Sheet called Weekly incident metrics with a header row that lists the columns you want, such as week ending, total incidents, P1 count, P2 count, MTTR, and open follow-ups. The workflow will append a new row each Monday.
Can the Slack message go to a private channel?
Yes. Pick any channel the connected Slack user can post into, public or private, and the snapshot will land there.
What is mean time to resolution measured from?
It is calculated from each incident's reported time to its resolved time, then averaged across all incidents that were resolved during the seven day window.

Related templates

Auto-fix your calendar when a flight slips, and flag what's at risk

When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.

Google Calendar
AviationStack
Slack
Agentic Task
Trace phishing emails to the sending IP and report abuse

Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.

AbuseIPDB
Gmail
Slack
Agentic Task
Weekly Amazon S3 bucket security audit posted to Slack

Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.

Amazon S3
Slack Bot
Google Sheets
Agentic Task
Turn procurement portal tenders into CRM deals each morning

Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Draft polite follow-ups for emails that never got a reply

Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.

Aurinko
Google Sheets
Slack Bot
Agentic Task
Turn each week's football fixtures into a venue staffing plan

Every Monday, rank the week's matches by expected demand, put the big ones on your venue calendar, and post a rota-ready summary to Slack.

API-Sports
Google Calendar
Slack
Agentic Task

Stop hand-rolling weekly incident reports.

Connect incident.io, Google Sheets, and Slack once, and Geni delivers the same trended snapshot to your leadership channel every Monday at 8am.