<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Configure Grafana OnCall on Grafana Labs</title><link>https://grafana.com/docs/oncall/v1.6.x/configure/</link><description>Recent content in Configure Grafana OnCall on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/oncall/v1.6.x/configure/index.xml" rel="self" type="application/rss+xml"/><item><title>Escalation chains and routes</title><link>https://grafana.com/docs/oncall/v1.6.x/configure/escalation-chains-and-routes/</link><pubDate>Tue, 07 Apr 2026 10:28:26 +0000</pubDate><guid>https://grafana.com/docs/oncall/v1.6.x/configure/escalation-chains-and-routes/</guid><content><![CDATA[&lt;h1 id=&#34;escalation-chains-and-routes&#34;&gt;Escalation Chains and Routes&lt;/h1&gt;
&lt;p&gt;Often alerts from monitoring systems need to be sent to different escalation chains and messaging channels, based on their severity, or other alert content.&lt;/p&gt;
&lt;h2 id=&#34;routes&#34;&gt;Routes&lt;/h2&gt;
&lt;p&gt;Routes are used to determine which escalation chain should be used for a specific alert
group. A route&amp;rsquo;s &lt;em&gt;&lt;a href=&#34;/docs/oncall/v1.6.x/configure/jinja2-templating/#routing-template&#34;&gt;Routing Templates&lt;/a&gt;&lt;/em&gt;
are evaluated for each alert and &lt;strong&gt;the first matching route&lt;/strong&gt; is used to determine the
escalation chain and chatops channels.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;trigger escalation chain called &lt;code&gt;Database Critical&lt;/code&gt; for alerts with &lt;code&gt;{{ payload.severity == &amp;quot;critical&amp;quot; and payload.service == &amp;quot;database&amp;quot; }}&lt;/code&gt; in the payload&lt;/li&gt;
&lt;li&gt;create a different route for alerts with the payload &lt;code&gt;{{ &amp;quot;synthetic-monitoring-dev-&amp;quot; in payload.namespace }}&lt;/code&gt; and select a escalation chain called &lt;code&gt;Security&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;manage-routes&#34;&gt;Manage routes&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Open Integration page&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add route&lt;/strong&gt; button to create a new route&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Edit&lt;/strong&gt; button to edit &lt;code&gt;Routing Template&lt;/code&gt;. The routing template must evaluate to &lt;code&gt;True&lt;/code&gt; for it to apply&lt;/li&gt;
&lt;li&gt;Select channels in &lt;strong&gt;Publish to Chatops&lt;/strong&gt; section
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If the &lt;strong&gt;Publish to Chatops&lt;/strong&gt; section doesn&amp;rsquo;t exist, connect Chatops integrations first.
For more information, refer to &lt;a href=&#34;/docs/oncall/v1.6.x/manage/notify/&#34;&gt;Notify people&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Escalation Chain&lt;/strong&gt; from the list&lt;/li&gt;
&lt;li&gt;If &lt;strong&gt;Escalation Chain&lt;/strong&gt; does not exist, click &lt;strong&gt;Add new escalation chain&lt;/strong&gt; button to create a new one, it will open in a new tab.&lt;/li&gt;
&lt;li&gt;Once created, &lt;strong&gt;Reload list&lt;/strong&gt;, and select the new escalation chain&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Arrow Up&lt;/strong&gt; and &lt;strong&gt;Arrow Down&lt;/strong&gt; on the right to change the order of routes&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Three dots&lt;/strong&gt; and &lt;strong&gt;Delete Route&lt;/strong&gt; to delete the route&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;routing-based-on-labels&#34;&gt;Routing based on labels&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Labels are currently available only in cloud.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;In addition, there is a &lt;code&gt;labels&lt;/code&gt; variable available to your routing templates, which contains all of the labels assigned
to the Alert Group, as a &lt;code&gt;dict&lt;/code&gt;. This allows you to route based on labels (or a mix of labels and/or payload based data):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{{ labels.foo == &amp;quot;bar&amp;quot; or &amp;quot;hello&amp;quot; in labels.keys() or payload.severity == &amp;quot;critical&amp;quot; }}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;escalation-chains&#34;&gt;Escalation Chains&lt;/h2&gt;
&lt;p&gt;Once an alert group is created and assigned to the route with escalation chain, the
escalation chain will be executed. Until user performs an action, which stops the escalation
chain (e.g. acknowledge, resolve, silence etc), the escalation chain will continue to
execute.&lt;/p&gt;
&lt;p&gt;Users can create escalation chains to configure different type of escalation workflows.
For example, you can create a chain that will notify on-call users with high priority, and
another chain that will only send a message into a Slack channel.&lt;/p&gt;
&lt;p&gt;Escalation chains determine Who and When to notify. How to notify is set by the user, based on their own preferences.&lt;/p&gt;
&lt;h3 id=&#34;types-of-escalation-steps&#34;&gt;Types of escalation steps&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Wait&lt;/code&gt; - wait for a specified amount of time before proceeding to the next step. If you
need a larger time interval, use multiple wait steps in a row.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Notify users&lt;/code&gt; - send a notification to a user or a group of users.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Notify users from on-call schedule&lt;/code&gt; - send a notification to a user or a group of users
from an on-call schedule.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Notify all users from a team&lt;/code&gt; - send a notification to all users in a team.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Resolve incident automatically&lt;/code&gt; - resolve the alert group right now with status
&lt;code&gt;Resolved automatically&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Notify whole slack channel&lt;/code&gt; - send a notification to the users in the slack channel. These users will be notified
via the method configured in their user profile.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Notify Slack User Group&lt;/code&gt; - send a notification to each member of a slack user group. These users will be notified
via the method configured in their user profile.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Trigger outgoing webhook&lt;/code&gt; - trigger an &lt;a href=&#34;/docs/oncall/v1.6.x/configure/outgoing-webhooks/&#34;&gt;outgoing webhook&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Notify users one by one (round robin)&lt;/code&gt; - each notification will be sent to a group of
users one by one, in sequential order in &lt;a href=&#34;https://en.wikipedia.org/wiki/Round-robin_item_allocation&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;round robin fashion&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Continue escalation if current time is in range&lt;/code&gt; - continue escalation only if current
time is in specified range. It will wait for the specfied time to continue escalation.
Useful when you want to get escalation only during working hours&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Continue escalation if &amp;gt;X alerts per Y minutes (beta)&lt;/code&gt; - continue escalation only if it
passes some threshold&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Repeat escalation from beginning (5 times max)&lt;/code&gt; - loop the escalation chain&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Both &amp;ldquo;&lt;strong&gt;Notify whole Slack channel&lt;/strong&gt;&amp;rdquo; and &amp;ldquo;&lt;strong&gt;Notify Slack User Group&lt;/strong&gt;&amp;rdquo; will filter OnCall registered users
matching the users in the Slack channel or Slack User Group with their profiles linked to their Slack accounts (ie. users
should have linked their Slack and OnCall users). In both cases, the filtered users satisfying the criteria above are
notified following their respective notification policies. However, to avoid &lt;strong&gt;spamming&lt;/strong&gt; the Slack channel/thread,
users &lt;strong&gt;won&amp;rsquo;t be notified&lt;/strong&gt; in the alert group Slack &lt;strong&gt;thread&lt;/strong&gt; (this is how the feature is currently implemented)
but instead notify them using their &lt;strong&gt;other defined&lt;/strong&gt; options in
their respective policies.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;notification-types&#34;&gt;Notification types&lt;/h3&gt;
&lt;p&gt;Each escalation step that notifies a user, does so by triggering their personal notification steps. These are configured in the Grafana
OnCall users page (by clicking &amp;ldquo;View my profile&amp;rdquo;).
It will be executed for each user in the escalation step
User can configure two types of personal notification chains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Default Notifications&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Important Notifications&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the escalation step, user can select which type of notification to use.
For more information, refer to &lt;a href=&#34;/docs/oncall/v1.6.x/manage/notify/&#34;&gt;Notify people&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;manage-escalation-chains&#34;&gt;Manage Escalation Chains&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Open &lt;strong&gt;Escalation Chains&lt;/strong&gt; page&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;New escalation chain&lt;/strong&gt; button to create a new escalation chain&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enter a name and assign it to a team&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Name must be unique across organization
&lt;strong&gt;Note:&lt;/strong&gt; Alert Groups inherit the team from the Integration, not the Escalation Chain&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;Add escalation step&lt;/strong&gt; button to add a new step&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;Delete&lt;/strong&gt; to delete the Escalation Chain, and &lt;strong&gt;Edit&lt;/strong&gt; to edit the name or the team.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Linked Integrations and Routes are displayed in the right panel. Any change in the Escalation Chain will
affect all linked Integrations and Routes.&lt;/p&gt;&lt;/blockquote&gt;
]]></content><description>&lt;h1 id="escalation-chains-and-routes">Escalation Chains and Routes&lt;/h1>
&lt;p>Often alerts from monitoring systems need to be sent to different escalation chains and messaging channels, based on their severity, or other alert content.&lt;/p></description></item><item><title>Outgoing Webhooks</title><link>https://grafana.com/docs/oncall/v1.6.x/configure/outgoing-webhooks/</link><pubDate>Tue, 07 Apr 2026 10:28:26 +0000</pubDate><guid>https://grafana.com/docs/oncall/v1.6.x/configure/outgoing-webhooks/</guid><content><![CDATA[&lt;h1 id=&#34;outgoing-webhooks&#34;&gt;Outgoing Webhooks&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ A note about &lt;strong&gt;(Legacy)&lt;/strong&gt; webhooks: Webhooks that were created before version &lt;strong&gt;v1.3.11&lt;/strong&gt; are marked as
&lt;strong&gt;(Legacy)&lt;/strong&gt;. Do not worry! They are still connected to their respective escalation chains and will continue to
execute as they always have.
&lt;br/&gt;&lt;br/&gt;
The &lt;strong&gt;(Legacy)&lt;/strong&gt; webhook is no longer editable due to changes to the internal representation. If you need to edit it
you must use the &lt;code&gt;Make a copy&lt;/code&gt; action in the menu and make your changes there. This will create the webhook in the
new format. Be sure to change your escalation chains to point to the new copy otherwise it will not be active. The
&lt;strong&gt;(Legacy)&lt;/strong&gt; webhook can then be deleted.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Outgoing webhooks are used by Grafana OnCall to send data to a URL in a flexible way. These webhooks can be
triggered from a variety of event types and make use of Jinja2 to transform data into the format required at
the destination URL. Each outgoing webhook receives contextual data when executed which can be processed by
Jinja2 templates to customize the request being sent.&lt;/p&gt;
&lt;h2 id=&#34;creating-an-outgoing-webhook&#34;&gt;Creating an outgoing webhook&lt;/h2&gt;
&lt;p&gt;To create an outgoing webhook navigate to &lt;strong&gt;Outgoing Webhooks&lt;/strong&gt; and click &lt;strong&gt;&#43; Create&lt;/strong&gt;. On this screen outgoing
webhooks can be viewed, edited and deleted. To create the outgoing webhook click &lt;strong&gt;New Outgoing Webhook&lt;/strong&gt; and then
select a preset based on what you want to do. A simple webhook will POST alert group data as a selectable escalation
step to the specified url. If you require more customization use the advanced webhook which provides all of the
fields described below.&lt;/p&gt;
&lt;h3 id=&#34;outgoing-webhook-fields&#34;&gt;Outgoing webhook fields&lt;/h3&gt;
&lt;p&gt;The outgoing webhook is defined by the following fields. For more information about template usage
see &lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Outgoing webhook templates&lt;/a&gt; section.&lt;/p&gt;
&lt;h4 id=&#34;id&#34;&gt;ID&lt;/h4&gt;
&lt;p&gt;This field is generated after an outgoing webhook has been created. It is used to reference the responses of
other webhooks, see &lt;a href=&#34;#using-response-data&#34;&gt;Advanced Usage - Using response data&lt;/a&gt; for more details.&lt;/p&gt;
&lt;h4 id=&#34;name&#34;&gt;Name&lt;/h4&gt;
&lt;p&gt;Display name of the outgoing webhook.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Template Accepted&lt;/a&gt;&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Default Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;✔️&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Empty&lt;/em&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;enabled&#34;&gt;Enabled&lt;/h4&gt;
&lt;p&gt;Controls whether the outgoing webhook will trigger or is ignored.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Template Accepted&lt;/a&gt;&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Default Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;✔️&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;True&lt;/em&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;assign-to-team&#34;&gt;Assign to Team&lt;/h4&gt;
&lt;p&gt;Sets which team owns the outgoing webhook for filtering and visibility.
This setting does not restrict outgoing webhook execution to events from the selected team.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Template Accepted&lt;/a&gt;&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Default Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Empty&lt;/em&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;trigger-type&#34;&gt;Trigger Type&lt;/h4&gt;
&lt;p&gt;The type of event that will cause this outgoing webhook to execute. The types of triggers are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#escalation-step&#34;&gt;Escalation Step&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#alert-group-created&#34;&gt;Alert Group Created&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#acknowledged&#34;&gt;Acknowledged&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#resolved&#34;&gt;Resolved&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#silenced&#34;&gt;Silenced&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#unsilenced&#34;&gt;Unsilenced&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#unresolved&#34;&gt;Unresolved&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#unacknowledged&#34;&gt;Unacknowledged&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#status-change&#34;&gt;Status Change&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more details about types of triggers see &lt;a href=&#34;#event-types&#34;&gt;Event types&lt;/a&gt;&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Template Accepted&lt;/a&gt;&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Default Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;✔️&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;None&lt;/em&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;http-method&#34;&gt;HTTP Method&lt;/h4&gt;
&lt;p&gt;The HTTP method used in the request made by the outgoing webhook. This should match what is required by the URL
you are sending to.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Template Accepted&lt;/a&gt;&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Default Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;✔️&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;POST&lt;/em&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;integrations&#34;&gt;Integrations&lt;/h4&gt;
&lt;p&gt;Restricts the outgoing webhook to only trigger if the event came from a selected integration.
If no integrations are selected the outgoing webhook will trigger for any integration.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Template Accepted&lt;/a&gt;&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Default Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;None&lt;/em&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;webhook-url&#34;&gt;Webhook URL&lt;/h4&gt;
&lt;p&gt;The destination URL the outgoing webhook will make a request to. This must be a FQDN.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Note&lt;/strong&gt; the destination server must respond back within 4 seconds or it will result in a timeout
(this can be seen in the &amp;ldquo;Response Body&amp;rdquo; under the &amp;ldquo;Last Run&amp;rdquo; section)&lt;/p&gt;&lt;/blockquote&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Template Accepted&lt;/a&gt;&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Default Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;✔️&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;✔️&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Empty&lt;/em&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;webhook-headers&#34;&gt;Webhook Headers&lt;/h4&gt;
&lt;p&gt;Headers to add to the outgoing webhook request.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Template Accepted&lt;/a&gt;&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Default Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;✔️&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Empty&lt;/em&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;username&#34;&gt;Username&lt;/h4&gt;
&lt;p&gt;Username to use when making the outgoing webhook request.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Template Accepted&lt;/a&gt;&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Default Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Empty&lt;/em&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;password&#34;&gt;Password&lt;/h4&gt;
&lt;p&gt;Password to use when making the outgoing webhook request.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Template Accepted&lt;/a&gt;&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Default Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Empty&lt;/em&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;authorization-header&#34;&gt;Authorization Header&lt;/h4&gt;
&lt;p&gt;Authorization header to use when making the outgoing webhook request.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Template Accepted&lt;/a&gt;&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Default Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;None&lt;/em&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;trigger-template&#34;&gt;Trigger Template&lt;/h4&gt;
&lt;p&gt;A template used to dynamically determine whether the webhook should execute based on the content of the payload.
If the template evaluates to Empty, True or 1 the webhook will execute.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Template Accepted&lt;/a&gt;&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Default Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;✔️&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Empty&lt;/em&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;data&#34;&gt;Data&lt;/h4&gt;
&lt;p&gt;The main body of the request to be sent by the outgoing webhook.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Template Accepted&lt;/a&gt;&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Default Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;✔️&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Empty&lt;/em&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;forward-all&#34;&gt;Forward All&lt;/h4&gt;
&lt;p&gt;Toggle to send the entire webhook payload instead of using the values in the &lt;strong&gt;Data&lt;/strong&gt; field&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;#outgoing-webhook-templates&#34;&gt;Template Accepted&lt;/a&gt;&lt;/th&gt;
              &lt;th style=&#34;text-align: center&#34;&gt;Default Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
              &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;False&lt;/em&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;outgoing-webhook-templates&#34;&gt;Outgoing webhook templates&lt;/h2&gt;
&lt;p&gt;The fields that accept a Jinja2 template in outgoing webhooks are able to process data to customize the output.
The following is an example of the data available to access from a template. Some data depending on the timing
of the webhook and the triggering event may not always be available,
see &lt;a href=&#34;#outgoing-webhook-data-fields&#34;&gt;field descriptions&lt;/a&gt; specific details. The format you use to call the variables
must match the structure of how the fields are nested in the data.&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;event&amp;#34;: {
    &amp;#34;type&amp;#34;: &amp;#34;resolve&amp;#34;,
    &amp;#34;time&amp;#34;: &amp;#34;2023-04-19T21:59:21.714058&amp;#43;00:00&amp;#34;
  },
  &amp;#34;user&amp;#34;: {
    &amp;#34;id&amp;#34;: &amp;#34;UVMX6YI9VY9PV&amp;#34;,
    &amp;#34;username&amp;#34;: &amp;#34;admin&amp;#34;,
    &amp;#34;email&amp;#34;: &amp;#34;admin@localhost&amp;#34;
  },
  &amp;#34;alert_group&amp;#34;: {
    &amp;#34;id&amp;#34;: &amp;#34;I6HNZGUFG4K11&amp;#34;,
    &amp;#34;integration_id&amp;#34;: &amp;#34;CZ7URAT4V3QF2&amp;#34;,
    &amp;#34;route_id&amp;#34;: &amp;#34;RKHXJKVZYYVST&amp;#34;,
    &amp;#34;alerts_count&amp;#34;: 1,
    &amp;#34;state&amp;#34;: &amp;#34;resolved&amp;#34;,
    &amp;#34;created_at&amp;#34;: &amp;#34;2023-04-19T21:53:48.231148Z&amp;#34;,
    &amp;#34;resolved_at&amp;#34;: &amp;#34;2023-04-19T21:59:21.714058Z&amp;#34;,
    &amp;#34;acknowledged_at&amp;#34;: &amp;#34;2023-04-19T21:54:39.029347Z&amp;#34;,
    &amp;#34;title&amp;#34;: &amp;#34;Incident&amp;#34;,
    &amp;#34;permalinks&amp;#34;: {
      &amp;#34;slack&amp;#34;: null,
      &amp;#34;telegram&amp;#34;: null,
      &amp;#34;web&amp;#34;: &amp;#34;https://**********.grafana.net/a/grafana-oncall-app/alert-groups/I6HNZGUFG4K11&amp;#34;
    },
    &amp;#34;labels&amp;#34;: {
      &amp;#34;urgency&amp;#34;: &amp;#34;3&amp;#34;
    }
  },
  &amp;#34;alert_group_id&amp;#34;: &amp;#34;I6HNZGUFG4K11&amp;#34;,
  &amp;#34;alert_payload&amp;#34;: {
    &amp;#34;endsAt&amp;#34;: &amp;#34;0001-01-01T00:00:00Z&amp;#34;,
    &amp;#34;labels&amp;#34;: {
      &amp;#34;region&amp;#34;: &amp;#34;eu-1&amp;#34;,
      &amp;#34;alertname&amp;#34;: &amp;#34;TestAlert&amp;#34;
    },
    &amp;#34;status&amp;#34;: &amp;#34;firing&amp;#34;,
    &amp;#34;startsAt&amp;#34;: &amp;#34;2018-12-25T15:47:47.377363608Z&amp;#34;,
    &amp;#34;annotations&amp;#34;: {
      &amp;#34;description&amp;#34;: &amp;#34;This alert was sent by user for the demonstration purposes&amp;#34;
    },
    &amp;#34;generatorURL&amp;#34;: &amp;#34;&amp;#34;
  },
  &amp;#34;integration&amp;#34;: {
    &amp;#34;id&amp;#34;: &amp;#34;CZ7URAT4V3QF2&amp;#34;,
    &amp;#34;type&amp;#34;: &amp;#34;webhook&amp;#34;,
    &amp;#34;name&amp;#34;: &amp;#34;Main Integration - Webhook&amp;#34;,
    &amp;#34;team&amp;#34;: &amp;#34;Webhooks Demo&amp;#34;,
    &amp;#34;labels&amp;#34;: {
      &amp;#34;urgency&amp;#34;: &amp;#34;3&amp;#34;
    }
  },
  &amp;#34;alert_group_acknowledged_by&amp;#34;: {
    &amp;#34;id&amp;#34;: &amp;#34;UVMX6YI9VY9PV&amp;#34;,
    &amp;#34;username&amp;#34;: &amp;#34;admin&amp;#34;,
    &amp;#34;email&amp;#34;: &amp;#34;admin@localhost&amp;#34;
  },
  &amp;#34;alert_group_resolved_by&amp;#34;: {
    &amp;#34;id&amp;#34;: &amp;#34;UVMX6YI9VY9PV&amp;#34;,
    &amp;#34;username&amp;#34;: &amp;#34;admin&amp;#34;,
    &amp;#34;email&amp;#34;: &amp;#34;admin@localhost&amp;#34;
  },
  &amp;#34;notified_users&amp;#34;: [],
  &amp;#34;users_to_be_notified&amp;#34;: [],
  &amp;#34;responses&amp;#34;: {
    &amp;#34;WHP936BM1GPVHQ&amp;#34;: {
      &amp;#34;id&amp;#34;: &amp;#34;7Qw7TbPmzppRnhLvK3AdkQ&amp;#34;,
      &amp;#34;created_at&amp;#34;: &amp;#34;15:53:50&amp;#34;,
      &amp;#34;status&amp;#34;: &amp;#34;new&amp;#34;,
      &amp;#34;content&amp;#34;: {
        &amp;#34;message&amp;#34;: &amp;#34;Ticket created!&amp;#34;,
        &amp;#34;region&amp;#34;: &amp;#34;eu&amp;#34;
      }
    }
  },
  &amp;#34;webhook&amp;#34;: {
    &amp;#34;id&amp;#34;: &amp;#34;WH9NSKXWPXSNY3&amp;#34;,
    &amp;#34;name&amp;#34;: &amp;#34;Demo Webhook&amp;#34;,
    &amp;#34;labels&amp;#34;: {}
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;outgoing-webhook-data-fields&#34;&gt;Outgoing webhook data fields&lt;/h3&gt;
&lt;h4 id=&#34;event&#34;&gt;&lt;code&gt;event&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Context information about the event that triggered the outgoing webhook.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{{ event.type }}&lt;/code&gt; - Lower case string matching &lt;a href=&#34;#event-types&#34;&gt;type of event&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ event.time }}&lt;/code&gt; - Time event was triggered&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;user&#34;&gt;&lt;code&gt;user&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Information about the user if the source of the event was a user. If a user acknowledges an alert group after
receiving a notification this field will have that user&amp;rsquo;s information. If an alert group was auto-resolved based
on criteria in the integration this field will be empty.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{{ user.id }}&lt;/code&gt; - &lt;a href=&#34;#uid&#34;&gt;UID&lt;/a&gt; of the user within Grafana OnCall&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ user.username }}&lt;/code&gt; - Username in Grafana&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ user.email }}&lt;/code&gt; - Email associated with user&amp;rsquo;s Grafana account&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;alert_group&#34;&gt;&lt;code&gt;alert_group&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Details about the alert group associated with this event.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{{ alert_group.id }}&lt;/code&gt; - &lt;a href=&#34;#uid&#34;&gt;UID&lt;/a&gt; of alert group&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ alert_group.integration_id }}&lt;/code&gt; - &lt;a href=&#34;#uid&#34;&gt;UID&lt;/a&gt; of integration that alert came through&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ alert_group.route_id }}&lt;/code&gt; - &lt;a href=&#34;#uid&#34;&gt;UID&lt;/a&gt; of route of integration that alert came through&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ alert_group.alerts_count }}&lt;/code&gt; - Count of alerts in alert group&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ alert_group.state }}&lt;/code&gt; - Current state of alert group&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ alert_group.created_at }}&lt;/code&gt; - Timestamp alert group was created&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ alert_group.resolved_at }}&lt;/code&gt; - Timestamp alert group was resolved (None if not resolved yet)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ alert_group.acknowledged_at }}&lt;/code&gt; - Timestamp alert group was acknowledged (None if not acknowledged yet)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ alert_group.title }}&lt;/code&gt; - Title of alert group&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ alert_group.permalinks }}&lt;/code&gt; - Links to alert group in web and chat ops if available&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ alert_group.labels }}&lt;/code&gt; - &lt;a href=&#34;/docs/oncall/v1.6.x/integrations/#alert-group-labels&#34;&gt;Alert group labels&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-alert_group_id-&#34;&gt;&lt;code&gt;{{ alert_group_id }}&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;UID of alert group, same as &lt;code&gt;{{ alert_group.id }}&lt;/code&gt; (For convenience and compatibility with earler versions of Grafana OnCall)&lt;/p&gt;
&lt;h4 id=&#34;alert_payload&#34;&gt;&lt;code&gt;alert_payload&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Content of the first alert in the alert group. Content will depend on what the alert source has sent.
Some commonly used fields are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{{ alert_payload.labels.alertname }}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ alert_payload.annotations.description }}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;integration&#34;&gt;&lt;code&gt;integration&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Details about the integration that received this alert&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{{ integration.id }}&lt;/code&gt; - &lt;a href=&#34;#uid&#34;&gt;UID&lt;/a&gt; of integration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ integration.type }}&lt;/code&gt; - Type of integration (grafana, alertmanager, webhook, etc.)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ integration.name }}&lt;/code&gt; - Name of integration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ integration.team }}&lt;/code&gt; - Team integration belongs to if integration is assigned to a team&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ integration.labels }}&lt;/code&gt; - &lt;a href=&#34;/docs/oncall/v1.6.x/integrations/#labels&#34;&gt;Integration labels&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;notified_users&#34;&gt;&lt;code&gt;notified_users&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Array of users that have received notifications about the associated alert group. Each user element in the array
consists of &lt;code&gt;id&lt;/code&gt;,&lt;code&gt;username&lt;/code&gt;,&lt;code&gt;email&lt;/code&gt;. Depending on timing of events and notifications this might not be populated yet
if notifications are still in progress. Access as &lt;code&gt;{{ notified_users[0].username }}&lt;/code&gt; for example.&lt;/p&gt;
&lt;h4 id=&#34;users_to_notify&#34;&gt;&lt;code&gt;users_to_notify&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Array of users that could potentially be notified based on the configured escalation chain. Each user element in the array
consists of &lt;code&gt;id&lt;/code&gt;,&lt;code&gt;username&lt;/code&gt;,&lt;code&gt;email&lt;/code&gt;. Array elements are ordered based on the order users will be notified with the
first element being the user that will be notified next. Like &lt;code&gt;notified_users&lt;/code&gt; depending on timing of notifications
a user in this array may have already been notified by the time this data is being processed. Access as
&lt;code&gt;{{ users_to_notify[0].username }}&lt;/code&gt; for example.&lt;/p&gt;
&lt;h4 id=&#34;alert_group_acknowledged_by&#34;&gt;&lt;code&gt;alert_group_acknowledged_by&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Information about the user who acknowledged the alert group&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{{ user.id }}&lt;/code&gt; - &lt;a href=&#34;#uid&#34;&gt;UID&lt;/a&gt; of the user within Grafana OnCall&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ user.username }}&lt;/code&gt; - Username in Grafana&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ user.email }}&lt;/code&gt; - Email associated with user&amp;rsquo;s Grafana account&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;alert_group_resolved_by&#34;&gt;&lt;code&gt;alert_group_resolved_by&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Information about the user who resolved the alert group&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{{ user.id }}&lt;/code&gt; - &lt;a href=&#34;#uid&#34;&gt;UID&lt;/a&gt; of the user within Grafana OnCall&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ user.username }}&lt;/code&gt; - Username in Grafana&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ user.email }}&lt;/code&gt; - Email associated with user&amp;rsquo;s Grafana account&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;responses&#34;&gt;&lt;code&gt;responses&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;The responses field is used to access the response data of other webhooks that are associated with this alert group.
The keys inside responses are the &lt;a href=&#34;#uid&#34;&gt;UID&lt;/a&gt; of other outgoing webhooks. The values inside each response is the latest
response of the referenced webhook when it was executed on behalf of the current alert group.
See &lt;a href=&#34;#using-response-data&#34;&gt;Advanced Usage - Using response data&lt;/a&gt; for more details. Access as
&lt;code&gt;{{ responses[&amp;quot;WHP936BM1GPVHQ&amp;quot;].content.message }}&lt;/code&gt; for example&lt;/p&gt;
&lt;h4 id=&#34;webhook&#34;&gt;&lt;code&gt;webhook&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Triggered webhook details&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{{ webhook.id }}&lt;/code&gt; - &lt;a href=&#34;#uid&#34;&gt;UID&lt;/a&gt; of webhook&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ webhook.name }}&lt;/code&gt; - Name of webhook&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ webhook.labels }}&lt;/code&gt; - Webhook labels&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;uid&#34;&gt;UID&lt;/h3&gt;
&lt;p&gt;Templates often use UIDs to make decisions about what actions to take if you need to find the UID of an object
in the user interface to reference they can be found in the following places:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Outgoing Webhook - In the table there is an info icon, UID displayed on hover, click to copy to clipboard&lt;/li&gt;
&lt;li&gt;Integration - In integrations beside the name is an info icon, UID displayed on hover, click to copy to clipboard&lt;/li&gt;
&lt;li&gt;Routes - With an integration selected beside Send Demo Alert is an infor icon, UID displayed on hover,
click to copy to clipboard&lt;/li&gt;
&lt;li&gt;Alert group - When viewing an alert group UID is visible in the browser URL&lt;/li&gt;
&lt;li&gt;User - When viewing a user&amp;rsquo;s profile UID is visible in the browser URL&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;UIDs are also visible in the browser URL when a specific object is selected for view or edit.&lt;/p&gt;
&lt;h3 id=&#34;template-examples&#34;&gt;Template examples&lt;/h3&gt;
&lt;p&gt;The following is an example of an entry in the Data field that would return an alert name and description.&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;name&amp;#34;: &amp;#34;{{ alert_payload.labels.alertname }}&amp;#34;,
  &amp;#34;message&amp;#34;: &amp;#34;{{ alert_payload.annotations.description }}&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Here is an example using the user&amp;rsquo;s email address as part of a URL:&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;https://someticketsystem.com/new-ticket?assign-user={{ user.email }}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;note-about-json&#34;&gt;Note about JSON&lt;/h4&gt;
&lt;p&gt;Take this template 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;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;{{ alert_payload.labels }}&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;It will result in the following (Invalid JSON due to single quotes):&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;#39;region&amp;#39;: &amp;#39;eu-1&amp;#39;, &amp;#39;alertname&amp;#39;: &amp;#39;TestAlert&amp;#39;}
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;To fix change the template to:&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;: {{ alert_payload.labels | tojson()}}
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Now the result is correct:&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;alertname&amp;#34;: &amp;#34;TestAlert&amp;#34;,
    &amp;#34;region&amp;#34;: &amp;#34;eu-1&amp;#34;
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;event-types&#34;&gt;Event types&lt;/h2&gt;
&lt;h3 id=&#34;escalation-step&#34;&gt;Escalation Step&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;event.type&lt;/code&gt; &lt;code&gt;escalation&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This event will trigger when the outgoing webhook is included as a step in an escalation chain.&lt;/p&gt;
&lt;h3 id=&#34;alert-group-created&#34;&gt;Alert Group Created&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;event.type&lt;/code&gt; &lt;code&gt;alert group created&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This event will trigger when a new alert group is created.&lt;/p&gt;
&lt;h3 id=&#34;acknowledged&#34;&gt;Acknowledged&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;event.type&lt;/code&gt; &lt;code&gt;acknowledge&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This event will trigger when a user acknowledges an alert group or an alert group is auto-acknowledged
by the integration.&lt;/p&gt;
&lt;h3 id=&#34;resolved&#34;&gt;Resolved&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;event.type&lt;/code&gt; &lt;code&gt;resolve&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This event will trigger when a user resolves an alert group or an alert group is auto-resolved
by the integration.&lt;/p&gt;
&lt;h3 id=&#34;silenced&#34;&gt;Silenced&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;event.type&lt;/code&gt; &lt;code&gt;silence&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This event will trigger when a user silences an alert group.&lt;/p&gt;
&lt;h3 id=&#34;unsilenced&#34;&gt;Unsilenced&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;event.type&lt;/code&gt; &lt;code&gt;unsilence&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This event will trigger when a user unsilences an alert group or a silence expires.&lt;/p&gt;
&lt;h3 id=&#34;unresolved&#34;&gt;Unresolved&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;event.type&lt;/code&gt; &lt;code&gt;unresolve&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This event will trigger when a user unresolves an alert group.&lt;/p&gt;
&lt;h3 id=&#34;unacknowledged&#34;&gt;Unacknowledged&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;event.type&lt;/code&gt; &lt;code&gt;unacknowledge&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This event will trigger when a user unacknowledges an alert group.&lt;/p&gt;
&lt;h3 id=&#34;status-change&#34;&gt;Status Change&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;event.type&lt;/code&gt; &lt;code&gt;status change&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This event will trigger when any of the status change actions happen (acknowledge, resolve, silence,
unacknowledge, unresolve, or unsilence). The event details included in the payload will match those of
the original action triggering the event.&lt;/p&gt;
&lt;h2 id=&#34;viewing-status-of-outgoing-webhooks&#34;&gt;Viewing status of outgoing webhooks&lt;/h2&gt;
&lt;p&gt;In the outgoing webhooks table if a webhook is enabled &lt;strong&gt;Last Run&lt;/strong&gt; will have the following information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Timestamp outgoing webhook was triggered&lt;/li&gt;
&lt;li&gt;HTTP response code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If more information is required you can click &lt;strong&gt;Status&lt;/strong&gt; in the table. The status drawer shows the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Webhook Name&lt;/li&gt;
&lt;li&gt;Webhook UID&lt;/li&gt;
&lt;li&gt;Trigger Type&lt;/li&gt;
&lt;li&gt;Last Run Time&lt;/li&gt;
&lt;li&gt;URL&lt;/li&gt;
&lt;li&gt;Response Code&lt;/li&gt;
&lt;li&gt;Response Body&lt;/li&gt;
&lt;li&gt;Trigger Template&lt;/li&gt;
&lt;li&gt;Request Headers&lt;/li&gt;
&lt;li&gt;Request Data&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the status drawer if a field makes use of a template it will display both the template and the result
otherwise it will only display the value. Fields which are not used are not shown.&lt;/p&gt;
&lt;h2 id=&#34;advanced-usage&#34;&gt;Advanced usage&lt;/h2&gt;
&lt;h3 id=&#34;using-trigger-template-field&#34;&gt;Using trigger template field&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&#34;#trigger-type&#34;&gt;trigger template field&lt;/a&gt; can be used to provide control over whether a webhook will execute.
This is useful in situations where many different kinds of alerts are going to the same integration but only some of
them should call the webhook. To accomplish this the trigger template field can contain a template that will process
data from the alert group and evaluate to empty, True or 1 if the webhook should execute, any other values will result
in the webhook not executing.&lt;/p&gt;
&lt;h3 id=&#34;using-response-data&#34;&gt;Using response data&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;responses&lt;/code&gt; section of the payload makes available the responses of other webhooks that have acted on the same
alert group. To access them &lt;code&gt;responses&lt;/code&gt; uses the &lt;code&gt;id&lt;/code&gt; of the webhook as a key. The &lt;code&gt;id&lt;/code&gt; can be found by hovering
over the info icon, clicking will copy the &lt;code&gt;id&lt;/code&gt; to the clipboard. The response data of the most recent
execution of the webhook for this same alert group can be accessed this way.&lt;/p&gt;
&lt;p&gt;The typical application of this is where a webhook will create a ticket in another system and OnCall needs to use
the &lt;code&gt;id&lt;/code&gt; of that ticket to keep its status synchronized with the state changes being made in OnCall.&lt;/p&gt;
&lt;h3 id=&#34;advanced-examples&#34;&gt;Advanced examples&lt;/h3&gt;
&lt;p&gt;Integrate with third-party services:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;/docs/oncall/v1.6.x/integrations/jira/&#34;&gt;JIRA&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;/docs/oncall/v1.6.x/integrations/servicenow/&#34;&gt;ServiceNow&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;/docs/oncall/v1.6.x/integrations/zendesk/&#34;&gt;Zendesk&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="outgoing-webhooks">Outgoing Webhooks&lt;/h1>
&lt;blockquote>
&lt;p>⚠️ A note about &lt;strong>(Legacy)&lt;/strong> webhooks: Webhooks that were created before version &lt;strong>v1.3.11&lt;/strong> are marked as
&lt;strong>(Legacy)&lt;/strong>. Do not worry! They are still connected to their respective escalation chains and will continue to
execute as they always have.
&lt;br/>&lt;br/>
The &lt;strong>(Legacy)&lt;/strong> webhook is no longer editable due to changes to the internal representation. If you need to edit it
you must use the &lt;code>Make a copy&lt;/code> action in the menu and make your changes there. This will create the webhook in the
new format. Be sure to change your escalation chains to point to the new copy otherwise it will not be active. The
&lt;strong>(Legacy)&lt;/strong> webhook can then be deleted.&lt;/p></description></item><item><title>Jinja2 templating</title><link>https://grafana.com/docs/oncall/v1.6.x/configure/jinja2-templating/</link><pubDate>Tue, 07 Apr 2026 10:28:26 +0000</pubDate><guid>https://grafana.com/docs/oncall/v1.6.x/configure/jinja2-templating/</guid><content><![CDATA[&lt;h2 id=&#34;jinja2-templating&#34;&gt;Jinja2 templating&lt;/h2&gt;
&lt;p&gt;Grafana OnCall can integrate with any monitoring system that can send alerts via
webhooks with JSON payloads. By default, webhooks deliver raw JSON payloads. When Grafana
OnCall receives an alert and parses its payload, a default pre-configured alert template
is applied to modify the alert payload to be more human-readable. These alert templates
are customizable for any integration. Templates are also used to notify different
escalation chains based on the content of the alert payload.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/S6Is8hhyCos&#34; title=&#34;YouTube video player&#34;
frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture;
web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id=&#34;alert-payload&#34;&gt;Alert payload&lt;/h2&gt;
&lt;p&gt;Alerts received by Grafana OnCall contain metadata as keys and values in a JSON object.
The following is an example of an alert which was initiated by Grafana Alerting, and
received by Grafana OnCall:&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;dashboardId&amp;#34;: 1,
  &amp;#34;title&amp;#34;: &amp;#34;[Alerting] Panel Title alert&amp;#34;,
  &amp;#34;message&amp;#34;: &amp;#34;Notification Message&amp;#34;,
  &amp;#34;evalMatches&amp;#34;: [
    {
      &amp;#34;value&amp;#34;: 1,
      &amp;#34;metric&amp;#34;: &amp;#34;Count&amp;#34;,
      &amp;#34;tags&amp;#34;: {}
    }
  ],
  &amp;#34;imageUrl&amp;#34;: &amp;#34;https://grafana.com/static/assets/img/blog/mixed_styles.png&amp;#34;,
  &amp;#34;orgId&amp;#34;: 1,
  &amp;#34;panelId&amp;#34;: 2,
  &amp;#34;ruleId&amp;#34;: 1,
  &amp;#34;ruleName&amp;#34;: &amp;#34;Panel Title alert&amp;#34;,
  &amp;#34;ruleUrl&amp;#34;: &amp;#34;http://localhost:3000/d/hZ7BuVbWz/test-dashboard?fullscreen\u0026edit\u0026tab=alert\u0026panelId=2\u0026orgId=1&amp;#34;,
  &amp;#34;state&amp;#34;: &amp;#34;alerting&amp;#34;,
  &amp;#34;tags&amp;#34;: {
    &amp;#34;tag name&amp;#34;: &amp;#34;tag value&amp;#34;
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;In Grafana OnCall every alert and alert group have the following fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Title&lt;/code&gt;, &lt;code&gt;Message&lt;/code&gt; and &lt;code&gt;Image Url&lt;/code&gt; for each notification method (Web, Slack, Ms Teams, SMS, Phone, Email, etc.)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Grouping Id&lt;/code&gt; - unique identifier for each non-resolved alert group&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Resolved by source&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Acknowledged by source&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Source link&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The JSON payload is converted to OnCall fields. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{{ payload.title }}&lt;/code&gt; -&amp;gt; &lt;code&gt;Title&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ payload.message }}&lt;/code&gt; -&amp;gt; &lt;code&gt;Message&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ payload.imageUrl }}&lt;/code&gt; -&amp;gt; &lt;code&gt;Image Url&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The result is that each field of the alert in OnCall is now mapped to the JSON payload
keys. This also true for the
alert behavior:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{{ payload.ruleId }}&lt;/code&gt; -&amp;gt; Grouping Id&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{ 1 if payload.state == &#39;OK&#39; else 0 }}&lt;/code&gt; -&amp;gt; Resolve Signal&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Grafana OnCall provides pre-configured default Jinja templates for supported
integrations. If your monitoring system is
not in the Grafana OnCall integrations list, you can create a generic &lt;code&gt;webhook&lt;/code&gt;
integration, send an alert, and configure
your templates.&lt;/p&gt;
&lt;h2 id=&#34;types-of-templates&#34;&gt;Types of templates&lt;/h2&gt;
&lt;p&gt;Alert templates allow you to format any alert fields recognized by Grafana OnCall. You can
customize default alert
templates for all the different notification methods. For more advanced
customization, use Jinja templates.&lt;/p&gt;
&lt;h3 id=&#34;routing-template&#34;&gt;Routing template&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Routing Template&lt;/code&gt; - used to route alerts to different Escalation Chains based on alert content (conditional template, output should be &lt;code&gt;True&lt;/code&gt;)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; For conditional templates, the output should be &lt;code&gt;True&lt;/code&gt; to be applied, for example &lt;code&gt;{{ True if payload.state == &#39;OK&#39; else False }}&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;appearance-templates&#34;&gt;Appearance templates&lt;/h4&gt;
&lt;p&gt;How alerts are displayed in the UI, messengers, and notifications&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Title&lt;/code&gt;, &lt;code&gt;Message&lt;/code&gt;, &lt;code&gt;Image url&lt;/code&gt; for Web&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Title&lt;/code&gt;, &lt;code&gt;Message&lt;/code&gt;, &lt;code&gt;Image url&lt;/code&gt; for Slack&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Title&lt;/code&gt;, &lt;code&gt;Message&lt;/code&gt;, &lt;code&gt;Image url&lt;/code&gt; for MS Teams&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Title&lt;/code&gt;, &lt;code&gt;Message&lt;/code&gt;, &lt;code&gt;Image url&lt;/code&gt; for Telegram&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Title&lt;/code&gt; for SMS&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Title&lt;/code&gt; for Phone Call&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Title&lt;/code&gt;, &lt;code&gt;Message&lt;/code&gt; for Email&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Title&lt;/code&gt;, &lt;code&gt;Message&lt;/code&gt; for Mobile app push notifications&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;behavioral-templates&#34;&gt;Behavioral templates&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Grouping Id&lt;/code&gt; - applied to every incoming alert payload after the &lt;code&gt;Routing Template&lt;/code&gt;. It
can be based on time, alert content, or both. If the resulting grouping id matches an
existing non-resolved alert group grouping id, the alert will be grouped accordingly.
Otherwise, a new alert group will be created&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Autoresolution&lt;/code&gt; - used to auto-resolve alert groups with status &lt;code&gt;Resolved by source&lt;/code&gt;
(Conditional template, output should be &lt;code&gt;True&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Auto acknowledge&lt;/code&gt; - used to auto-acknowledge alert groups with status &lt;code&gt;Acknowledged by source&lt;/code&gt; (Conditional template, output should be &lt;code&gt;True&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Source link&lt;/code&gt; - Used to customize the URL link to provide as the &amp;ldquo;source&amp;rdquo; of the alert.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; For conditional templates, the output should be &lt;code&gt;True&lt;/code&gt; to be applied, for
example &lt;code&gt;{{ True if payload.state == &#39;OK&#39; else False }}&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; As a best practice, add &lt;em&gt;Playbooks&lt;/em&gt;, &lt;em&gt;Useful links&lt;/em&gt;, or &lt;em&gt;Checklists&lt;/em&gt; to the
alert message.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4 id=&#34;how-to-edit-templates&#34;&gt;How to edit templates&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Open the &lt;strong&gt;Integration&lt;/strong&gt; page for the integration you want to edit
1`. Click the &lt;strong&gt;Edit&lt;/strong&gt; button for the Templates Section. Now you can see previews of all
templates for the Integration&lt;/li&gt;
&lt;li&gt;Select the template you want to edit and click the &lt;strong&gt;Edit&lt;/strong&gt; button to the right to the template
name. The template editor will open. The first column is the example alert payload, second
column is the Template itself, and third column is used to view rendered result.&lt;/li&gt;
&lt;li&gt;Select one of the &lt;strong&gt;Recent Alert groups&lt;/strong&gt; for the integration to see its &lt;code&gt;latest alert payload&lt;/code&gt;. If you want to edit this payload, click the &lt;strong&gt;Edit&lt;/strong&gt; button right to the Alert Group
Name.&lt;/li&gt;
&lt;li&gt;Alternatively, you can click &lt;strong&gt;Use custom payload&lt;/strong&gt; and write your own payload to see
how it will be rendered&lt;/li&gt;
&lt;li&gt;Press &lt;code&gt;Control &#43; Enter&lt;/code&gt; in the editor to see suggestions&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Cheatsheet&lt;/strong&gt; in the second column to get some inspiration.&lt;/li&gt;
&lt;li&gt;If you edit Messenger templates, click &lt;strong&gt;Save and open Alert Group in ChatOps&lt;/strong&gt; to see
how the alert will be rendered in the messenger, right in the messenger (Only works for
an Alert Group that exists in the messenger)&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt; to save the template&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;advanced-jinja-templates&#34;&gt;Advanced Jinja templates&lt;/h2&gt;
&lt;p&gt;Grafana OnCall uses the &lt;a href=&#34;http://jinja.pocoo.org/docs/2.10/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Jinja templating language&lt;/a&gt; to
format alert groups for the Web,
Slack, phone calls, SMS messages, and more. As a result, you
can decide what you want to see when an alert group is triggered, as well as how it should
be presented.&lt;/p&gt;
&lt;p&gt;Jinja2 offers simple but multi-faceted functionality by using loops, conditions,
functions, and more.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Every alert from a monitoring system comes in the key/value format.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Grafana OnCall has rules about which of the keys match to: &lt;code&gt;__title&lt;/code&gt;, &lt;code&gt;message&lt;/code&gt;, &lt;code&gt;image&lt;/code&gt;, &lt;code&gt;grouping&lt;/code&gt;, and &lt;code&gt;auto-resolve__&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;loops&#34;&gt;Loops&lt;/h3&gt;
&lt;p&gt;Monitoring systems can send an array of values. In this example, you can use Jinja to
iterate and format the alert
using a Grafana 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;.jinja2&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-jinja2&#34;&gt;*Values:*
 {% for evalMatch in payload.evalMatches -%}
 `{{ evalMatch[&amp;#39;metric&amp;#39;] }}: &amp;#39;{{ evalMatch[&amp;#39;value&amp;#39;] -}}&amp;#39;`{{ &amp;#34; &amp;#34; }}
 {%- endfor %}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;conditions&#34;&gt;Conditions&lt;/h3&gt;
&lt;p&gt;You can add instructions if an alert comes from a specified Grafana alert rule:&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;jinja2&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-jinja2&#34;&gt;{% if  payload.ruleId == &amp;#39;1&amp;#39; -%}
*Alert TODOs*
1. Get acess to the container
    ```
        kubectl port-forward service/example 3000:80
    ```
2. Check for the exception.
3. Open the container and reload caches.
4. Click Custom Button `Send to Jira`
{%- endif -%}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;built-in-jinja-functions&#34;&gt;Built-in Jinja functions&lt;/h3&gt;
&lt;p&gt;Jinja2 includes built-in functions that can also be used in Grafana OnCall. 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;.jinja2&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-jinja2&#34;&gt;{{ payload | tojson_pretty }}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Built-in functions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;abs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;capitalize&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;trim&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;You can see the full list of Jinja built-in functions on github &lt;a href=&#34;https://github.com/pallets/jinja/blob/3915eb5c2a7e2e4d49ebdf0ecb167ea9c21c60b2/src/jinja2/filters.py#L1307&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;functions-added-by-grafana-oncall&#34;&gt;Functions added by Grafana OnCall&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;time&lt;/code&gt; - current time&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tojson&lt;/code&gt; - dumps a structure to JSON&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tojson_pretty&lt;/code&gt; - same as tojson, but prettified&lt;/li&gt;
&lt;li&gt;&lt;code&gt;iso8601_to_time&lt;/code&gt; - converts time from iso8601 (&lt;code&gt;2015-02-17T18:30:20.000Z&lt;/code&gt;) to datetime&lt;/li&gt;
&lt;li&gt;&lt;code&gt;datetimeformat&lt;/code&gt; - converts datetime to string according to strftime format codes (&lt;code&gt;%H:%M / %d-%m-%Y&lt;/code&gt; by default)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;datetimeformat_as_timezone&lt;/code&gt; - same as &lt;code&gt;datetimeformat&lt;/code&gt;, with the inclusion of timezone conversion (&lt;code&gt;UTC&lt;/code&gt; by default)
&lt;ul&gt;
&lt;li&gt;Usage example: &lt;code&gt;{{ payload.alerts.startsAt | iso8601_to_time | datetimeformat_as_timezone(&#39;%Y-%m-%dT%H:%M:%S%z&#39;, &#39;America/Chicago&#39;) }}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;datetimeparse&lt;/code&gt; - converts string to datetime according to strftime format codes (&lt;code&gt;%H:%M / %d-%m-%Y&lt;/code&gt; by default)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;regex_replace&lt;/code&gt; - performs a regex find and replace&lt;/li&gt;
&lt;li&gt;&lt;code&gt;regex_match&lt;/code&gt; - performs a regex match, returns &lt;code&gt;True&lt;/code&gt; or &lt;code&gt;False&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;Usage example: &lt;code&gt;{{ payload.ruleName | regex_match(&amp;quot;.*&amp;quot;) }}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;b64decode&lt;/code&gt; - performs a base64 string decode
&lt;ul&gt;
&lt;li&gt;Usage example: &lt;code&gt;{{ payload.data | b64decode }}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;parse_json&lt;/code&gt; - parses a given json string to an object
&lt;ul&gt;
&lt;li&gt;Usage example: &lt;code&gt;{{ (payload.data | b64decode | parse_json).name }}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h2 id="jinja2-templating">Jinja2 templating&lt;/h2>
&lt;p>Grafana OnCall can integrate with any monitoring system that can send alerts via
webhooks with JSON payloads. By default, webhooks deliver raw JSON payloads. When Grafana
OnCall receives an alert and parses its payload, a default pre-configured alert template
is applied to modify the alert payload to be more human-readable. These alert templates
are customizable for any integration. Templates are also used to notify different
escalation chains based on the content of the alert payload.&lt;/p></description></item></channel></rss>