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

# Alerts

> Configure Grafana webhook contact points to send alert events into Rootly for general alert ingestion and on-call paging workflows across dashboards.

## Introduction

Grafana can send alert events into Rootly as alerts using a webhook contact point. Once alerts are flowing into Rootly, you can use alert workflows to create incidents, notify Slack channels, or page on-call targets.

With Grafana alerts in Rootly, you can:

* Receive Grafana alert events as Rootly alerts
* Route alerts to services, teams, or escalation policies
* Page Rootly on-call targets directly from Grafana alert rules
* Use alert workflows to automate incident creation and follow-up actions

## Before You Begin

Before configuring alert ingestion, make sure you have:

* The Grafana integration already installed in Rootly — see the [Installation](/integrations/grafana/grafana) page
* Access to configure contact points and alert rules in Grafana

<Callout icon="triangle-exclamation" color="#FEF3C7">
  You must install the Grafana integration in Rootly before configuring webhook contact points. The webhook secret is generated during installation and is required for authentication.
</Callout>

## Configure a Webhook Contact Point in Grafana

<Steps>
  <Step title="Navigate to Contact Points in Grafana" icon="bell">
    Log into your Grafana instance and navigate to **Alerting > Contact points**.

    <Frame>
      <img alt="Grafana contact points page" src="https://mintcdn.com/rootly/DEGWl8qg20zbzmSF/images/integrations/grafana/alerts/images-1.webp?fit=max&auto=format&n=DEGWl8qg20zbzmSF&q=85&s=8a6a17ad887b9ee25a6e24984420edb6" width="902" height="719" data-path="images/integrations/grafana/alerts/images-1.webp" />
    </Frame>

    Select **+ Add contact point**.

    <Frame>
      <img alt="Add contact point button" src="https://mintcdn.com/rootly/DEGWl8qg20zbzmSF/images/integrations/grafana/alerts/images-2.webp?fit=max&auto=format&n=DEGWl8qg20zbzmSF&q=85&s=4d63befcdfe4368dd1c760ba2edeb999" width="871" height="237" data-path="images/integrations/grafana/alerts/images-2.webp" />
    </Frame>
  </Step>

  <Step title="Configure the contact point" icon="webhook">
    Fill in the contact point details:

    * **Name** — give the contact point a descriptive name
    * **Integration** — select **Webhook**
    * **HTTP Method** — select **POST**

    <Frame>
      <img alt="Contact point configuration form" src="https://mintcdn.com/rootly/DEGWl8qg20zbzmSF/images/integrations/grafana/alerts/images-3.webp?fit=max&auto=format&n=DEGWl8qg20zbzmSF&q=85&s=ae3154408514b09af94a9b8fa7cf2954" width="888" height="950" data-path="images/integrations/grafana/alerts/images-3.webp" />
    </Frame>
  </Step>

  <Step title="Set the webhook URL" icon="link">
    The URL format depends on whether you want a general alert or want to page an on-call target.

    **For a general alert** (appears in Rootly Alerts, does not page anyone):

    ```
    https://webhooks.rootly.com/webhooks/incoming/grafana_webhooks/?secret=<your-secret>
    ```

    <Frame>
      <img alt="General alert webhook URL" src="https://mintcdn.com/rootly/DEGWl8qg20zbzmSF/images/integrations/grafana/alerts/images-4.webp?fit=max&auto=format&n=DEGWl8qg20zbzmSF&q=85&s=9f6875700febed17f753b293e49bb5de" width="884" height="661" data-path="images/integrations/grafana/alerts/images-4.webp" />
    </Frame>

    **To page a Rootly on-call target**, append a notification target to the URL:

    ```
    https://webhooks.rootly.com/webhooks/incoming/grafana_webhooks/notify/<resource_type>/<resource_id>?secret=<your-secret>
    ```

    <Callout icon="info" color="#DBEAFE">
      Supported resource types are `User`, `Group` (team), `EscalationPolicy`, and `Service`. The resource ID can be found by editing the resource in Rootly.
    </Callout>

    <Frame>
      <img alt="On-call paging webhook URL" src="https://mintcdn.com/rootly/DEGWl8qg20zbzmSF/images/integrations/grafana/alerts/images-5.webp?fit=max&auto=format&n=DEGWl8qg20zbzmSF&q=85&s=ca721176a3e34742e98a65a0df644f2b" width="896" height="1079" data-path="images/integrations/grafana/alerts/images-5.webp" />
    </Frame>

    Your webhook URL and secret are available in Rootly under **Integrations > Grafana > Configure**.
  </Step>

  <Step title="Test and save the contact point" icon="circle-check">
    Select **Test** to send a test alert to Rootly. A test alert should appear on your [Rootly Alerts page](https://rootly.com/account/alerts).

    <Frame>
      <img alt="Test alert result in Rootly" src="https://mintcdn.com/rootly/DEGWl8qg20zbzmSF/images/integrations/grafana/alerts/images-6.webp?fit=max&auto=format&n=DEGWl8qg20zbzmSF&q=85&s=def850922e3ceb6a1b3abc8ac9850c48" width="901" height="316" data-path="images/integrations/grafana/alerts/images-6.webp" />
    </Frame>

    Once the test succeeds, select **Save contact point**.
  </Step>
</Steps>

## Attach the Contact Point to Alert Rules

A contact point only receives alerts when it is attached to an active alert rule.

Navigate to **Alerting > Alert rules** and select **+ New alert rule**, or edit an existing rule. In the rule configuration, set the **Contact point** to the one you just created.

<Frame>
  <img alt="Attaching contact point to an alert rule" src="https://mintcdn.com/rootly/DEGWl8qg20zbzmSF/images/integrations/grafana/alerts/images-7.webp?fit=max&auto=format&n=DEGWl8qg20zbzmSF&q=85&s=2d61c0e762b31a126dde68acd2f547d8" width="899" height="723" data-path="images/integrations/grafana/alerts/images-7.webp" />
</Frame>

<Callout icon="lightbulb" color="#DBEAFE">
  You can attach the same Rootly contact point to multiple alert rules. Use different contact point URLs (with different notification targets) to route different rules to different on-call targets.
</Callout>

<Frame>
  <img alt="Alert rule with contact point configured" src="https://mintcdn.com/rootly/DEGWl8qg20zbzmSF/images/integrations/grafana/alerts/images-8.webp?fit=max&auto=format&n=DEGWl8qg20zbzmSF&q=85&s=ecb356c84576765ed6811e2b8f48f92c" width="905" height="1510" data-path="images/integrations/grafana/alerts/images-8.webp" />
</Frame>

## How Alerts Are Mapped

Rootly extracts the following fields from each Grafana webhook payload:

* **Summary** — the `title` field from the Grafana alert payload
* **External ID** — the `ruleId`, used to deduplicate alerts from the same rule
* **External URL** — the `ruleUrl`, linking back to the Grafana alert rule
* **Labels** — all key-value pairs from `commonLabels` are attached as Rootly alert labels, making them available for routing and filtering

<Callout icon="tag" color="#DBEAFE">
  Grafana `commonLabels` map directly to Rootly alert labels. You can use these labels in alert routing rules and workflow conditions to control how different Grafana alerts are handled.
</Callout>

## Troubleshooting

<AccordionGroup>
  <Accordion title="No alerts are appearing in Rootly after a Grafana alert fires" icon="circle-exclamation">
    Confirm the contact point is correctly attached to the alert rule that fired. Verify the webhook URL is correct and the secret matches what is shown in your Rootly Grafana integration settings. Use the **Test** button in the contact point configuration to confirm delivery.
  </Accordion>

  <Accordion title="The test alert works but real alerts do not appear" icon="triangle-exclamation">
    Check that the alert rule is in a firing state and that the contact point is set as the notification destination for that rule. Grafana alert rules that use notification policies rather than direct contact point assignment may route differently than expected.
  </Accordion>

  <Accordion title="On-call paging is not triggering" icon="bell-slash">
    Verify that the `resource_type` and `resource_id` in the notification target URL are correct and that the resource exists in Rootly. Ensure the resource type is one of `User`, `Group`, `EscalationPolicy`, or `Service`.
  </Accordion>
</AccordionGroup>
