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

# Set up Slack, Discord, and Microsoft Teams alert channels

> Connect Overwatch to Slack, Discord, or Microsoft Teams using incoming webhooks so your team receives monitor status alerts where they already work.

Slack, Discord, and Microsoft Teams alerts all work through incoming webhook URLs. You generate a webhook URL in the destination service, then register it with Overwatch as an alert channel. When a monitor changes state, Overwatch sends a message to that URL and your team sees it immediately in the relevant channel or space.

<Tabs>
  <Tab title="Slack">
    ## Get a Slack webhook URL

    <Steps>
      <Step title="Create a Slack app">
        Go to [api.slack.com/apps](https://api.slack.com/apps) and click **Create New App**. Choose **From scratch**, give your app a name (e.g. "Overwatch"), and select the workspace you want to post to.
      </Step>

      <Step title="Enable incoming webhooks">
        In your app settings, click **Incoming Webhooks** in the left sidebar and toggle **Activate Incoming Webhooks** to on.
      </Step>

      <Step title="Add a webhook to your workspace">
        Scroll down and click **Add New Webhook to Workspace**. Choose the channel where alerts should appear and click **Allow**. Copy the webhook URL — it starts with `https://hooks.slack.com/services/`.
      </Step>
    </Steps>

    ## Create the alert channel

    ```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/XXXXXXXXXXXXXXXXXXXXXXXX"
        }
      }'
    ```

    ## Config fields

    <ParamField body="config.webhookUrl" type="string" required>
      The incoming webhook URL from your Slack app settings. Must start with `https://hooks.slack.com/services/`.
    </ParamField>
  </Tab>

  <Tab title="Discord">
    ## Get a Discord webhook URL

    <Steps>
      <Step title="Open channel settings">
        In your Discord server, right-click the text channel where you want alerts to appear and select **Edit Channel**.
      </Step>

      <Step title="Create a webhook">
        Click **Integrations** in the channel settings sidebar, then **Webhooks**, then **New Webhook**. Give it a name (e.g. "Overwatch") and optionally set a custom avatar.
      </Step>

      <Step title="Copy the webhook URL">
        Click **Copy Webhook URL**. The URL starts with `https://discord.com/api/webhooks/`.
      </Step>
    </Steps>

    ## Create the alert channel

    ```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": "Ops Discord",
        "type": "DISCORD",
        "config": {
          "webhookUrl": "https://discord.com/api/webhooks/1234567890/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        }
      }'
    ```

    ## Config fields

    <ParamField body="config.webhookUrl" type="string" required>
      The webhook URL from your Discord channel's integrations settings. Must start with `https://discord.com/api/webhooks/`.
    </ParamField>
  </Tab>

  <Tab title="Microsoft Teams">
    ## Get a Teams webhook URL

    <Steps>
      <Step title="Open the channel connector settings">
        In Microsoft Teams, navigate to the channel where you want alerts to appear. Click the **...** (More options) menu next to the channel name and select **Connectors**.
      </Step>

      <Step title="Configure the Incoming Webhook connector">
        Search for **Incoming Webhook** and click **Configure**. Give the connector a name (e.g. "Overwatch") and optionally upload an icon image.
      </Step>

      <Step title="Copy the webhook URL">
        Click **Create**. Teams displays the webhook URL — copy it before closing. The URL starts with `https://outlook.office.com/webhook/`.
      </Step>
    </Steps>

    ## Create the alert channel

    ```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": "Infra Teams",
        "type": "TEAMS",
        "config": {
          "webhookUrl": "https://outlook.office.com/webhook/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/IncomingWebhook/..."
        }
      }'
    ```

    ## Config fields

    <ParamField body="config.webhookUrl" type="string" required>
      The incoming webhook URL from your Teams channel connector settings. Must start with `https://outlook.office.com/webhook/`.
    </ParamField>
  </Tab>
</Tabs>

## Enabling and disabling a channel

You can pause a channel without deleting it by setting `enabled` to `false`. This prevents the channel from firing while keeping its configuration and monitor bindings intact.

```bash theme={null}
# Disable a channel
curl -X PATCH https://overwatchapp.dev/api/v1/alerts/<channel-id> \
  -H "Authorization: Bearer ow_live_sk_<secret>" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": false }'

# Re-enable a channel
curl -X PATCH https://overwatchapp.dev/api/v1/alerts/<channel-id> \
  -H "Authorization: Bearer ow_live_sk_<secret>" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": true }'
```

A successful response returns the updated channel object with the new `enabled` value.

<Tip>
  Disabling a channel is useful during scheduled maintenance windows when you want to silence notifications without removing the channel configuration.
</Tip>

## Coming soon

<Note>
  **PagerDuty** and **SMS** are not yet supported as alert channel types. They appear as "coming soon" in the integrations list and will be added in a future release. Check [overwatchapp.dev](https://overwatchapp.dev) for updates.
</Note>
