Discord
Post uptime, endpoint alert and exception notifications to a Discord channel through a channel webhook.
The Discord integration posts Unhandled notifications into a Discord text channel. It is a notification channel backed by a Discord channel webhook: Unhandled sends embeds, and there is no bot to invite and nothing to click back. Use it for monitor outages, endpoint alerts and summaries of new and regressed exceptions.
Create the webhook in Discord
In your Discord server's settings, open Integrations, create a webhook, pick the channel it posts to and copy its URL. It looks like https://discord.com/api/webhooks/....
Add the channel in Unhandled
You need to be an organization admin.
- Open the organization's Integrations settings (
/o/:org/settings/integrations) and click Add channel under Notification channels. - Choose Discord as the type and give it a name, up to 80 characters, such as
#incidents. - Paste the URL into Webhook URL.
- Optionally tick Uptime monitors, Exceptions and Only for production environments.
- Click Send test. A gray "Test notification" embed should appear in Discord, and Unhandled shows the HTTP result.
- Click Add channel.
The URL is stored encrypted and never shown again; the channel page shows only a short hint. Pasting a new URL on the channel page updates every alert, monitor and rule that uses the channel. The URL must be https, resolve to a public address, and contain no credentials or #fragment. Unhandled does not check that it points at Discord, so run Send test after every change.
Choose what posts here
| Notification | How to route it to this channel |
|---|---|
| Monitor down and recovered | Tick Uptime monitors. Every uptime monitor in the organization then posts here |
| Exception summaries | Tick Exceptions for projects without a matching rule, or add a rule on the Exceptions tab of the project's Alerts page (/o/:org/projects/:project/alerts/exceptions) |
| Endpoint alerts | Select the channel in the alert itself; alerts never use defaults. See Alerts |
Only for production environments limits the defaults to production monitors and exceptions. An exception rule that mutes Discord for a service or environment silences only Discord channels; Slack and webhook channels keep their routing. See Notifications for how rules match.
Messages
Each notification is one embed. Its title names the event, its description holds the details followed by Markdown links, and its color tells you the state at a glance.
| Event | Title | Color | Details |
|---|---|---|---|
| Monitor down | Monitor Down: <monitor> | red | The URL, the failure type (timeout, dns, connection, tls, http, ...), the environment, Open monitor link |
| Monitor recovered | Monitor Recovered: <monitor> | green | The URL, total downtime, Open monitor link |
| Alert firing | Alert firing: <alert> | red | Current value and threshold, requests in the window, endpoint, service and environment, Endpoint, Slowest traces and Alert links |
| Alert resolved | Alert resolved: <alert> | green | Peak value and threshold, resolve reason, firing duration, the same links |
| Alert reminder | Alert still firing: <alert> | red | Latest value and threshold, when it started firing, endpoint, service and environment, Endpoint and Alert links |
| Alert error | Alert can't be evaluated: <alert> | amber | How many evaluations failed, project and environment, Alert link |
| Exception summary | <n> new or regressed issues in <organization> | amber | One line per issue tagged [new] or [regressed] with project, environment and link |
| Test | Test notification | gray | The organization the channel belongs to |
Titles are cut at 256 characters and descriptions at 4,096. Exception summaries collect issues for 60 seconds and list up to 10, with an "and N more" line for the rest. Monitor and alert messages that arrive within 20 seconds of each other are posted as one embed titled <n> notifications: <counts>, with one line and link per event, up to 25 per embed. It is red when anything in it fired or went down, green otherwise.
Delivery
Unhandled posts JSON to the webhook with a 10-second timeout, without following redirects, and treats any 2xx response as delivered. Timeouts, network errors, 408, 429 and 5xx are retried. Monitor and alert messages get up to 7 attempts over about 50 minutes. Exception summaries get up to 6 attempts, starting at 30 seconds and doubling up to 8 minutes. A Retry-After header is honoured up to twice the scheduled wait. After 10 failed attempts in a row Unhandled disables the channel and tells the organization admins. A successful Send test or a new URL turns it back on. See channel health.
The channel page (/o/:org/notification-channels/:channel) shows the last 100 deliveries with status, attempts, response code and last error. Repeated 4xx failures may mean the webhook was deleted in Discord; create a new one and paste its URL.
Removing the channel
Deleting the channel stops monitors from posting to it, and alerts keep being evaluated without it. Exception rules that post to it are removed, so the next matching rule takes over.