# Webhook Alerts

EMQX Broker supports Webhook-based alert integrations, allowing you to forward alert events to third-party incident management (IM) tools or to your own services.

You can verify whether a Webhook is correctly configured by using the **Test** function to send a sample alert.

Currently, EMQX supports the following Webhook integrations:

- Slack
- Zenduty
- FlashDuty
- Generic Webhook (custom services)

## Send Alerts to Slack

1. Create an **Incoming Webhook** in Slack and obtain the Webhook URL. For details, see [Sending messages using Incoming Webhooks](https://api.slack.com/messaging/webhooks).
2. Go to your deployment in the EMQX Console. Navigate to **Alerts** -> **Alert Integrations**, click **+ New** under **Webhook integration**.
3. In the **Add Webhook** dialog:
   - Enter a **Name** for the integration.
   - Select **Slack** as the **Type**.
   - Paste the Slack Webhook URL into the **URL** field.
4. Click **Confirm** to complete the configuration.
5. To verify the configuration, click **Test** to send a default alert message to Slack.

## Send Alerts to Zenduty

Zenduty is an incident management and on-call platform. EMQX can send alerts directly to Zenduty using a dedicated Webhook integration type.

1. Create a service in Zenduty and obtain the Webhook URL.

   In Zenduty, alerts are always associated with a service. Log in to the Zenduty Console, create a new service for EMQX, and enable a Webhook integration for that service to generate a Webhook URL.

   For more information, see: [Add a new Service in Zenduty](https://zenduty.com/docs/services/).

2. Go to your deployment in the EMQX Console. Navigate to **Alerts** -> **Alert Integrations**, and click **+ New** under **Webhook integration**.

3. In the **Add Webhook** dialog:

   - Enter a **Name** for the integration.
   - Select **Zenduty** as the **Type**.
   - Paste the Zenduty Webhook URL into the **URL** field.

4. Click **Confirm** to save the configuration.

5. Use the **Test** button to send a test alert and verify that the incident is successfully created in Zenduty.

## Send Alerts to FlashDuty

FlashDuty is an incident response and on-call management platform. EMQX provides a built-in FlashDuty Webhook type for easy integration.

1. In **FlashDuty**, create an alert integration and copy the generated **Webhook URL**. For more information, see [FlashDuty On-call Quickstart](https://docs.flashcat.cloud/en/on-call/quickstart/quickstart).
2. Go to your deployment in the EMQX Console. Navigate to **Alerts** -> **Alert Integrations**, then click **+ New** under **Webhook integration**.
3. In the **Add Webhook** dialog:
   - Enter a **Name** for the integration.
   - Select **FlashDuty** as the **Type**.
   - Paste the FlashDuty Webhook URL into the **URL** field.
4. Click **Confirm** to complete the setup.
5. Click **Test** to send a sample alert and confirm that FlashDuty receives and processes it correctly.

Once FlashDuty receives an alert, it displays the following 4 labels in the **Labels** section of the alert details:

| Label | Description |
| --- | --- |
| `deployment_id` | The EMQX deployment ID that triggered the alert |
| `level` | The alert level of the EMQX deployment |
| `message` | The alert message content |
| `region` | The region where the deployment is located |

FlashDuty alert severity is automatically mapped from the EMQX alert level as follows:

| EMQX Alert Level | FlashDuty Alert Level |
| --- | --- |
| Critical | Critical |
| Error / Warning | Warning |
| Info | Info |

<img src="./_assets/flashduty_warning.png" alt="flashduty_warning" style="zoom:67%;" />

## Send an Alert to a Custom Service (Generic Webhook)

You can also forward alerts to your own service using a **Generic Webhook**.

1. Prepare a service endpoint that can receive and process HTTP Webhook requests.
2. In the EMQX Console, go to **Alerts** -> **Alert Integrations**, click **+ New** under **Webhook integration**, and select **Generic Webhook**.
3. In the **Add Webhook** dialog:
   - Enter a **Name**.
   - Provide the Webhook URL of your service.
   - (Optional) Add custom **Headers** as key–value pairs if required by your service.
4. Click **Confirm** to save the configuration.
5. Use the **Test** function to send a default alert and verify that your service receives it successfully.