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

# Forward Datadog monitor alerts to Rootly via webhook

> Configure Datadog webhook contact points to forward monitor alerts to Rootly for on-call paging, automated incident creation, and bidirectional resolution.

## Overview

Once Datadog is connected to Rootly, you can forward monitor alerts to Rootly via a webhook. Alerts received in Rootly can be routed to a Slack channel, used to page on-call responders, or trigger incident workflows automatically.

<Callout icon="triangle-exclamation" color="#FEF3C7">
  Complete the [Installation](/integrations/datadog/installation) before configuring alerts. You must have Datadog connected to Rootly before webhooks will authenticate.
</Callout>

## Step 1: Set Up the Webhook in Datadog

<Steps>
  <Step title="Install the Webhooks integration">
    In Datadog, navigate to **Integrations**, search for **Webhooks**, and click **Install**.

    <Frame>
      <img src="https://mintcdn.com/rootly/7UqSlRjABCmNkM19/images/integrations/datadog/v2/install_webhooks_datadog.png?fit=max&auto=format&n=7UqSlRjABCmNkM19&q=85&s=eb7495444a6f92b127b5f759b6dbd251" alt="Installing the Webhooks integration in Datadog" width="2435" height="1557" data-path="images/integrations/datadog/v2/install_webhooks_datadog.png" />
    </Frame>
  </Step>

  <Step title="Create a new webhook">
    Switch to the **Configuration** tab and click **+ New** to add a webhook.

    <Frame>
      <img src="https://mintcdn.com/rootly/7UqSlRjABCmNkM19/images/integrations/datadog/v2/configure_and_add.png?fit=max&auto=format&n=7UqSlRjABCmNkM19&q=85&s=9f6fcc3da140aebf476c6883e8bed1cb" alt="Configuration tab in Datadog Webhooks showing the New button" width="2475" height="1640" data-path="images/integrations/datadog/v2/configure_and_add.png" />
    </Frame>
  </Step>

  <Step title="Configure the webhook">
    Fill in the following fields:

    **Name** — give the webhook a descriptive name (e.g., `Rootly_Alerts`)

    **URL** — enter:

    ```text theme={null}
    https://webhooks.rootly.com/webhooks/incoming/datadog_webhooks
    ```

    **Payload** — choose based on your use case:

    <Tabs>
      <Tab title="General Alert">
        Use this payload for standard alerts that appear in Rootly's Alerts page without paging anyone.

        ```json theme={null}
        {
          "id": "$ID",
          "body": "$EVENT_MSG",
          "last_updated": "$LAST_UPDATED",
          "event_type": "$EVENT_TYPE",
          "title": "$EVENT_TITLE",
          "alert_id": "$ALERT_ID",
          "alert_metric": "$ALERT_METRIC",
          "alert_priority": "$ALERT_PRIORITY",
          "alert_query": "$ALERT_QUERY",
          "alert_scope": "$ALERT_SCOPE",
          "alert_status": "$ALERT_STATUS",
          "alert_title": "$ALERT_TITLE",
          "alert_transition": "$ALERT_TRANSITION",
          "alert_type": "$ALERT_TYPE",
          "date": "$DATE",
          "org": {"id": "$ORG_ID", "name": "$ORG_NAME"}
        }
        ```
      </Tab>

      <Tab title="Page On-Call">
        Use this payload to page a specific user, team, escalation policy, or service when the alert fires. Replace `<TYPE>` and `<ID>` with your target resource.

        ```json theme={null}
        {
          "id": "$ID",
          "body": "$EVENT_MSG",
          "last_updated": "$LAST_UPDATED",
          "event_type": "composite_monitor",
          "title": "Datadog webhook alert",
          "alert_id": "$ALERT_ID",
          "alert_metric": "$ALERT_METRIC",
          "alert_priority": "$ALERT_PRIORITY",
          "alert_query": "$ALERT_QUERY",
          "alert_scope": "$ALERT_SCOPE",
          "alert_status": "$ALERT_STATUS",
          "alert_title": "$ALERT_TITLE",
          "alert_transition": "$ALERT_TRANSITION",
          "alert_type": "$ALERT_TYPE",
          "date": "$DATE",
          "org": {"id": "$ORG_ID", "name": "$ORG_NAME"},
          "rootly": {
            "notification_target": {
              "type": "<TYPE>",
              "id": "<ID>"
            }
          }
        }
        ```

        | Field  | Values                                                    |
        | ------ | --------------------------------------------------------- |
        | `type` | `User`, `Group`, `EscalationPolicy`, or `Service`         |
        | `id`   | The resource ID — found by editing the resource in Rootly |

        <Frame>
          <img src="https://mintcdn.com/rootly/7UqSlRjABCmNkM19/images/integrations/datadog/v2/id_of_paging_type.png?fit=max&auto=format&n=7UqSlRjABCmNkM19&q=85&s=85f2a8d97bbff07cb4edc9f95454326e" alt="Finding the ID of a Rootly resource" width="3000" height="1284" data-path="images/integrations/datadog/v2/id_of_paging_type.png" />
        </Frame>
      </Tab>
    </Tabs>

    <Callout icon="circle-info" color="#DBEAFE">
      The only difference between these payloads is the `notification_target` object. Including it tells Rootly who to page when the alert is received.
    </Callout>
  </Step>

  <Step title="Add the custom header">
    Check the **Custom Headers** box and add the following, replacing the value with your Rootly webhook secret:

    ```json theme={null}
    {
      "secret": "<YOUR_ROOTLY_WEBHOOK_SECRET>"
    }
    ```

    To find your secret:

    1. In Rootly, go to **Alerts → Sources → Datadog** and click **Configure**

    <Frame>
      <img src="https://mintcdn.com/rootly/7UqSlRjABCmNkM19/images/integrations/datadog/v2/configure_datadog_integration.png?fit=max&auto=format&n=7UqSlRjABCmNkM19&q=85&s=ca53d83ccc19d6f814d001c17d1b2e55" alt="Configure button on the Datadog alert source in Rootly" width="2999" height="1260" data-path="images/integrations/datadog/v2/configure_datadog_integration.png" />
    </Frame>

    2. Find the **Connection Instructions** panel on the right

    <Frame>
      <img src="https://mintcdn.com/rootly/7UqSlRjABCmNkM19/images/integrations/datadog/v2/connection_instructions.png?fit=max&auto=format&n=7UqSlRjABCmNkM19&q=85&s=1ac3692c359746305c202713eea1bcf6" alt="Connection Instructions panel showing the webhook URL and secret" width="2876" height="836" data-path="images/integrations/datadog/v2/connection_instructions.png" />
    </Frame>

    3. Copy the **secret** value from the Custom Headers section

    <Frame>
      <img src="https://mintcdn.com/rootly/7UqSlRjABCmNkM19/images/integrations/datadog/v2/custom_headers.png?fit=max&auto=format&n=7UqSlRjABCmNkM19&q=85&s=55b5d2437e923576228211ab572db68f" alt="Custom Headers section showing the secret to copy" width="1456" height="1699" data-path="images/integrations/datadog/v2/custom_headers.png" />
    </Frame>
  </Step>

  <Step title="Save the webhook">
    Click **Save**.
  </Step>
</Steps>

## Step 2: Attach the Webhook to a Monitor

<Steps>
  <Step title="Open a monitor">
    In Datadog, navigate to **Monitors → New Monitor** and choose a monitor type, or open an existing monitor to edit it.
  </Step>

  <Step title="Add the webhook to notifications">
    In the **Configure notifications and automations** section, reference your webhook using `@webhook-<WEBHOOK_NAME>` syntax (e.g., `@webhook-Rootly_Alerts`).
  </Step>

  <Step title="Test and save">
    Click **Test Notifications** to confirm the alert reaches Rootly, then save the monitor.

    <Frame>
      <img src="https://mintcdn.com/rootly/7UqSlRjABCmNkM19/images/integrations/datadog/v2/datadog_monitor_alert.png?fit=max&auto=format&n=7UqSlRjABCmNkM19&q=85&s=54ab6ce29487ebd8352181ef246e154d" alt="Datadog monitor notification configuration with webhook" width="2681" height="1829" data-path="images/integrations/datadog/v2/datadog_monitor_alert.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/rootly/7UqSlRjABCmNkM19/images/integrations/datadog/v2/success_test.png?fit=max&auto=format&n=7UqSlRjABCmNkM19&q=85&s=dc29076f87bf9f0356c0561b24168310" alt="Successful test notification in Datadog" width="1061" height="1078" data-path="images/integrations/datadog/v2/success_test.png" />
    </Frame>

    Verify the alert appeared on the [Alerts page](https://rootly.com/account/alerts) in Rootly.
  </Step>
</Steps>

## Step 3: Build Alert Workflows in Rootly

With alerts flowing into Rootly, create a workflow that reacts to them. Alert workflows let you check alert fields, apply conditions, and trigger automated actions like creating an incident or notifying responders.

<Steps>
  <Step title="Open Workflows">
    Navigate to **Workflows** in Rootly and click **Create Workflow**.

    <Frame>
      ![Create Workflow button in Rootly's Workflows page](https://ik.imagekit.io/scdd/Create-workflow.png)
    </Frame>
  </Step>

  <Step title="Choose Alert workflow type">
    Select **Alert** as the workflow type. This workflow triggers whenever Rootly receives an alert from Datadog.

    <Frame>
      ![Selecting Alert as the workflow type in Rootly](https://ik.imagekit.io/scdd/triggered-by-alerts.png)
    </Frame>
  </Step>

  <Step title="Set the trigger">
    Select **Alert Created** to fire on new alerts, or **Alert Status Updated** to react when an existing alert changes.

    <Callout icon="circle-info" color="#DBEAFE">
      Available triggers: **Alert Created** fires when a new alert is received. **Alert Status Updated** fires when an existing alert changes state.
    </Callout>
  </Step>

  <Step title="Add conditions">
    Filter which alerts should trigger this workflow. Common patterns:

    <Tabs>
      <Tab title="Match by source">
        Add a condition where **Source is Datadog** to scope the workflow to Datadog alerts only.
      </Tab>

      <Tab title="Match by payload">
        Use payload field conditions to filter further — for example:

        * `alert_priority` equals `P1`
        * `alert_title` contains `CRITICAL`
        * `alert_transition` equals `Triggered`
      </Tab>
    </Tabs>

    <Callout icon="circle-info" color="#DBEAFE">
      Use Datadog payload fields like `alert_priority`, `alert_status`, `alert_type`, and `alert_title` to build precise conditions.
    </Callout>
  </Step>

  <Step title="Add actions">
    Add one or more actions to execute when the workflow fires:

    | Action                  | Use case                                       |
    | ----------------------- | ---------------------------------------------- |
    | **Create Incident**     | Auto-create an incident from the alert         |
    | **Page Rootly On-Call** | Page the responsible team or escalation policy |
    | **Send Slack Message**  | Notify a channel about the alert               |
    | **Send SMS or Email**   | Alert responders directly                      |

    <Callout icon="circle-info" color="#DBEAFE">
      You can chain multiple actions for a complete response process — for example, create an incident and then send a Slack message in the same workflow.
    </Callout>
  </Step>

  <Step title="Save the workflow">
    Name the workflow (e.g., `Create Incident from Datadog P1 Alert`) and click **Create Workflow**.

    <Frame>
      ![Save and create the alert workflow in Rootly](https://ik.imagekit.io/scdd/create-sentry-workflow.png)
    </Frame>
  </Step>
</Steps>

## Verify the Workflow

After saving the workflow:

1. Return to Datadog and trigger a test alert from your monitor by clicking **Test Notifications**
2. Confirm the workflow activates in Rootly and performs the expected actions
3. View the run log under **Workflows → History** in Rootly

<Callout icon="circle-check" color="#DCFCE7">
  You have successfully built a Datadog alert workflow in Rootly!
</Callout>

## Frequently Asked Questions

<AccordionGroup>
  <Accordion title="Alerts are not appearing in Rootly" icon="circle-exclamation">
    Verify the webhook URL is exactly `https://webhooks.rootly.com/webhooks/incoming/datadog_webhooks`. Confirm the Custom Headers `secret` value matches what is shown in **Alerts → Sources → Datadog → Configure** in Rootly. Check that the Datadog integration is still connected under **Configuration → Integrations**.
  </Accordion>

  <Accordion title="How do I find the ID for the notification_target?" icon="magnifying-glass">
    Open the resource (User, Team, Escalation Policy, or Service) in Rootly and click **Edit**. The resource ID appears in the URL or in the edit form. Copy it and paste it into the `id` field of the paging payload.
  </Accordion>

  <Accordion title="Can I send alerts from multiple Datadog monitors to Rootly?" icon="layer-group">
    Yes. Create one webhook and attach it to as many monitors as needed by adding `@webhook-<WEBHOOK_NAME>` to each monitor's notification body. Each alert will appear separately in Rootly's Alerts page.
  </Accordion>

  <Accordion title="What alert workflow triggers are available?" icon="bolt">
    Alert workflows in Rootly support **Alert Created** (fires on new alerts) and **Alert Status Updated** (fires when an existing alert changes). Use conditions to filter by source (Datadog), payload fields like `alert_priority` or `alert_title`, or alert status.
  </Accordion>

  <Accordion title="Why aren't my WARNING alerts paging me?" icon="shield-exclamation">
    By default, Rootly only pages for CRITICAL alerts from Datadog. WARNING vs. CRITICAL is the monitor's `alert_status` field in the webhook payload — not `alert_priority` (which is your monitor's P1–P5 importance and is independent of state). To extend paging to WARNING alerts, either configure your monitor to fire on the threshold you want treated as paging-eligible, or build an alert workflow that matches `alert_status` equals `Warn` (or `Warning`, depending on the value Datadog sends) and routes to the same target as CRITICAL.
  </Accordion>
</AccordionGroup>
