On-call rotations
thump can route alerts to whoever is on call right now instead of blasting every channel on every incident. A schedule defines an ordered list of responders rotating on a fixed cadence; an on-call alert channel points a monitor at that schedule; at the moment an alert fires, thump resolves the schedule and notifies the current responder's channels — email, SMS, phone call, push, whatever you configured for that person.
The model in one minute
- Schedule — a rotation: responders in order, a shift length (daily /
weekly / every 2 weeks), and the timestamp the first shift started. Handoffs happen automatically; nobody edits anything on rotation day.
- Responder — a named position in the rotation carrying the alert
channel ids that reach that person (their email channel, their SMS channel, …). Responders are positions, not user accounts — a contractor who never logs into thump can still be paged.
- Override — a one-off span ("I've got Saturday") that replaces who is
on call for its duration without touching the rotation.
- On-call channel — an alert channel of type
oncalltargeting a
schedule. Attach it to monitors like any other channel. It has a layer: layer 0 pages the current on-call, layer 1 pages the next person in rotation, and so on.
Setting it up
- Create the channels that reach each person (Channels → New): an
email channel per person, and — if your operator configured Twilio — an SMS or Phone call channel per person. Phone numbers are E.164 (+15551234567).
- Create a schedule (On-call → New schedule): name it, pick the
rotation length and the first handoff time, then add responders in order and tick each person's channels.
- Create an on-call channel (Channels → New → On-call): pick the
schedule, keep "Current on-call".
- Attach it to your monitors like any other channel.
That's it. When an incident opens, thump resolves the schedule at that moment and notifies the on-call responder's channels. The resolve notification goes to the same place. If the shift changed mid-incident, reminder re-pages reach the new on-call — routing is resolved on every send, never cached.
Escalation: page the backup if nobody acks
On-call channels compose with thump's escalation ladder:
- Create a second on-call channel on the same schedule with
"Next in rotation" (layer 1).
- Attach it to the monitor, and set Escalate after to e.g. 15 minutes
on that attachment (monitor → channel settings).
Now an incident pages the on-call person immediately; if it's still unacknowledged after 15 minutes, the next person in rotation gets paged too. Acknowledging the incident halts the ladder — the backup's phone stays quiet once someone owns the problem. Add a layer-2 channel with a longer delay for a third tier.
Pair this with reminder re-pages (monitor setting) to keep re-paging the on-call person until someone acknowledges.
Overrides
On-call → your schedule → Add override: pick who covers, from when to when, and an optional note. Overrides replace layer 0 only — "next in rotation" keeps following the base order, so escalation stays predictable. Deleting an override restores the rotation instantly.
SMS and phone calls (Twilio)
The sms and voice channel types send through the platform's Twilio account. Self-hosters set three worker secrets:
wrangler secret put TWILIO_ACCOUNT_SID
wrangler secret put TWILIO_AUTH_TOKEN
wrangler secret put TWILIO_FROM_NUMBER # E.164 number owned by the account
Until they're set, SMS/voice dispatches fail with a clear "Twilio not configured" error (and are not retried). SMS bodies are kept short — a couple of segments; voice calls read the alert aloud twice, so a groggy pickup still catches the monitor name.
Notes
- Who's on now is shown on the On-call page (with handoff time and the
next responder) and next to each schedule in pickers.
- Test send on an on-call channel exercises the full resolution path
and delivers to the current responder's real channels — the response tells you exactly what failed if something is misconfigured.
- A schedule cannot be deleted while an on-call channel still targets
it (HTTP 409) — repoint or delete those channels first, so a monitor never silently loses its paging path.
- Responder channels must be concrete channels (no on-call channels inside
responders — no recursion).
- All schedule and override changes land in the audit log.