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

# Datadog

> Connect Datadog to Rootly to ingest monitor alerts and capture notebooks, graphs and dashboards during incidents.

## Overview

Rootly's Datadog integration connects your monitoring stack to your incident response process. When a Datadog monitor fires, Rootly can receive the alert, route it to the right team, and automatically kick off an incident — all without manual intervention. During incidents, Rootly workflows can also pull Datadog notebooks, graph snapshots, and dashboards directly into the incident record.

## Features

<CardGroup cols={2}>
  <Card title="Alert Ingestion" icon="bell">
    Receive Datadog monitor alerts in Rootly via webhooks and route them to on-call or incident workflows.
  </Card>

  <Card title="On-Call Paging" icon="phone">
    Page a specific user, team, escalation policy, or service directly from a Datadog alert payload.
  </Card>

  <Card title="Notebook Automation" icon="book-open">
    Create Datadog notebooks automatically from Rootly workflow actions during incidents.
  </Card>

  <Card title="Snapshot & Dashboard Retrieval" icon="camera">
    Pull Datadog graph snapshots and dashboards into incident records via workflow actions.
  </Card>
</CardGroup>

## Before You Begin

<Warning>
  Rootly recommends performing the installation with a **service account** to ensure the integration does not break if the installing user leaves the company. Ensure you are logged in as an **Admin** in Rootly.
</Warning>

You will need three pieces of information from Datadog:

* **Host** — your Datadog account's API hostname
* **API Key** — authenticates Rootly with your Datadog organization
* **Application Key** — grants Rootly permission to read dashboards

### Plan Requirements

* Datadog account with Admin access
* Rootly account with Owner or Admin role

## Installation

<Steps>
  <Step title="Open Rootly Integrations">
    Navigate to **Configuration → Integrations** in Rootly, search for **Datadog**, and click **Setup**.

    <Frame>
      <img src="https://mintcdn.com/rootly/7UqSlRjABCmNkM19/images/integrations/datadog/v2/datadog_integration.png?fit=max&auto=format&n=7UqSlRjABCmNkM19&q=85&s=f9f4cf0767ea463748368134396d5b71" alt="Datadog integration card in Rootly's integrations catalog" width="2840" height="1527" data-path="images/integrations/datadog/v2/datadog_integration.png" />
    </Frame>
  </Step>

  <Step title="Create an API Key in Datadog">
    In Datadog, navigate to **Organization Settings → API Keys** and click **+ New Key**.

    <Frame>
      <img src="https://mintcdn.com/rootly/7UqSlRjABCmNkM19/images/integrations/datadog/v2/api_key_add.png?fit=max&auto=format&n=7UqSlRjABCmNkM19&q=85&s=52b27fa509615362690ffbaae787b8f4" alt="Creating a new API key in Datadog organization settings" width="2698" height="1110" data-path="images/integrations/datadog/v2/api_key_add.png" />
    </Frame>

    Name the key (for example, `Rootly Integration`) and click **Create Key**. Copy the key immediately.

    <Warning>
      The API key value is only shown once at creation. Copy it before closing the dialog — not the Key ID.
    </Warning>
  </Step>

  <Step title="Create an Application Key in Datadog">
    In Datadog, navigate to **Personal Settings → Security → Application Keys** and click **+ New Key**.

    <Frame>
      <img src="https://mintcdn.com/rootly/7UqSlRjABCmNkM19/images/integrations/datadog/v2/application_key.png?fit=max&auto=format&n=7UqSlRjABCmNkM19&q=85&s=16f7d576a3709209e554d03d5dd3d6d0" alt="Creating a new application key in Datadog personal settings" width="2986" height="794" data-path="images/integrations/datadog/v2/application_key.png" />
    </Frame>

    Name the key (for example, `Rootly Integration`), then edit its scope to include **Read** permission for **Dashboards**.

    <Frame>
      <img src="https://mintcdn.com/rootly/7UqSlRjABCmNkM19/images/integrations/datadog/v2/add_scope.png?fit=max&auto=format&n=7UqSlRjABCmNkM19&q=85&s=c1064b946ec67ca3ec61684264469d2a" alt="Adding dashboard read scope to the Datadog application key" width="1060" height="846" data-path="images/integrations/datadog/v2/add_scope.png" />
    </Frame>

    Copy the application key.

    <Info>
      Rootly only requires `dashboard_read` scope. You can add more permissions if needed for other integrations, but this is the minimum required.
    </Info>
  </Step>

  <Step title="Enter credentials in Rootly">
    Back in the Rootly setup form, enter:

    * **Host** — your Datadog API hostname. Common values:

      | Region        | Host                    |
      | ------------- | ----------------------- |
      | US1 (default) | `api.datadoghq.com`     |
      | US3           | `api.us3.datadoghq.com` |
      | US5           | `api.us5.datadoghq.com` |
      | EU            | `api.eu.datadoghq.com`  |
      | Gov           | `api.ddog-gov.com`      |

    * **API Key** — paste the API key you created

    * **Application Key** — paste the application key you created

    Click **Connect**.

    <Frame>
      <img src="https://mintcdn.com/rootly/7UqSlRjABCmNkM19/images/integrations/datadog/v2/connect_datadog.png?fit=max&auto=format&n=7UqSlRjABCmNkM19&q=85&s=afc242de044fc6f1a1580bde59914bf9" alt="Datadog integration configuration form in Rootly" width="1787" height="982" data-path="images/integrations/datadog/v2/connect_datadog.png" />
    </Frame>
  </Step>

  <Step title="Confirm connection">
    Datadog will appear as **Connected** in your integrations list.

    <Frame>
      <img src="https://mintcdn.com/rootly/7UqSlRjABCmNkM19/images/integrations/datadog/v2/datadog_is_connected.png?fit=max&auto=format&n=7UqSlRjABCmNkM19&q=85&s=86b7724fab6537996fa073974eb29d0f" alt="Datadog showing as connected in Rootly's integrations list" width="2304" height="1382" data-path="images/integrations/datadog/v2/datadog_is_connected.png" />
    </Frame>
  </Step>
</Steps>

## Ingest Datadog Alerts

Once Datadog is connected, 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.

### 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 (for example, `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>

    <Info>
      The only difference between these payloads is the `notification_target` object. Including it tells Rootly who to page when the alert is received.
    </Info>
  </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 (for example, `@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.

    <Info>
      Available triggers: **Alert Created** fires when a new alert is received. **Alert Status Updated** fires when an existing alert changes state.
    </Info>
  </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>

    <Info>
      Use Datadog payload fields like `alert_priority`, `alert_status`, `alert_type`, and `alert_title` to build precise conditions.
    </Info>
  </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                      |

    <Info>
      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.
    </Info>
  </Step>

  <Step title="Save the workflow">
    Name the workflow (for example, `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

<Check>
  You have successfully built a Datadog alert workflow in Rootly!
</Check>

## Workflow Actions

| Action                         | Description                                                                                  |
| ------------------------------ | -------------------------------------------------------------------------------------------- |
| **Create Datadog Notebook**    | Creates a new notebook in your Datadog account, optionally pre-populated with incident data  |
| **Get Datadog Graph Snapshot** | Retrieves a point-in-time snapshot of a Datadog metric graph and attaches it to the incident |
| **Get Datadog Dashboard**      | Fetches a Datadog dashboard URL and surfaces it in the incident timeline                     |

### Create Datadog Notebook

Use this action to automatically create a Datadog notebook when an incident starts or reaches a specific status. Notebooks are useful for capturing investigation notes, timelines, and graphs in a single Datadog-native view.

<Steps>
  <Step title="Open workflow creation">
    Navigate to **Workflows** in Rootly and click **Create Workflow**, or open an existing workflow to edit it.
  </Step>

  <Step title="Add the action">
    Click **Add Action**, search for **Datadog**, and select **Create Datadog Notebook**.
  </Step>

  <Step title="Configure the action">
    | Field             | Required | Description                                                                                                                                                     |
    | ----------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | **Name**          | No       | A label for this action step. Does not affect behavior.                                                                                                         |
    | **Notebook Name** | Yes      | The title of the notebook. Supports Liquid syntax — use the [Liquid Variable Explorer](https://rootly.com/account/help/liquid-explorer) to build dynamic names. |
  </Step>

  <Step title="Save the workflow">
    Click **Add**, name the workflow, and click **Create Workflow**.
  </Step>
</Steps>

### Get Datadog Graph Snapshot

Use this action to capture a point-in-time graph from Datadog and attach it to the incident. This is useful for preserving the state of a metric at the time an incident was declared or escalated.

<Steps>
  <Step title="Add the action">
    In your workflow, click **Add Action**, search for **Datadog**, and select **Get Datadog Graph Snapshot**.
  </Step>

  <Step title="Configure the action">
    | Field            | Required | Description                                                                                             |
    | ---------------- | -------- | ------------------------------------------------------------------------------------------------------- |
    | **Metric Query** | Yes      | The Datadog metric query to snapshot — for example `avg:system.cpu.user` with an optional scope filter. |
    | **Start**        | No       | Snapshot start time in Unix epoch seconds. Supports Liquid syntax.                                      |
    | **End**          | No       | Snapshot end time in Unix epoch seconds. Defaults to the current time if blank.                         |
  </Step>
</Steps>

### Get Datadog Dashboard

Use this action to retrieve a Datadog dashboard and surface its URL in the incident timeline. This gives responders quick access to the relevant monitoring view without leaving Rootly.

<Steps>
  <Step title="Add the action">
    In your workflow, click **Add Action**, search for **Datadog**, and select **Get Datadog Dashboard**.
  </Step>

  <Step title="Configure the action">
    | Field            | Required | Description                                                                                        |
    | ---------------- | -------- | -------------------------------------------------------------------------------------------------- |
    | **Dashboard ID** | Yes      | The ID of the Datadog dashboard to fetch. Found in the dashboard URL (for example, `abc-123-xyz`). |
  </Step>
</Steps>

### Alert Workflow Patterns

In addition to incident workflow actions, you can build **Alert workflows** in Rootly that trigger automatically when a Datadog alert arrives. These are separate from incident workflows and configured under **Workflows → Alert**.

Common patterns:

* **Auto-create an incident** when a SEV-1 Datadog alert fires
* **Page on-call** for alerts with `alert_priority` of `P1` or `P2`
* **Send a Slack message** to a channel when a monitor transitions to `ALERT`
* **Resolve the alert** automatically when Datadog sends a `RECOVERY` transition

To scope workflows to Datadog only, add a condition where **Source is Datadog**, or filter on payload fields like `alert_priority`, `alert_title`, or `alert_transition`.

## Uninstall

To remove the Datadog integration:

1. Go to **Configuration → Integrations** and find **Datadog**
2. Click the **Connected** button to reveal the disconnect option
3. Click **Delete**

<Frame>
  <img src="https://mintcdn.com/rootly/QMD-dNqeYW4BA9dg/images/integrations/common/uninstall-connected.png?fit=max&auto=format&n=QMD-dNqeYW4BA9dg&q=85&s=dbb790e2576c8969bba96bc26c95265f" alt="Click the Connected button to reveal the Disconnect option" width="319" height="188" data-path="images/integrations/common/uninstall-connected.png" />
</Frame>

## Frequently Asked Questions

<AccordionGroup>
  <Accordion title="Alerts are not appearing in Rootly" icon="bell">
    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="gauge">
    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="arrow-up-right-from-square">
    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>

### Workflow Questions

<AccordionGroup>
  <Accordion title="The Create Notebook action ran but no notebook appeared in Datadog" icon="gauge">
    Check the workflow run log in Rootly for error details. Confirm the Datadog Application Key has sufficient permissions and that the integration is still connected under **Configuration → Integrations**.
  </Accordion>

  <Accordion title="Can I chain Datadog actions with other workflow steps?" icon="bolt">
    Yes. Datadog actions can be combined with any other Rootly workflow actions in the same workflow — for example, create a Datadog notebook and then send a Slack message with the notebook link.
  </Accordion>

  <Accordion title="What Liquid variables can I use in notebook names or metric queries?" icon="heading">
    Any incident Liquid variable is supported. Use the [Liquid Variable Explorer](https://rootly.com/account/help/liquid-explorer) to browse available variables and preview their values.
  </Accordion>
</AccordionGroup>

## Related Resources

* [Alert workflows](/workflows/alert-workflows)
* [Alert routing](/alerts/alert-routing)
* [Integrations overview](/integrations/overview)
