Alert channels
An alert channel is a destination — an email address, a Slack webhook, a PagerDuty integration key. Channels hold delivery configuration only; alert rules decide which monitors fire into which channels and when.
Create channels in the WebUI at Alerts → Channels → New channel. Every channel has a friendly name (shown in alert history), an enabled toggle (pause delivery without deleting the channel), and a Send test button that fires a one-off notification — use it before binding the channel to a real rule.
Availability by plan
| Channel | Free | Starter | Pro | Business |
|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | |
| Webhook | ✓ | ✓ | ✓ | ✓ |
| Slack | ✓ | ✓ | ✓ | ✓ |
| Discord | ✓ | ✓ | ✓ | ✓ |
| Telegram | ✓ | ✓ | ✓ | ✓ |
| Pushover | ✓ | ✓ | ✓ | ✓ |
| Zapier | ✓ | ✓ | ✓ | ✓ |
| PagerDuty | — | — | ✓ | ✓ |
| Microsoft Teams | — | — | ✓ | ✓ |
| Google Chat | — | — | ✓ | ✓ |
| SMS (Twilio) | — | — | ✓ | ✓ |
| Splunk On-Call | — | — | — | ✓ |
| Mattermost | — | — | — | ✓ |
| Ntfy | Coming soon | |||
| OpsGenie | Coming soon |
The WebUI hides channel types your plan doesn’t include. Channel count is also capped per plan (5 / 10 / 20 / 50) — see Limits & quotas.
Available on all plans.
| Field | Required | Default | Notes |
|---|---|---|---|
recipients | yes | — | One or more email addresses. Each recipient gets their own copy with a personal unsubscribe link. |
subject_prefix | no | [PathWatch] | Prepended to every subject line (max 50 characters). |
Alert emails include the monitor, check status, duration, error message, region, and trigger time. Every email carries standards- compliant unsubscribe links — a recipient can opt out of one channel or all PathWatch alert email, and subsequent alerts skip them automatically. Test notifications always deliver so you can verify the configuration.
Webhook
Available on all plans. Sends the alert as JSON to any URL — the escape hatch for custom routing, n8n, or your own ingest.
| Field | Required | Default | Notes |
|---|---|---|---|
url | yes | — | Destination URL. |
method | no | POST | POST or PUT. |
headers | no | — | Extra headers sent with every request (string map). |
secret | no | — | If set, each request is signed with HMAC-SHA256 and the signature sent as X-PathWatch-Signature: sha256=<hex>. |
timeout_seconds | no | 10 | 5–30. Requests past the timeout count as failed deliveries. |
Requests are sent with Content-Type: application/json and a
User-Agent: PathWatch/1.0 header. For the exact body shape and
signature-verification examples, see the
webhook payload reference.
Slack
Available on all plans. Uses a Slack incoming webhook.
| Field | Required | Default | Notes |
|---|---|---|---|
webhook_url | yes | — | Slack incoming-webhook URL. |
channel | no | — | Override the webhook’s default channel. |
username | no | PathWatch | Display name for the posting bot. |
icon_emoji | no | :robot_face: | Emoji shown as the bot avatar. |
Discord
Available on all plans.
| Field | Required | Default | Notes |
|---|---|---|---|
webhook_url | yes | — | Discord channel webhook URL. |
username | no | PathWatch | Display name for the posting bot. |
Telegram
Available on all plans. Create a bot with @BotFather, add it to your chat or group, and use its token here.
| Field | Required | Default | Notes |
|---|---|---|---|
bot_token | yes | — | Telegram bot token. |
chat_id | yes | — | Target chat or group id. |
parse_mode | no | HTML | HTML or MarkdownV2 message formatting. |
disable_notification | no | false | true delivers silently (no sound on the recipient’s device). |
Pushover
Available on all plans. Mobile push via the Pushover app.
| Field | Required | Default | Notes |
|---|---|---|---|
api_token | yes | — | Pushover application token. |
user_key | yes | — | Your Pushover user (or group) key. |
device | no | — | Deliver to a single named device instead of all. |
priority | no | 0 | −2 (silent) to 2 (emergency, requires acknowledgement in Pushover). |
sound | no | pushover | Notification sound name. |
Zapier
Available on all plans. Convenience preset for a Zapier “Catch Hook” trigger — pipe alerts into thousands of downstream apps.
| Field | Required | Default | Notes |
|---|---|---|---|
webhook_url | yes | — | The Zapier webhook URL from your Zap’s trigger step. |
PagerDuty
Pro and above. Creates incidents via the PagerDuty Events API v2 — and resolves them automatically when the monitor recovers.
| Field | Required | Default | Notes |
|---|---|---|---|
routing_key | yes | — | Integration key from a PagerDuty Events API v2 integration. |
severity | no | error | critical, error, warning, or info. |
Microsoft Teams
Pro and above.
| Field | Required | Default | Notes |
|---|---|---|---|
webhook_url | yes | — | Teams incoming-webhook connector URL. |
Google Chat
Pro and above.
| Field | Required | Default | Notes |
|---|---|---|---|
webhook_url | yes | — | Google Chat space webhook URL. |
SMS (Twilio)
Pro and above. SMS is bring-your-own-Twilio: messages are sent through your Twilio account using your credentials, so message costs are billed by Twilio to you, at your Twilio rates.
| Field | Required | Default | Notes |
|---|---|---|---|
account_sid | yes | — | Twilio Account SID. |
auth_token | yes | — | Twilio Auth Token. |
from_number | yes | — | Twilio phone number to send from, in E.164 format (e.g. +14155550100). |
to_number | yes | — | Recipient phone number, E.164 format. |
One recipient per channel — create multiple SMS channels to page multiple phones.
Splunk On-Call
Business plan. Routes alerts into Splunk On-Call (formerly VictorOps) for on-call escalation.
| Field | Required | Default | Notes |
|---|---|---|---|
api_key | yes | — | REST API key from Splunk On-Call integration settings. |
routing_key | yes | — | Determines which Splunk On-Call escalation policy receives the alert. |
message_type | no | CRITICAL | CRITICAL, WARNING, or INFO. |
Mattermost
Business plan.
| Field | Required | Default | Notes |
|---|---|---|---|
webhook_url | yes | — | Mattermost incoming-webhook URL. |
channel | no | — | Override the webhook’s default channel. |
username | no | PathWatch | Display name for the posting bot. |
icon_url | no | — | URL of an avatar image for the posting bot. |
Coming soon
Ntfy (push via ntfy.sh or a self-hosted ntfy server) and OpsGenie (on-call routing) are planned but not yet available — they can’t be configured today.
Binding channels to monitors
Channels don’t decide which monitors they fire for. Bind them via Alerts → Rules: each alert rule specifies a scope, a condition, and a list of channels — each binding with an optional delay that turns the list into an escalation chain.
Tips
- Use one channel per logical destination — “Ops Slack #alerts”, not one “Slack” channel with logic bolted on. Slack-side routing belongs in Slack, not in PathWatch.
- For PagerDuty, create one service in PagerDuty per severity level so on-call schedules stay clean.
- Webhook is the escape hatch — anything that needs custom routing, custom payloads, or de-duplication should go through your own ingest rather than stretching the built-in channel types.