AccelerUpDocs
Incidents and on-call/Alerting/Notification channels

Notification channels

Where pages are delivered — Slack, Telegram, email, PagerDuty, Opsgenie, Teams, SMS, voice and webhooks.

Incidents & On-Call → Channels is where you define the places a page can land.

Supported channels

ChannelNeedsNotes
SlackIncoming webhook URL, or OAuthRich formatting; messages trimmed to Slack's limits automatically
TelegramBot token + chat IDHTML formatting; capped at 4096 characters
EmailApp-level SMTP (see environment)Per-user, not broadcast, when paging a person
PagerDutyEvents API v2 routing keyCreates and resolves PD incidents
OpsgenieAPI key
Microsoft TeamsIncoming webhook
SMS / voiceTwilioOpt-in, default off — see below
WebhookURL, optional signing secretAnything you want to build against

Channel kind

Every channel has a kind that decides what is routed to it:

KindReceives
alertsAlert fired / recovered
incidentsIncident opened / updated / resolved
bothEverything

A channel with the wrong kind is the most common reason a message "never arrived" — nothing failed, nothing matched.

Test before you trust

Every channel has a Test button. It sends a synthetic message through the real path: the same client, the same credentials, the same formatting.

Do it when you create the channel and again after any credential rotation. A webhook that was revoked three months ago looks identical to one that works, right up until the first real page.

Voice and SMS are opt-in

Twilio voice and SMS are off by default and must be enabled per organisation. Voice never fires on an untargeted broadcast — only on a notification aimed at a specific person through an escalation policy.

Important

This is deliberate. A broadcast that rings phones is how a minor alert wakes an entire team, and it only has to happen once for people to start ignoring the phone.

Routing rules

Channels are the destination; routing rules decide which alerts reach them. Rules match on severity, service, team and environment.

An alert that matches no rule falls back to the broadcast channels for its category. An alert that matches several is delivered to each, once.

Webhooks

A webhook channel receives a JSON body for every event. Use it for anything not in the list above — a ticketing system, a home-grown dashboard, an internal bot.

See Webhooks for the payload shape and signature verification.

What happens when a channel fails

Nothing is dropped silently. Every attempt is logged, failures are retried three times, and what is left lands in the DLQ with a retry button. See Notification delivery.

Where this behaviour lives: backend/internal/notification/dispatcher.go, backend/internal/domain/notification.go. If the code and this page disagree, the code is right — please fix the page.

Part of Incidents and on-callTurning a reading into a page, and a page into a resolved incident.