Notification Channels
Send alert notifications to Discord, Slack, Telegram, Matrix, Ntfy, Gotify, SMTP, or any of the 26+ services supported by Shoutrrr. Manage channels from Settings > Notifications.
Watchflare delivers alert and resolution notifications through one or more notification channels, backed by the Shoutrrr library. Each channel is a Shoutrrr URL targeting a single destination (a Discord webhook, a Slack incoming webhook, an SMTP mailbox, a Telegram bot, etc.). Channels are managed from Settings > Notifications.
Note
Shoutrrr supports 26+ services out of the box. The list below shows the most common ones with copy-paste URL templates. For the full reference, see the Shoutrrr services overview.
Adding a channel
- Go to Settings > Notifications.
- Click Add channel. A side drawer opens.
- Give the channel a name (e.g.
Ops Discord), paste a Shoutrrr URL, and click Create. - Click Test before creating to verify the URL works without persisting anything.
You can add multiple channels. Each enabled channel receives every alert and resolution notification independently.
URL formats
Discord
Format: discord://{token}@{webhook_id}
Build it from a Discord webhook URL like https://discord.com/api/webhooks/{webhook_id}/{token}:
{webhook_id}is the first segment after/webhooks/{token}is the segment after the webhook id
To get the webhook URL: open a Discord channel > Edit Channel > Integrations > Create Webhook > copy the webhook URL.
Slack
Format: slack://hook:{A}-{B}-{C}@webhook
Build it from a Slack Incoming Webhook URL like https://hooks.slack.com/services/{A}/{B}/{C}: join the three path segments with hyphens.
To get the webhook URL: go to api.slack.com/apps, create or open an app, enable Incoming Webhooks, and add a webhook to your workspace.
Telegram
Format: telegram://{bot_token}@telegram?chats=@{channel_or_chat_id}
Step 1 - Create a bot and get the token:
- Open Telegram and message @BotFather.
- Send
/newbotand follow the prompts. - BotFather replies with your bot token (e.g.
7123456789:AAF...).
Step 2 - Get your chat ID:
- Search for your bot by name and send it any message. The bot will not reply, but the message is what binds your chat to the bot.
- Open
https://api.telegram.org/bot{token}/getUpdatesin a browser. - Find
result[0].message.chat.idin the JSON response.
Note
For a group, add the bot as a member then send /start@{botname} in the group before calling getUpdates. By default, Telegram bots only receive commands (messages starting with /) in groups. The chat_id of a group is a negative number.
Matrix
Format: matrix://{user}:{password}@{homeserver}/?rooms={room_id}
Use a dedicated Matrix account for the Hub. Get the room ID from the room's advanced settings.
Ntfy
Format: ntfy://{username}:{password}@{host}/{topic}
For a public ntfy.sh topic without auth: ntfy://ntfy.sh/{topic}.
Gotify
Format: gotify://{host}/{token}
Generate an application token in your Gotify instance under Apps > Create Application.
SMTP
Format: smtp://{user}:{password}@{host}:{port}/?fromAddress={from}&toAddresses={to}
Example for Gmail (with an app password):
smtp://you@gmail.com:abcdefghijklmnop@smtp.gmail.com:587/?fromAddress=you@gmail.com&toAddresses=alerts@example.com
For multiple recipients, comma-separate the toAddresses.
Generic webhook
Format: generic://{host}{path} (or generic+https://... to force HTTPS)
The Hub sends a POST with a JSON body containing title and message fields. Use this for any service not natively supported by Shoutrrr.
Test before save
The Test button inside the Add or Edit drawer sends a one-off notification using the URL currently in the form, without persisting anything. Use it to verify the URL works before clicking Create or Save.
The same button also works on saved channels: when the URL field is empty during edit, the test uses the stored URL.
Note
Tests are rate-limited to one per channel every 5 seconds, with a visible countdown on the button. Drafts share the same limit, keyed by the URL itself: testing two different URLs in a row is not throttled.
Managing channels
| Action | How | |--------|-----| | Enable / disable | Toggle the switch next to the channel | | Edit | Click the pencil icon. The drawer opens with the current name and a masked preview of the URL; leave the URL field empty to keep the stored value. | | Delete | Click the trash icon and confirm. Cannot be undone. | | Test | Click the Send icon in the row, or the Test button in the drawer. Rate limited per channel. |
Note
Channel URLs are encrypted at rest using NOTIFICATION_ENCRYPTION_KEY (see Configuration) and never returned in cleartext by the API. The Hub only exposes a masked form (e.g. discord://***).
Upgrading from v0.37 or earlier
The webhook_endpoints table from older versions is dropped during the upgrade. The URL format used to be native (e.g. the full Discord webhook URL), but Shoutrrr expects a compact form (discord://TOKEN@WEBHOOK_ID). Re-add your destinations from Settings > Notifications after the upgrade.
The environment variable SMTP_ENCRYPTION_KEY is renamed to NOTIFICATION_ENCRYPTION_KEY. Rename it in your .env before starting v0.38 or later.
Next step
Configure alert thresholds to control when notifications fire. See Alert Rules.