Skip to main content
Alert channels are the destinations Overwatch notifies whenever a monitor changes state. A channel fires once per status transition — for example, when a monitor goes from up to down, or when a TLS certificate moves to expiring_soon — so you get a signal at the moment something changes, not on every check run. You create channels independently of monitors, then attach one or more channels to each monitor you want covered.

Supported channel types

TypeDescription
SlackPost to a Slack channel via an incoming webhook URL.
DiscordPost to a Discord channel via a Discord webhook URL.
TeamsPost to a Microsoft Teams channel via a connector webhook URL.
EmailDeliver an alert email to any address.
WebhookSend an HTTP POST to any endpoint you control. Supports an optional HMAC secret for request verification.
PagerDuty and SMS are not yet supported. They are listed as coming soon on the integrations page.

Set up guides

Slack, Discord, and Teams

Configure webhook-based channels for Slack, Discord, and Microsoft Teams.

Email and webhook

Send alerts to an email address or any HTTP endpoint you control.

Plan limits

The number of alert channels you can create depends on your plan.
PlanAlert channels
Starter1
Pro5
EnterpriseUnlimited
If you reach your plan’s limit, the API returns a 422 response with "upgrade": true. Upgrade your plan under Settings → Plan to add more channels.

Creating an alert channel

Send a POST request to /api/v1/alerts with a name, type, and config object.
curl -X POST https://overwatchapp.dev/api/v1/alerts \
  -H "Authorization: Bearer ow_live_sk_<secret>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Engineering Slack",
    "type": "SLACK",
    "config": {
      "webhookUrl": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXX"
    }
  }'
A successful response returns 201 with the created channel object:
{
  "data": {
    "id": "3b6e1f2a-...",
    "name": "Engineering Slack",
    "type": "SLACK",
    "config": { "webhookUrl": "https://hooks.slack.com/services/..." },
    "enabled": true,
    "createdAt": "2026-04-15T10:00:00.000Z",
    "updatedAt": "2026-04-15T10:00:00.000Z"
  }
}

Request body fields

name
string
required
A human-readable label for the channel, shown in the dashboard and API responses.
type
string
required
One of SLACK, DISCORD, TEAMS, EMAIL, or WEBHOOK.
config
object
required
Channel-specific configuration. The required keys vary by type — see the Slack, Discord & Teams guide and the Email & webhook guide for the exact shape.
enabled
boolean
default:"true"
Whether the channel is active. Set to false to create a channel without it firing.

Binding a channel to a monitor

Pass an alertChannelIds array when creating or updating a monitor. Every ID in the array must belong to a channel in your organization.
curl -X POST https://overwatchapp.dev/api/v1/monitors \
  -H "Authorization: Bearer ow_live_sk_<secret>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "api.example.com health",
    "type": "HTTP",
    "config": { "url": "https://api.example.com/health" },
    "alertChannelIds": ["3b6e1f2a-...", "7d9c3e4b-..."]
  }'
To update the channels attached to an existing monitor, use PATCH /api/v1/monitors/:id with the same alertChannelIds field. The update replaces the full list of bindings.
You can bind multiple channels to a single monitor — for example, Slack for immediate team visibility and a webhook to trigger a PagerDuty-style workflow.

Setting organization-level default channels

If you want every new monitor to automatically include a set of alert channels, configure them under Settings → Organization → Default Channels. Any channel IDs you add there are applied to new monitors created through the dashboard or via API, unless you explicitly pass a different alertChannelIds value.

Listing alert channels

GET /api/v1/alerts returns all channels for your organization, including their monitor bindings.
curl https://overwatchapp.dev/api/v1/alerts \
  -H "Authorization: Bearer ow_live_sk_<secret>"
{
  "data": [
    {
      "id": "3b6e1f2a-...",
      "name": "Engineering Slack",
      "type": "SLACK",
      "config": { "webhookUrl": "https://hooks.slack.com/..." },
      "enabled": true,
      "createdAt": "2026-04-15T10:00:00.000Z",
      "updatedAt": "2026-04-15T10:00:00.000Z",
      "bindings": [{ "monitorId": "9a1b2c3d-..." }]
    }
  ]
}
To retrieve a single channel, use GET /api/v1/alerts/:id.

Deleting an alert channel

curl -X DELETE https://overwatchapp.dev/api/v1/alerts/<channel-id> \
  -H "Authorization: Bearer ow_live_sk_<secret>"
Deleting a channel removes all its monitor bindings automatically. Monitors that relied solely on the deleted channel will have no alert destination until you attach a new one.
Deletion is permanent. There is no soft-delete or recovery. Make sure no critical monitors depend exclusively on the channel before you delete it.