Alert Channels
The alert channel kind set is closed:
webhookslack_webhookdiscord_webhookntfyemail_smtpChannel lists omit config so read-only channel access never exposes secrets.
Payload
Section titled “Payload”Native webhook delivery sends this stable payload shape:
{ "version": 1, "state": "alerting", "rule": "High error rate", "severity": "page", "instance": { "service": "api" }, "value": "12.3", "threshold": "5", "scope": { "project": "demo", "environment": "prod" }, "url": "https://oriel.example.com/...", "since": "2026-06-16T00:00:00Z"}Slack, Discord, ntfy, and email channels render a one-line human summary.
webhook
Section titled “webhook”{ "url": "https://example.com/hooks/oriel", "secret": "optional-bearer-token"}When secret is set, Oriel sends:
Authorization: Bearer <secret>slack_webhook
Section titled “slack_webhook”{ "url": "https://hooks.slack.com/services/...", "secret": ""}Oriel posts:
{ "text": "[PAGE] High error rate alerting {service=api} value=12.3 threshold=5" }discord_webhook
Section titled “discord_webhook”{ "url": "https://discord.com/api/webhooks/...", "secret": ""}Oriel posts:
{ "content": "[WARN] Rule alerting value=12.3 threshold=5" }{ "server": "https://ntfy.sh", "topic": "oriel-alerts", "token": "optional-token"}server defaults to https://ntfy.sh. Severity controls priority:
| Severity | ntfy priority |
|---|---|
page | urgent |
warn | high |
info | default |
email_smtp
Section titled “email_smtp”{ "host": "smtp.example.com", "port": 587, "from": "oriel-alerts@example.com", "to": ["oncall@example.com"], "username": "oriel-alerts", "password": "secret"}Required fields are host, from, and non-empty to. port defaults to
587. SMTP auth is used when username is set.
Retry Behavior
Section titled “Retry Behavior”The worker delivers with three attempts and exponential backoff starting at one
second. Final failure maps to ORL-4001.