<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Integration references on Grafana Labs</title><link>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/</link><description>Recent content in Integration references on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/oncall/v1.68.x/configure/integrations/references/index.xml" rel="self" type="application/rss+xml"/><item><title>Alertmanager integration for Grafana OnCall</title><link>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/alertmanager/</link><pubDate>Fri, 03 Apr 2026 16:45:36 +0000</pubDate><guid>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/alertmanager/</guid><content><![CDATA[&lt;h1 id=&#34;alertmanager-integration-for-grafana-oncall&#34;&gt;Alertmanager integration for Grafana OnCall&lt;/h1&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;⚠️ &lt;strong&gt;Legacy&lt;/strong&gt; integration ⚠️ Integrations that were created before version 1.3.21 (1 August 2023) were marked as &lt;strong&gt;(Legacy)&lt;/strong&gt; and migrated.
These integrations are receiving and escalating alerts, but some manual adjustments may be required.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;The Alertmanager integration handles alerts from &lt;a href=&#34;https://prometheus.io/docs/alerting/latest/alertmanager/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Prometheus Alertmanager&lt;/a&gt;.
This integration is the recommended way to send alerts from Prometheus deployed in your infrastructure, to Grafana OnCall.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; Create one integration per team, and configure alertmanager labels selector to send alerts only related to that team&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;configuring-grafana-oncall-to-receive-alerts-from-prometheus-alertmanager&#34;&gt;Configuring Grafana OnCall to Receive Alerts from Prometheus Alertmanager&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;strong&gt;Integrations&lt;/strong&gt; tab, click &lt;strong&gt;&#43; New integration&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Alertmanager Prometheus&lt;/strong&gt; from the list of available integrations.&lt;/li&gt;
&lt;li&gt;Enter a name and description for the integration, click &lt;strong&gt;Create&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;A new page will open with the integration details. Copy the &lt;strong&gt;OnCall Integration URL&lt;/strong&gt; from &lt;strong&gt;HTTP Endpoint&lt;/strong&gt; section.
You will need it when configuring Alertmanager.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;configuring-alertmanager-to-send-alerts-to-grafana-oncall&#34;&gt;Configuring Alertmanager to Send Alerts to Grafana OnCall&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Add a new &lt;a href=&#34;https://prometheus.io/docs/alerting/latest/configuration/#webhook_config&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Webhook&lt;/a&gt; receiver to &lt;code&gt;receivers&lt;/code&gt;
section of your Alertmanager configuration&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;url&lt;/code&gt; to the &lt;strong&gt;OnCall Integration URL&lt;/strong&gt; from previous section
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Note:&lt;/strong&gt; The url has a trailing slash that is required for it to work properly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;send_resolved&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt;, so Grafana OnCall can autoresolve alert groups when they are resolved in Alertmanager&lt;/li&gt;
&lt;li&gt;It is recommended to set &lt;code&gt;max_alerts&lt;/code&gt; to less than &lt;code&gt;100&lt;/code&gt; to avoid requests that are too large.&lt;/li&gt;
&lt;li&gt;Use this receiver in your route configuration&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here is the example of final configuration:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;route:
  receiver: &amp;#34;oncall&amp;#34;
  group_by: [alertname, datacenter, app]

receivers:
  - name: &amp;#34;oncall&amp;#34;
    webhook_configs:
      - url: &amp;lt;integration-url&amp;gt;
        send_resolved: true
        max_alerts: 100&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;complete-the-integration-configuration&#34;&gt;Complete the Integration Configuration&lt;/h2&gt;
&lt;p&gt;Complete configuration by setting routes, templates, maintenances, etc. Read more in

    &lt;a href=&#34;/docs/oncall/v1.68.x/configure/integrations/integration-management/#customize-the-integration&#34;&gt;this section&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;note-about-grouping-and-autoresolution&#34;&gt;Note about grouping and autoresolution&lt;/h2&gt;
&lt;p&gt;Grafana OnCall relies on the Alertmanager grouping and autoresolution mechanism to
ensure consistency between alert state in OnCall and AlertManager.
It&amp;rsquo;s recommended to configure &lt;a href=&#34;https://prometheus.io/docs/alerting/latest/alertmanager/#grouping&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;grouping&lt;/a&gt; on the Alertmanager side and use default grouping
and autoresolution templates on the OnCall side. Changing this templates might lead to incorrect
grouping and autoresolution behavior. This is unlikely to be what you want, unless you have disabled
grouping on the AlertManager side.&lt;/p&gt;
&lt;h2 id=&#34;configuring-oncall-heartbeats-optional&#34;&gt;Configuring OnCall Heartbeats (optional)&lt;/h2&gt;
&lt;p&gt;An OnCall heartbeat acts as a monitoring for monitoring systems. If your monitoring is down and stop sending alerts,
Grafana OnCall will notify you about that.&lt;/p&gt;
&lt;h3 id=&#34;configuring-grafana-oncall-heartbeat&#34;&gt;Configuring Grafana OnCall Heartbeat&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Integration Page&lt;/strong&gt;, click on three dots on top right, click &lt;strong&gt;Heartbeat settings&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Copy &lt;strong&gt;OnCall Heartbeat URL&lt;/strong&gt;, you will need it when configuring Alertmanager&lt;/li&gt;
&lt;li&gt;Set up &lt;strong&gt;Heartbeat Interval&lt;/strong&gt;, time period after which Grafana OnCall will start a new alert group if it
doesn&amp;rsquo;t receive a heartbeat request&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;configuring-alertmanager-to-send-heartbeats-to-grafana-oncall-heartbeat&#34;&gt;Configuring Alertmanager to send heartbeats to Grafana OnCall Heartbeat&lt;/h3&gt;
&lt;p&gt;You can configure Alertmanager to regularly send alerts to the heartbeat endpoint. Add &lt;code&gt;vector(1)&lt;/code&gt; as a heartbeat
generator to &lt;code&gt;prometheus.yaml&lt;/code&gt;. It will always return true and act like always firing alert, which will be sent to
Grafana OnCall once in a given period of time:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;groups:
  - name: meta
    rules:
      - alert: heartbeat
        expr: vector(1)
        labels:
          severity: none
        annotations:
          description: This is a heartbeat alert for Grafana OnCall
          summary: Heartbeat for Grafana OnCall&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Add receiver configuration to &lt;code&gt;prometheus.yaml&lt;/code&gt; with the &lt;strong&gt;OnCall Heartbeat URL&lt;/strong&gt;:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;  ...
  route:
  ...
      routes:
        - match:
          alertname: heartbeat
        receiver: &amp;#39;grafana-oncall-heartbeat&amp;#39;
        group_wait: 0s
        group_interval: 1m
        repeat_interval: 50s
  receivers:
    - name: &amp;#39;grafana-oncall-heartbeat&amp;#39;
    webhook_configs:
      - url: https://oncall-dev-us-central-0.grafana.net/oncall/integrations/v1/alertmanager/1234567890/heartbeat/
        send_resolved: false&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;note-about-legacy-integration&#34;&gt;Note about legacy integration&lt;/h2&gt;
&lt;p&gt;Legacy integration was using each alert from AlertManager group as a separate payload:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;labels&amp;#34;: {
    &amp;#34;severity&amp;#34;: &amp;#34;critical&amp;#34;,
    &amp;#34;alertname&amp;#34;: &amp;#34;InstanceDown&amp;#34;
  },
  &amp;#34;annotations&amp;#34;: {
    &amp;#34;title&amp;#34;: &amp;#34;Instance localhost:8081 down&amp;#34;,
    &amp;#34;description&amp;#34;: &amp;#34;Node has been down for more than 1 minute&amp;#34;
  },
  ...
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This behaviour was leading to mismatch in alert state between OnCall and AlertManager and draining of rate-limits,
since each AlertManager alert was counted separately.&lt;/p&gt;
&lt;p&gt;We decided to change this behaviour to respect AlertManager grouping by using AlertManager group as one payload.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;alerts&amp;#34;: [...],
  &amp;#34;groupLabels&amp;#34;: {
    &amp;#34;alertname&amp;#34;: &amp;#34;InstanceDown&amp;#34;
  },
  &amp;#34;commonLabels&amp;#34;: {
    &amp;#34;job&amp;#34;: &amp;#34;node&amp;#34;, 
    &amp;#34;alertname&amp;#34;: &amp;#34;InstanceDown&amp;#34;
  },
  &amp;#34;commonAnnotations&amp;#34;: {
    &amp;#34;description&amp;#34;: &amp;#34;Node has been down for more than 1 minute&amp;#34;
  },
  &amp;#34;groupKey&amp;#34;: &amp;#34;{}:{alertname=\&amp;#34;InstanceDown\&amp;#34;}&amp;#34;,
  ...
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You can read more about AlertManager Data model &lt;a href=&#34;https://prometheus.io/docs/alerting/latest/notifications/#data&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;after-migration-checklist&#34;&gt;After-migration checklist&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Integration URL will stay the same, so no need to change AlertManager or Grafana Alerting configuration.
Integration templates will be reset to suit new payload.
It is needed to adjust routes and outgoing webhooks manually to new payload.&lt;/p&gt;&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Send a new demo alert to the migrated integration.&lt;/li&gt;
&lt;li&gt;Adjust routes to the new shape of payload. You can use payload of the demo alert from previous step as an example.&lt;/li&gt;
&lt;li&gt;If outgoing webhooks utilized the alerts payload from the migrated integration in the 
    &lt;a href=&#34;/docs/oncall/v1.68.x/configure/integrations/outgoing-webhooks/#using-trigger-template-field&#34;&gt;trigger&lt;/a&gt;
or 
    &lt;a href=&#34;/docs/oncall/v1.68.x/configure/integrations/outgoing-webhooks/#outgoing-webhook-templates&#34;&gt;data&lt;/a&gt; template it&amp;rsquo;s needed to adjust them as well.&lt;/li&gt;
&lt;/ol&gt;
&lt;img width=&#34;1646&#34; alt=&#34;Screenshot 2023-12-14 at 1 14 21 PM&#34; src=&#34;https://github.com/grafana/oncall/assets/85312870/7e281416-edbc-4384-8d15-7efaec2de311&#34;&gt;
&lt;img width=&#34;1644&#34; alt=&#34;Screenshot 2023-12-14 at 1 14 32 PM&#34; src=&#34;https://github.com/grafana/oncall/assets/85312870/b62cfa1d-2ff6-4b46-9cec-459b14cd1996&#34;&gt;
]]></content><description>&lt;h1 id="alertmanager-integration-for-grafana-oncall">Alertmanager integration for Grafana OnCall&lt;/h1>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>⚠️ &lt;strong>Legacy&lt;/strong> integration ⚠️ Integrations that were created before version 1.3.21 (1 August 2023) were marked as &lt;strong>(Legacy)&lt;/strong> and migrated.
These integrations are receiving and escalating alerts, but some manual adjustments may be required.&lt;/p></description></item><item><title>Elastalert integration for Grafana OnCall</title><link>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/elastalert/</link><pubDate>Fri, 03 Apr 2026 16:45:36 +0000</pubDate><guid>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/elastalert/</guid><content><![CDATA[&lt;h1 id=&#34;elastalert-integration-for-grafana-oncall&#34;&gt;ElastAlert integration for Grafana OnCall&lt;/h1&gt;
&lt;p&gt;The ElastAlert integration for Grafana OnCall handles ticket events sent from ElastAlert webhooks.
The integration provides grouping, auto-acknowledge and auto-resolve logic via customizable alert templates.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You must have the 
    &lt;a href=&#34;/docs/oncall/v1.68.x/manage/user-and-team-management/&#34;&gt;role of Admin&lt;/a&gt; to be able to create integrations in Grafana OnCall.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;configuring-grafana-oncall-to-receive-alerts-from-elastalert&#34;&gt;Configuring Grafana OnCall to Receive Alerts from ElastAlert&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;strong&gt;Integrations&lt;/strong&gt; tab, click &lt;strong&gt;&#43; New integration&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;ElastAlert&lt;/strong&gt; from the list of available integrations.&lt;/li&gt;
&lt;li&gt;Enter a name and description for the integration, click &lt;strong&gt;Create&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;A new page will open with the integration details. Copy the &lt;strong&gt;OnCall Integration URL&lt;/strong&gt; from &lt;strong&gt;HTTP Endpoint&lt;/strong&gt; section.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;configuring-elastalert-to-send-alerts-to-grafana-oncall&#34;&gt;Configuring ElastAlert to Send Alerts to Grafana OnCall&lt;/h2&gt;
&lt;p&gt;To send an alert from ElastAlert to a webhook, follow these steps:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Refer to &lt;a href=&#34;https://elastalert.readthedocs.io/en/latest/ruletypes.html#http-post&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;ElastAlert http-post docs&lt;/a&gt; for more details&lt;/p&gt;&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Open your ElastAlert configuration file (e.g., &lt;code&gt;config.yaml&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Locate the &lt;code&gt;alert&lt;/code&gt; section.&lt;/li&gt;
&lt;li&gt;Add the following configuration for the webhook alert:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;alert: post
http_post_url: &amp;#34;http://example.com/api&amp;#34;
http_post_static_payload:
  title: abc123&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Replace &lt;code&gt;&amp;quot;abc123&amp;quot;&lt;/code&gt; with a suitable name for your alert, and &lt;code&gt;&amp;quot;http://example.com/api&amp;quot;&lt;/code&gt; with &lt;strong&gt;OnCall Integration URL&lt;/strong&gt;.
4. Save the configuration file.&lt;/p&gt;
&lt;p&gt;After configuring the webhook, ElastAlert will send alerts to the specified endpoint when triggered.
Make sure your webhook endpoint is configured to receive and process the incoming alerts.&lt;/p&gt;
&lt;h2 id=&#34;grouping-auto-acknowledge-and-auto-resolve&#34;&gt;Grouping, auto-acknowledge and auto-resolve&lt;/h2&gt;
&lt;p&gt;Grafana OnCall provides grouping, auto-acknowledge and auto-resolve logic for the ElastAlert integration:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alerts created from ticket events are grouped by ticket ID&lt;/li&gt;
&lt;li&gt;Alert groups are auto-acknowledged when the ticket status is set to &amp;ldquo;Pending&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Alert groups are auto-resolved when the ticket status is set to &amp;ldquo;Solved&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To customize this behaviour, consider modifying alert templates in integration settings.&lt;/p&gt;
&lt;h3 id=&#34;configuring-elastalert-to-send-heartbeats-to-grafana-oncall-heartbeat&#34;&gt;Configuring Elastalert to send heartbeats to Grafana OnCall Heartbeat&lt;/h3&gt;
&lt;p&gt;Add the following rule to ElastAlert&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;    index: elastalert_status
    type: any
    alert: post
    http_post_url: {{ heartbeat_url }}
    realert:
        minutes: 1
    alert_text: elastalert is still running
    alert_text_type: alert_text_only&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="elastalert-integration-for-grafana-oncall">ElastAlert integration for Grafana OnCall&lt;/h1>
&lt;p>The ElastAlert integration for Grafana OnCall handles ticket events sent from ElastAlert webhooks.
The integration provides grouping, auto-acknowledge and auto-resolve logic via customizable alert templates.&lt;/p></description></item><item><title>Grafana Alerting integration for Grafana OnCall</title><link>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/grafana-alerting/</link><pubDate>Fri, 03 Apr 2026 16:45:36 +0000</pubDate><guid>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/grafana-alerting/</guid><content><![CDATA[&lt;h1 id=&#34;grafana-alerting-integration-for-grafana-oncall&#34;&gt;Grafana Alerting integration for Grafana OnCall&lt;/h1&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;⚠️ &lt;strong&gt;Legacy&lt;/strong&gt; integration ⚠️
Integrations that were created before version 1.3.21 were marked as &lt;strong&gt;(Legacy)&lt;/strong&gt; and recently migrated.
These integrations are receiving and escalating alerts, but some manual adjustments might be required.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Grafana Alerting for Grafana OnCall can be set up using two methods:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grafana OnCall is connected to the same Grafana instance being used to manage Grafana OnCall.&lt;/li&gt;
&lt;li&gt;Grafana OnCall is connected to one or more Grafana instances, separate from the one being used to manage Grafana OnCall.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-grafana-alerting-in-same-grafana-instance&#34;&gt;Configure Grafana Alerting in same Grafana instance&lt;/h2&gt;
&lt;p&gt;Use the following method if you are connecting Grafana OnCall with alerts coming from the same Grafana instance from
which Grafana OnCall is being managed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In Grafana OnCall, navigate to the &lt;strong&gt;Integrations&lt;/strong&gt; tab and select &lt;strong&gt;New Integration to receive alerts&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;Quick connect&lt;/strong&gt; in the &lt;strong&gt;Grafana Alerting&lt;/strong&gt; tile. This will open a &lt;strong&gt;New Grafana Alerting integration&lt;/strong&gt; configuration window.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the opened window, enter a name and description for the integration and choose existing or create a new contact point.
This contact point will send alerts to the created integration.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; You must connect the contact point with a notification policy in Grafana Alerting to receive alerts in Grafana OnCall.
For more information, see
&lt;a href=&#34;/docs/grafana/latest/alerting/unified-alerting/contact-points/&#34;&gt;Contact points in Grafana Alerting&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Determine the escalation chain for the new integration by either selecting an existing one or by creating a new
escalation chain.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In Grafana Alerting, navigate to &lt;strong&gt;Alerting &amp;gt; Contact Points&lt;/strong&gt; and find a contact point with a name matching
the integration you created in Grafana OnCall.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click the &lt;strong&gt;Edit&lt;/strong&gt; (pencil) icon, then click &lt;strong&gt;Test&lt;/strong&gt;. This will send a test alert to Grafana OnCall.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;configure-external-grafana-alerting-from-other-grafana-instance&#34;&gt;Configure external Grafana Alerting from other Grafana Instance&lt;/h2&gt;
&lt;p&gt;Connect Grafana OnCall with alerts coming from a Grafana instance that is different from the instance that Grafana
OnCall is being managed:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In Grafana OnCall, navigate to the &lt;strong&gt;Integrations&lt;/strong&gt; tab and select &lt;strong&gt;New Integration to receive alerts&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select the &lt;strong&gt;Alertmanager&lt;/strong&gt; tile.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enter a name and description for the integration, click Create&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A new page will open with the integration details. Copy the OnCall Integration URL from HTTP Endpoint section.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Go to the other Grafana instance to connect to Grafana OnCall and navigate to &lt;strong&gt;Alerting &amp;gt; Contact Points&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select &lt;strong&gt;New Contact Point&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Choose the contact point type &lt;code&gt;webhook&lt;/code&gt;, then paste the URL generated in step 3 into the URL field.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; You must connect the contact point with a notification policy in Grafana Alerting to receive alerts in Grafana OnCall.
For more information, see
&lt;a href=&#34;/docs/grafana/latest/alerting/unified-alerting/contact-points/&#34;&gt;Contact points in Grafana Alerting&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click the &lt;strong&gt;Edit&lt;/strong&gt; (pencil) icon, then click &lt;strong&gt;Test&lt;/strong&gt;. This will send a test alert to Grafana OnCall.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;note-about-grouping-and-autoresolution&#34;&gt;Note about grouping and autoresolution&lt;/h2&gt;
&lt;p&gt;Grafana OnCall relies on the Grafana Alerting grouping and autoresolution mechanism to ensure consistency between alert state in OnCall and AlertManager.
It&amp;rsquo;s recommended to configure &lt;a href=&#34;/docs/grafana/latest/alerting/fundamentals/notification-policies/notifications/#grouping&#34;&gt;grouping&lt;/a&gt; on
the Grafana Alerting side and use default grouping and autoresolution templates on the OnCall side.
Changing this templates might lead to incorrect grouping and autoresolution behavior.&lt;/p&gt;
&lt;h2 id=&#34;note-about-legacy-integration&#34;&gt;Note about legacy integration&lt;/h2&gt;
&lt;p&gt;Before we were using each alert from Grafana Alerting group as a separate payload:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;labels&amp;#34;: {
    &amp;#34;severity&amp;#34;: &amp;#34;critical&amp;#34;,
    &amp;#34;alertname&amp;#34;: &amp;#34;InstanceDown&amp;#34;
  },
  &amp;#34;annotations&amp;#34;: {
    &amp;#34;title&amp;#34;: &amp;#34;Instance localhost:8081 down&amp;#34;,
    &amp;#34;description&amp;#34;: &amp;#34;Node has been down for more than 1 minute&amp;#34;
  },
  ...
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This behaviour was leading to mismatch in alert state between OnCall and Grafana Alerting and draining of rate-limits,
since each Grafana Alerting alert was counted separately.&lt;/p&gt;
&lt;p&gt;We decided to change this behaviour to respect Grafana Alerting grouping by using AlertManager group as one payload.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;alerts&amp;#34;: [...],
  &amp;#34;groupLabels&amp;#34;: {
    &amp;#34;alertname&amp;#34;: &amp;#34;InstanceDown&amp;#34;
  },
  &amp;#34;commonLabels&amp;#34;: {
    &amp;#34;job&amp;#34;: &amp;#34;node&amp;#34;, 
    &amp;#34;alertname&amp;#34;: &amp;#34;InstanceDown&amp;#34;
  },
  &amp;#34;commonAnnotations&amp;#34;: {
    &amp;#34;description&amp;#34;: &amp;#34;Node has been down for more than 1 minute&amp;#34;
  },
  &amp;#34;groupKey&amp;#34;: &amp;#34;{}:{alertname=\&amp;#34;InstanceDown\&amp;#34;}&amp;#34;,
  ...
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You can read more about AlertManager Data model &lt;a href=&#34;https://prometheus.io/docs/alerting/latest/notifications/#data&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;after-migration-checklist&#34;&gt;After-migration checklist&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Integration URL will stay the same, so no need to change AlertManager or Grafana Alerting configuration.
Integration templates will be reset to suit new payload.
It is needed to adjust routes and outgoing webhooks manually to new payload.&lt;/p&gt;&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Send a new demo alert to the migrated integration.&lt;/li&gt;
&lt;li&gt;Adjust routes to the new shape of payload. You can use payload of the demo alert from previous step as an example.&lt;/li&gt;
&lt;li&gt;If outgoing webhooks utilized the alerts payload from the migrated integration in the 
    &lt;a href=&#34;/docs/oncall/v1.68.x/configure/integrations/outgoing-webhooks/&#34;&gt;trigger&lt;/a&gt;
or 
    &lt;a href=&#34;/docs/oncall/v1.68.x/configure/integrations/outgoing-webhooks/&#34;&gt;data&lt;/a&gt; template it&amp;rsquo;s needed to adjust them as well.&lt;/li&gt;
&lt;/ol&gt;
]]></content><description>&lt;h1 id="grafana-alerting-integration-for-grafana-oncall">Grafana Alerting integration for Grafana OnCall&lt;/h1>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>⚠️ &lt;strong>Legacy&lt;/strong> integration ⚠️
Integrations that were created before version 1.3.21 were marked as &lt;strong>(Legacy)&lt;/strong> and recently migrated.
These integrations are receiving and escalating alerts, but some manual adjustments might be required.&lt;/p></description></item><item><title>Inbound email integration for Grafana OnCall</title><link>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/inbound-email/</link><pubDate>Fri, 03 Apr 2026 16:45:36 +0000</pubDate><guid>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/inbound-email/</guid><content><![CDATA[&lt;h1 id=&#34;inbound-email-integration-for-grafana-oncall&#34;&gt;Inbound Email integration for Grafana OnCall&lt;/h1&gt;
&lt;p&gt;Inbound Email integration will consume emails from dedicated email address and make alert groups from them.&lt;/p&gt;
&lt;h2 id=&#34;configure-required-environment-variables&#34;&gt;Configure required environment variables&lt;/h2&gt;
&lt;p&gt;Refer to [Inbound Email Setup] for details.&lt;/p&gt;
&lt;h2 id=&#34;configure-inbound-email-integration-for-grafana-oncall&#34;&gt;Configure Inbound Email integration for Grafana OnCall&lt;/h2&gt;
&lt;p&gt;You must have an Admin role to create integrations in Grafana OnCall.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;strong&gt;Integrations&lt;/strong&gt; tab, click &lt;strong&gt;&#43; New integration to receive alerts&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Inbound Email&lt;/strong&gt; from the list of available integrations.&lt;/li&gt;
&lt;li&gt;Get your dedicated email address in the &lt;strong&gt;Integration email&lt;/strong&gt; section and use it to send your emails.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;grouping-and-auto-resolve&#34;&gt;Grouping and auto-resolve&lt;/h2&gt;
&lt;p&gt;Alert groups will be grouped by email subject and auto-resolved if the email message text equals &amp;ldquo;OK&amp;rdquo;.
This behaviour can be modified via 
    &lt;a href=&#34;/docs/oncall/v1.68.x/configure/jinja2-templating/&#34;&gt;custom templates&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Alerts from Inbound Email integration have the following payload:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
   &amp;#34;subject&amp;#34;: &amp;#34;&amp;lt;your_email_subject&amp;gt;&amp;#34;,
   &amp;#34;message&amp;#34;: &amp;#34;&amp;lt;your_email_message&amp;gt;&amp;#34;,
   &amp;#34;sender&amp;#34;: &amp;#34;&amp;lt;your_email_sender_address&amp;gt;&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="inbound-email-integration-for-grafana-oncall">Inbound Email integration for Grafana OnCall&lt;/h1>
&lt;p>Inbound Email integration will consume emails from dedicated email address and make alert groups from them.&lt;/p>
&lt;h2 id="configure-required-environment-variables">Configure required environment variables&lt;/h2>
&lt;p>Refer to [Inbound Email Setup] for details.&lt;/p></description></item><item><title>Inbound Webhook for Grafana OnCall</title><link>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/webhook/</link><pubDate>Fri, 03 Apr 2026 16:45:36 +0000</pubDate><guid>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/webhook/</guid><content><![CDATA[&lt;h1 id=&#34;inbound-webhook-integrations-for-grafana-oncall&#34;&gt;Inbound Webhook integrations for Grafana OnCall&lt;/h1&gt;
&lt;p&gt;Grafana OnCall directly supports many integrations, those that aren’t currently listed in the Integrations menu can be
connected using the webhook integration and configured alert templates.&lt;/p&gt;
&lt;p&gt;With the webhook integration, you can connect to any alert source that isn&amp;rsquo;t listed in the &lt;strong&gt;Create Integration&lt;/strong&gt; page.&lt;/p&gt;
&lt;p&gt;There are two available formats, &lt;strong&gt;Webhook&lt;/strong&gt; and &lt;strong&gt;Formatted Webhook&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Webhook&lt;/strong&gt; will pull all of the raw JSON payload and display it in the manner that it&amp;rsquo;s received.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Formatted Webhook&lt;/strong&gt; can be used if the alert payload sent by your monitoring service is formatted in a way that
OnCall recognizes.&lt;/p&gt;
&lt;p&gt;The following fields are recognized, but none are required:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;alert_uid&lt;/code&gt;: a unique alert ID for grouping.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;title&lt;/code&gt;: a title.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;image_url&lt;/code&gt;: a URL for an image attached to alert.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;state&lt;/code&gt;: either &lt;code&gt;ok&lt;/code&gt; or &lt;code&gt;alerting&lt;/code&gt;. Helpful for auto-resolving.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;link_to_upstream_details&lt;/code&gt;: link back to your monitoring system.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;message&lt;/code&gt;: alert details.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To configure a webhook integration:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;strong&gt;Integrations&lt;/strong&gt; tab, click &lt;strong&gt;&#43; New integration to receive alerts&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select either &lt;strong&gt;Webhook&lt;/strong&gt; or &lt;strong&gt;Formatted Webhook&lt;/strong&gt; integration.&lt;/li&gt;
&lt;li&gt;Follow the configuration steps in the &lt;strong&gt;How to connect&lt;/strong&gt; section of the integration settings.&lt;/li&gt;
&lt;li&gt;Use the unique webhook URL to complete any configuration in your monitoring service to send POST requests. Use any
http client, e.g. curl to send POST requests with any payload.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;curl -X POST \
https://a-prod-us-central-0.grafana.net/integrations/v1/formatted_webhook/m12xmIjOcgwH74UF8CN4dk0Dh/ \
-H &amp;#39;Content-Type: Application/json&amp;#39; \
-d &amp;#39;{
    &amp;#34;alert_uid&amp;#34;: &amp;#34;08d6891a-835c-e661-39fa-96b6a9e26552&amp;#34;,
    &amp;#34;title&amp;#34;: &amp;#34;The whole system is down&amp;#34;,
    &amp;#34;image_url&amp;#34;: &amp;#34;https://upload.wikimedia.org/wikipedia/commons/e/ee/Grumpy_Cat_by_Gage_Skidmore.jpg&amp;#34;,
    &amp;#34;state&amp;#34;: &amp;#34;alerting&amp;#34;,
    &amp;#34;link_to_upstream_details&amp;#34;: &amp;#34;https://en.wikipedia.org/wiki/Downtime&amp;#34;,
    &amp;#34;message&amp;#34;: &amp;#34;Smth happened. Oh no!&amp;#34;
}&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;To learn how to use custom alert templates for formatted webhooks, see

    &lt;a href=&#34;/docs/oncall/v1.68.x/configure/jinja2-templating/&#34;&gt;Configure alerts templates&lt;/a&gt;.&lt;/p&gt;
]]></content><description>&lt;h1 id="inbound-webhook-integrations-for-grafana-oncall">Inbound Webhook integrations for Grafana OnCall&lt;/h1>
&lt;p>Grafana OnCall directly supports many integrations, those that aren’t currently listed in the Integrations menu can be
connected using the webhook integration and configured alert templates.&lt;/p></description></item><item><title>Kapacitor integration for Grafana OnCall</title><link>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/kapacitor/</link><pubDate>Fri, 03 Apr 2026 16:45:36 +0000</pubDate><guid>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/kapacitor/</guid><content><![CDATA[&lt;h1 id=&#34;kapacitor-integration-for-grafana-oncall&#34;&gt;Kapacitor integration for Grafana OnCall&lt;/h1&gt;
&lt;p&gt;The Kapacitor integration for Grafana OnCall handles ticket events sent from Kapacitor webhooks.
The integration provides grouping, auto-acknowledge and auto-resolve logic via customizable alert templates.&lt;/p&gt;
&lt;h2 id=&#34;configuring-grafana-oncall-to-receive-alerts-from-kapacitor&#34;&gt;Configuring Grafana OnCall to Receive Alerts from Kapacitor&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;strong&gt;Integrations&lt;/strong&gt; tab, click &lt;strong&gt;&#43; New integration&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Kapacitor&lt;/strong&gt; from the list of available integrations.&lt;/li&gt;
&lt;li&gt;Enter a name and description for the integration, click &lt;strong&gt;Create&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;A new page will open with the integration details. Copy the &lt;strong&gt;OnCall Integration URL&lt;/strong&gt; from &lt;strong&gt;HTTP Endpoint&lt;/strong&gt; section.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;configuring-kapacitor-to-send-alerts-to-grafana-oncall&#34;&gt;Configuring Kapacitor to Send Alerts to Grafana OnCall&lt;/h2&gt;
&lt;p&gt;To send an alert from Kapacitor, you can follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a Kapacitor TICKscript or modify an existing one to define the conditions for triggering the alert.
The TICKscript specifies the data source, data processing, and the alert rule. Here&amp;rsquo;s an example of a simple TICKscript:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;tickscript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-tickscript&#34;&gt;stream
    |from()
        .measurement(&amp;#39;measurement_name&amp;#39;)
        .where(lambda: &amp;lt;condition&amp;gt;)
    |alert()
        .webhook(&amp;#39;&amp;lt;webhook_url&amp;gt;&amp;#39;)&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Replace &lt;code&gt;&#39;measurement_name&#39;&lt;/code&gt; with the name of the measurement you want to monitor, &lt;code&gt;&amp;lt;condition&amp;gt;&lt;/code&gt;
with the condition that triggers the alert, and &lt;code&gt;&#39;&amp;lt;webhook_url&amp;gt;&#39;&lt;/code&gt; with &lt;strong&gt;OnCall Integration URL&lt;/strong&gt;
2. Save the TICKscript file with a &lt;code&gt;.tick&lt;/code&gt; extension, for example, &lt;code&gt;alert_script.tick&lt;/code&gt;.
3. Start the Kapacitor service using the TICKscript:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;kapacitor define &amp;lt;alert_name&amp;gt; -tick /path/to/alert_script.tick
kapacitor enable &amp;lt;alert_name&amp;gt;
kapacitor reload&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Replace &lt;code&gt;&amp;lt;alert_name&amp;gt;&lt;/code&gt; with a suitable name for your alert.
4. Ensure that the Kapacitor service is running and actively monitoring the data.
When the condition defined in the TICKscript is met, Kapacitor will trigger the alert and send
a POST request to the specified webhook URL with the necessary information. Make sure your webhook
endpoint is configured to receive and process the incoming alerts from Kapacitor.&lt;/p&gt;
]]></content><description>&lt;h1 id="kapacitor-integration-for-grafana-oncall">Kapacitor integration for Grafana OnCall&lt;/h1>
&lt;p>The Kapacitor integration for Grafana OnCall handles ticket events sent from Kapacitor webhooks.
The integration provides grouping, auto-acknowledge and auto-resolve logic via customizable alert templates.&lt;/p></description></item><item><title>Manual paging</title><link>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/manual/</link><pubDate>Fri, 03 Apr 2026 16:45:36 +0000</pubDate><guid>https://grafana.com/docs/oncall/v1.68.x/configure/integrations/references/manual/</guid><content><![CDATA[&lt;h1 id=&#34;page-people-manually&#34;&gt;Page people manually&lt;/h1&gt;
&lt;p&gt;Grafana OnCall relies on automated and pre-configured workflows, such as 
    &lt;a href=&#34;/docs/oncall/v1.68.x/configure/integrations/&#34;&gt;integrations&lt;/a&gt;,

    &lt;a href=&#34;/docs/oncall/v1.68.x/configure/escalation-chains-and-routes/&#34;&gt;routes, and escalation chains&lt;/a&gt; to handle most of the incident response process.
However, sometimes you might need to page a 
    &lt;a href=&#34;/docs/oncall/v1.68.x/manage/user-and-team-management/#manage-teams-in-grafana-oncall&#34;&gt;team&lt;/a&gt; or request assistance from specific people that
are not part of these pre-defined rules.&lt;/p&gt;
&lt;p&gt;For such ad-hoc scenarios, Grafana OnCall allows you to create an alert group, input necessary information, and decide
who will be alerted – a team, or a set of users.&lt;/p&gt;
&lt;h2 id=&#34;page-a-team&#34;&gt;Page a team&lt;/h2&gt;
&lt;p&gt;Click on &lt;strong&gt;&#43; Escalation&lt;/strong&gt; on the &lt;strong&gt;Alert groups&lt;/strong&gt; page to start creating a new alert group.
From there, you can configure the alert group to notify a particular team and optionally include additional users. Here are the inputs you need to fill in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Message&lt;/strong&gt;: Write a message to provide more details or instructions to those whom you are paging.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Team&lt;/strong&gt;: Select the team you want to page. The team&amp;rsquo;s
&lt;a href=&#34;#learn-the-flow-and-handle-warnings&#34;&gt;direct paging integration&lt;/a&gt; will be used for notification. &lt;em&gt;Note&lt;/em&gt; that you will only
see teams that have a &amp;ldquo;contactable&amp;rdquo; direct paging integration (ie. it has an escalation chain assigned to it, or has
at least one Chatops integration connected to send notifications to).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Users&lt;/strong&gt;: Include more users to the alert group. For each additional user, you can select a notification policy:

    &lt;a href=&#34;/docs/oncall/v1.68.x/manage/notify/#configure-user-notification-policies&#34;&gt;default or important&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;The same feature is also available as 
    &lt;a href=&#34;/docs/oncall/v1.68.x/manage/notify/slack/#slack-escalate-command&#34;&gt;&lt;strong&gt;/escalate&lt;/strong&gt;&lt;/a&gt; Slack command.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;add-users-to-an-existing-alert-group&#34;&gt;Add users to an existing alert group&lt;/h2&gt;
&lt;p&gt;If you want to page more people for an existing alert group, you can do so using the &lt;strong&gt;&#43; Add&lt;/strong&gt;
button, within the &amp;ldquo;Participants&amp;rdquo; section on the specific alert group&amp;rsquo;s page. The same functionality is available in
Slack using the &lt;strong&gt;Responders&lt;/strong&gt; button in the alert group&amp;rsquo;s message.&lt;/p&gt;
&lt;p&gt;Notifying additional users doesn&amp;rsquo;t disrupt or interfere with the escalation chain configured for the alert group;
it simply adds more responders and notifies them immediately. Note that adding users for an existing alert group
will page them even if the alert group is silenced or acknowledged, but not if the alert group is resolved.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It&amp;rsquo;s not possible to page a team for an existing alert group. To page a specific team, you need to
&lt;a href=&#34;#page-a-team&#34;&gt;create a new alert group&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;learn-the-flow-and-handle-warnings&#34;&gt;Learn the flow and handle warnings&lt;/h2&gt;
&lt;p&gt;When you pick a team to page, Grafana OnCall will automatically use the right direct paging integration for the team.
&amp;ldquo;Direct paging&amp;rdquo; is a special kind of integration in Grafana OnCall that is unique per team and is used to send alerts
to the team&amp;rsquo;s ChatOps channels and start an appropriate escalation chain.&lt;/p&gt;
&lt;h2 id=&#34;set-up-direct-paging-for-a-team&#34;&gt;Set up direct paging for a team&lt;/h2&gt;
&lt;p&gt;By default all teams will have a direct paging integration created for them. Each direct paging integration will be
created with two routes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a non-default route which has a Jinja2 filtering term of &lt;code&gt;{{ payload.oncall.important }}&lt;/code&gt;
(see &lt;a href=&#34;#important-escalations&#34;&gt;Important Escalations&lt;/a&gt; below for more details)&lt;/li&gt;
&lt;li&gt;a default route to capture all other alerts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;However, these integrations are not configured by default to be &amp;ldquo;contactable&amp;rdquo; (ie. their routes will have no
escalation chains assigned to them, nor any Chatops integrations connected to send notifications to).
If a team does not have their direct paging integration configured, such that it is &amp;ldquo;contactable&amp;rdquo; , you will
not be able to direct page this team. If this happens, consider following the following steps for the team (or reach out
to the relevant team and suggest doing so).&lt;/p&gt;
&lt;p&gt;Navigate to the &lt;strong&gt;Integrations&lt;/strong&gt; page and find the &amp;ldquo;Direct paging&amp;rdquo; integration for the team in question. From the
integration&amp;rsquo;s detail page, you can customize its settings, link it to an escalation chain, and configure associated
ChatOps channels. To confirm that the integration is functioning as intended, &lt;a href=&#34;#page-a-team&#34;&gt;create a new alert group&lt;/a&gt;
and select the same team for a test run.&lt;/p&gt;
&lt;h3 id=&#34;important-escalations&#34;&gt;Important escalations&lt;/h3&gt;
&lt;p&gt;Sometimes you really need to get the attention of a particular team. When directly paging a team, it is possible to
page them using an &amp;ldquo;important escalation&amp;rdquo;. Practically speaking, this will create an alert, using the specified team&amp;rsquo;s
direct paging integration as such:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;oncall&amp;#34;: {
    &amp;#34;title&amp;#34;: &amp;#34;IRM is paging Network team to join escalation&amp;#34;,
    &amp;#34;message&amp;#34;: &amp;#34;I really need someone from your team to come take a look! The k8s cluster is down!&amp;#34;,
    &amp;#34;uid&amp;#34;: &amp;#34;8a20b8d1-56fd-482e-824e-43fbd1bd7b10&amp;#34;,
    &amp;#34;author_username&amp;#34;: &amp;#34;irm&amp;#34;,
    &amp;#34;permalink&amp;#34;: null,
    &amp;#34;important&amp;#34;: true
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;When you are directly paging a team, either via the web UI, chatops apps, or the API, you can specify that this
esclation be &amp;ldquo;important&amp;rdquo;, which will effectively set the value of &lt;code&gt;oncall.important&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt;. As mentioned above in
&lt;a href=&#34;#set-up-direct-paging-for-a-team&#34;&gt;Set up direct paging for a team&lt;/a&gt;, direct paging integrations come pre-configured with
two routes, with the non-default route having a Jinja2 filtering term of &lt;code&gt;{{ payload.oncall.important }}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This allows teams to be contacted via different escalation chains, depending on whether or not the user paging them
believes that this is an &amp;ldquo;important escalation&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;manage-your-direct-paging-integrations-via-iac&#34;&gt;Manage your Direct Paging Integrations via IaC&lt;/h2&gt;
&lt;p&gt;By default, Grafana OnCall will automatically create and manage direct paging integrations for each team. However, you
can opt-out of this behavior by enabling the &amp;ldquo;Manually manage direct paging integrations&amp;rdquo; setting in the &lt;strong&gt;Settings&lt;/strong&gt;
page.&lt;/p&gt;
&lt;p&gt;When this setting is enabled, you will be able to manually manage direct paging integrations for each team. This can be
useful if you would like to manage your direct paging integrations via IaC (e.g. Terraform or Crossplane).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: once you&amp;rsquo;ve enabled this feature, we will not delete the existing direct paging integrations for your teams.
Instead, you can either &amp;ldquo;import&amp;rdquo; these into your IaC tooling, or delete them manually and recreate via IaC.&lt;/p&gt;
]]></content><description>&lt;h1 id="page-people-manually">Page people manually&lt;/h1>
&lt;p>Grafana OnCall relies on automated and pre-configured workflows, such as
&lt;a href="/docs/oncall/v1.68.x/configure/integrations/">integrations&lt;/a>,
&lt;a href="/docs/oncall/v1.68.x/configure/escalation-chains-and-routes/">routes, and escalation chains&lt;/a> to handle most of the incident response process.
However, sometimes you might need to page a
&lt;a href="/docs/oncall/v1.68.x/manage/user-and-team-management/#manage-teams-in-grafana-oncall">team&lt;/a> or request assistance from specific people that
are not part of these pre-defined rules.&lt;/p></description></item></channel></rss>