Watchflare docs
Sur cette page
Cette page n'est pas encore disponible en français. Vous lisez la version anglaise.

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

  1. Go to Settings > Notifications.
  2. Click Add channel. A side drawer opens.
  3. Give the channel a name (e.g. Ops Discord), paste a Shoutrrr URL, and select one or more categories (see Notification categories).
  4. Click Test to verify the URL works without persisting anything, then click Create.

You can add multiple channels. Each enabled channel receives every notification in the categories it subscribes to, independently.


Notification categories

Every channel subscribes to one or more categories, chosen with the checkboxes in the Add or Edit drawer. A channel only receives a notification when it subscribes to that notification’s category, so you can route monitoring alerts to one destination and account security events to another.

CategoryWhat it covers
AlertsMonitoring alerts and their resolutions: a host going down, a metric threshold breached, an incident clearing.
TransactionalAccount and security events: new login, password change, two-factor authentication changes, and email address changes. See Transactional notifications.

A channel with no category enabled receives nothing; a channel can subscribe to both.

Note

Email sent through the dedicated Email notifications (SMTP) settings carries the same category selector: it only sends alert emails when it subscribes to Alerts, and only account and security emails when it subscribes to Transactional. That SMTP sender is separate from an smtp:// channel added here, which is treated like any other Shoutrrr channel.


Transactional notifications

Beyond monitoring alerts, the Hub notifies you of security-relevant changes to your own account. These belong to the Transactional category and are delivered to every channel, and to the SMTP sender, that subscribes to it.

The following account events each trigger a notification:

EventWhen it firesDetails included
New loginA successful sign-in, including after a two-factor challengeTime, IP address, device (user agent)
Password changedYour account password is changedTime
Two-factor enabled2FA is turned onTime
Two-factor disabled2FA is turned offTime
Email changedYour account email is changed. A notice also goes to the previous addressTime, new address
Email confirmedSent to the new address once it becomes the active emailTime

Changing your email produces two messages: one to the old address, so a compromised account cannot silently swap the address unnoticed, and one to the new address.

Note

Transactional notifications are best-effort and asynchronous. They never block or fail the action that triggered them: if no channel or SMTP sender subscribes to Transactional, the event simply proceeds without a notification.

Warning

The IP address in a login notification is the client IP as seen by the Hub. Behind a reverse proxy, it is only accurate when the proxy sets the standard forwarded headers and the Hub is configured to trust them. See Reverse proxy.


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:

  1. Open Telegram and message @BotFather.
  2. Send /newbot and follow the prompts.
  3. BotFather replies with your bot token (e.g. 7123456789:AAF...).

Step 2 - Get your chat ID:

  1. 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.
  2. Open https://api.telegram.org/bot{token}/getUpdates in a browser.
  3. Find result[0].message.chat.id in 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

ActionHow
Enable / disableToggle the switch next to the channel
EditClick the pencil icon. The drawer opens with the current name, categories, and a masked preview of the URL; leave the URL field empty to keep the stored value.
DeleteClick the trash icon and confirm. Cannot be undone.
TestClick 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.