How it works
When an incident is published, updated, or resolved, Observer fans the event out to every enabled destination that matches the affected page. Metric, SLO, and agent events are routed the same way. Each destination chooses which alerts it receives, with optional routing filters, a snooze, and a daily digest. Each destination formats the event for its channel (a Slack message, a PagerDuty trigger, a signed webhook) and delivers it. Deliveries retry on transient failures and record a result you can inspect. The agent never sees these destinations. Routing happens in the control plane from the precomputed incident state, so a webhook URL or API key you store here is never handed to an agent.How alerts open and close
On-call destinations (PagerDuty, Jira, Splunk On-Call, Grafana IRM) open one alert per subject and close it when the subject recovers:- What opened always closes. A close is sent only to destinations that received the alert, and filters, snooze and page binding never block it.
- Nothing closes that never opened. You won’t get “recovered” for an alert that wasn’t sent to you.
- Still true after a pause? When a snooze ends or monitoring resumes and the metric is still failing, the alert is sent again, saying why.
- Scheduled maintenance notices, SLA statement notices and the daily digest are informational: they never open an on-call alert.
Scope
Every destination is either:- Org-wide: fires for incidents on any page in the organization.
- Page-scoped: fires only for incidents and metrics on one status page.
Channels
Chat and webhooks
Slack, Discord, Microsoft Teams, a generic signed webhook, and email.
Telegram
Connect a Telegram chat with a one-click deep link.
PagerDuty
Trigger, update, and resolve a PagerDuty incident. Agent, metric, and SLO
alerts also open and resolve their own on-call incident.
Jira
Open a Jira issue per incident and transition it on resolve.
Splunk On-Call
Open and recover a Splunk On-Call incident.
Grafana IRM
Fire and resolve a Grafana IRM alert via an incoming webhook.
RSS and Atom feeds
A public feed of incidents per status page. No setup.
Add a destination
- Open Alerts in the console.
- Choose Add destination and pick a channel under Channel.
- Under Connection, enter the connection details (a webhook URL, an API key, a chat id). Send test sends one sample message without saving.
- Under Alerts, pick a preset (Paging, Everything, daily digest) or Custom to choose alerts yourself.
- Under Routing, choose All status pages (organization-wide) or one page, and optionally narrow by services, metrics, and minimum severity.
- Select Add destination to save. Send test is also in the row’s actions menu on the Alerts page.
Secrets are encrypted at restWebhook URLs, routing keys, and API keys are encrypted before they are stored.
After you save, the value is shown masked and never returned in full. To change
a secret, type a new value over the mask; leave it masked to keep the current
one.

