> ## Documentation Index
> Fetch the complete documentation index at: https://docs.overwatchapp.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Alert channels: get notified when your monitors change

> Alert channels define where Overwatch sends notifications. Connect Slack, Discord, Teams, email, or a webhook and bind channels to any monitor you run.

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

| Type        | Description                                                                                               |
| ----------- | --------------------------------------------------------------------------------------------------------- |
| **Slack**   | Post to a Slack channel via an incoming webhook URL.                                                      |
| **Discord** | Post to a Discord channel via a Discord webhook URL.                                                      |
| **Teams**   | Post to a Microsoft Teams channel via a connector webhook URL.                                            |
| **Email**   | Deliver an alert email to any address.                                                                    |
| **Webhook** | Send an HTTP POST to any endpoint you control. Supports an optional HMAC secret for request verification. |

<Note>
  PagerDuty and SMS are not yet supported. They are listed as coming soon on the integrations page.
</Note>

## Set up guides

<CardGroup cols={2}>
  <Card title="Slack, Discord, and Teams" icon="bell" href="/alerts/slack-discord-teams">
    Configure webhook-based channels for Slack, Discord, and Microsoft Teams.
  </Card>

  <Card title="Email and webhook" icon="webhook" href="/alerts/email-webhook">
    Send alerts to an email address or any HTTP endpoint you control.
  </Card>
</CardGroup>

## Plan limits

The number of alert channels you can create depends on your plan.

| Plan       | Alert channels |
| ---------- | -------------- |
| Starter    | 1              |
| Pro        | 5              |
| Enterprise | Unlimited      |

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.

```bash theme={null}
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:

```json theme={null}
{
  "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

<ParamField body="name" type="string" required>
  A human-readable label for the channel, shown in the dashboard and API responses.
</ParamField>

<ParamField body="type" type="string" required>
  One of `SLACK`, `DISCORD`, `TEAMS`, `EMAIL`, or `WEBHOOK`.
</ParamField>

<ParamField body="config" type="object" required>
  Channel-specific configuration. The required keys vary by type — see the [Slack, Discord & Teams guide](/alerts/slack-discord-teams) and the [Email & webhook guide](/alerts/email-webhook) for the exact shape.
</ParamField>

<ParamField body="enabled" type="boolean" default="true">
  Whether the channel is active. Set to `false` to create a channel without it firing.
</ParamField>

## 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.

```bash theme={null}
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.

<Tip>
  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.
</Tip>

## 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.

```bash theme={null}
curl https://overwatchapp.dev/api/v1/alerts \
  -H "Authorization: Bearer ow_live_sk_<secret>"
```

```json theme={null}
{
  "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

```bash theme={null}
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.

<Warning>
  Deletion is permanent. There is no soft-delete or recovery. Make sure no critical monitors depend exclusively on the channel before you delete it.
</Warning>
