How channels work
A channel is a destination. Create it once in your workspace, attach it to any number of monitors. A monitor with no channel changes state silently.
Delivery happens after monitor state is committed, and every attempt — success or failure — is recorded in a ledger. A channel that is failing cannot change what a monitor believes about its target.
Webhook
A JSON POST. The body carries the structured payload plus text and content aliases,
which is what lets one endpoint work with Slack, Discord, Mattermost and plain automation
receivers without provider-specific configuration.
Setup
- Channels → Add → Webhook
- Paste the URL
- Attach to a monitor
Slack — create an Incoming Webhook in your Slack app settings and paste the
https://hooks.slack.com/services/... URL. Slack renders the text field.
Discord — channel settings → Integrations → Webhooks → New Webhook, copy the URL. Discord
renders the content field.
Mattermost — same shape as Slack.
Your own receiver — the full schema is in webhook payload.
Timeout is 10 seconds. Any non-2xx response is recorded as a failed delivery.
Setup
- Channels → Add → Email
- Enter the address
- Attach to a monitor
The message contains the monitor name, the target, the failure reason and the time the incident opened.
Do not make email your only channel for an email authentication monitor. If that monitor fires, email is the thing that is broken.
ntfy
Push notifications to your phone with no account, no login and no token.
Setup
- Install the ntfy app (iOS/Android), or open ntfy.sh
- Subscribe to a topic name nobody could guess:
whatping-a7f3c9d2e1, notwhatping-alerts - Channels → Add → ntfy →
https://ntfy.sh/whatping-a7f3c9d2e1 - Attach to a monitor
Down alerts arrive as high priority with an alarm icon; recoveries at normal priority with a check mark.
Self-hosted ntfy works — use your own base URL.
Telegram
A message to a chat or a group. Two minutes to set up.
1. Create the bot
Message @BotFather in Telegram:
/newbot
Give it a display name, then a username ending in bot. BotFather replies with a token:
123456789:AAHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2. Start a chat with it — do not skip this
Open your new bot and press Start, or send it any message.
3. Get the chat ID
Open in a browser, with your token:
https://api.telegram.org/bot<TOKEN>/getUpdates
Find "chat":{"id":...}. A personal chat is a positive number; a group is negative, usually
starting -100.
If the response is empty, you skipped step 2.
4. Add the channel
Channels → Add → Telegram → paste the bot token and the chat ID.
The delivery ledger
Every attempt is recorded: which channel, which incident, which reminder, whether it succeeded, and the error if not.
This exists because the worst state for an alerting system is one where a channel has been quietly failing for weeks and everybody assumes it works. Check the ledger after setting up a channel rather than assuming.
Proving a channel works
Do not wait for a real outage.
- Create a throwaway HTTP monitor pointing at a hostname that does not exist
- Interval 20 s, failures before down 1
- Attach the channel
- Wait about a minute for the alert
- Delete the monitor