Using Alwaysbeat
Notifications
When a check goes down or recovers, Alwaysbeat notifies every channel configured
on that check. Channels are plain strings of the form kind:target.
Channel format
Each check has a list of channels. On the dashboard you enter one per line; in the API they're
an array of strings. Every entry is kind:target:
| Channel | Format | Example |
|---|---|---|
email:<address> | email:ops@example.com | |
| Telegram | telegram:<chat_id> | telegram:123456789 |
| Slack | slack:<incoming-webhook-url> | slack:https://hooks.slack.com/services/T00/B00/xxxx |
| Webhook | webhook:<https-url> | webhook:https://example.com/hooks/dmf |
A check can mix channels — for example email your team and post to a webhook that opens a ticket. Duplicate entries are rejected.
When notifications fire
Alwaysbeat notifies on state transitions only, never on every sweep:
- Down — a ping went missing past the deadline, or the job sent a
/fail. - Up (recovered) — the first successful ping after being down.
Optional extras — repeat "nag" reminders while still down, flap-cooldown to suppress brief blips, and "ran too long" warnings — are covered in Reliability controls.
Add email:you@example.com. The address must be a plain email address (no display
name). You'll receive a message when the check goes down and again when it recovers, with a
link back to the check.
Telegram
Add telegram:<chat_id>, where <chat_id> is a numeric
Telegram chat ID (negative for groups). Because Telegram bots can only message chats they've
been added to, you must first start a conversation with the Alwaysbeat bot (or add it to your
group) so it's permitted to deliver messages to that chat.
@username. If you're unsure of it, a quick way
is to message a chat-ID helper bot in Telegram, or read it from the Bot API's
getUpdates response after messaging the bot.
Slack
Add slack:<incoming-webhook-url> to post alerts to a Slack channel. Alwaysbeat
sends a formatted message with a colored bar — green on recovery, red when down — and a link
back to the check.
To get the URL:
- In Slack, create an app (or reuse one) and enable Incoming Webhooks.
- Click Add New Webhook to Workspace and choose the channel to post to.
- Copy the generated webhook URL — it looks like
https://hooks.slack.com/services/T00000/B00000/XXXXXXXX. - Add it as a channel:
slack:https://hooks.slack.com/services/T00000/B00000/XXXXXXXX.
/services/. Workflow Builder trigger URLs (path
/triggers/…) are a different feature that ignores our message formatting, so
they're rejected when you add the channel.
Webhooks
Add webhook:https://your-endpoint to receive a signed JSON POST on
every state change — ideal for wiring Alwaysbeat into PagerDuty Events, a ticketing system, or
your own service. The payload is signed with HMAC-SHA256 so you can verify it came from
Alwaysbeat. Only http/https URLs with a public host are accepted
(requests to private/internal addresses are refused). See
Signed webhooks for the payload shape and how to verify the
signature.