<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Message templating on Grafana Labs</title><link>https://grafana.com/docs/grafana/v8.0/alerting/unified-alerting/message-templating/</link><description>Recent content in Message templating on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/grafana/v8.0/alerting/unified-alerting/message-templating/index.xml" rel="self" type="application/rss+xml"/><item><title>Template data</title><link>https://grafana.com/docs/grafana/v8.0/alerting/unified-alerting/message-templating/template-data/</link><pubDate>Tue, 10 Mar 2026 12:41:07 +0100</pubDate><guid>https://grafana.com/docs/grafana/v8.0/alerting/unified-alerting/message-templating/template-data/</guid><content><![CDATA[&lt;h1 id=&#34;template-data&#34;&gt;Template data&lt;/h1&gt;
&lt;p&gt;Template data is passed on to &lt;a href=&#34;./&#34;&gt;message templates&lt;/a&gt; as well as sent as payload to webhook pushes.&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&gt;Name&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Notes&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Receiver&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Name of the contact point that the notification is being sent to.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Status&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;firing&lt;/code&gt; if at least one alert is firing, otherwise &lt;code&gt;resolved&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Alerts&lt;/td&gt;
              &lt;td&gt;Alert&lt;/td&gt;
              &lt;td&gt;List of alert objects that are included in this notification (see below).&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;GroupLabels&lt;/td&gt;
              &lt;td&gt;KeyValue&lt;/td&gt;
              &lt;td&gt;Labels these alerts were grouped by.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;CommonLabels&lt;/td&gt;
              &lt;td&gt;KeyValue&lt;/td&gt;
              &lt;td&gt;Labels common to all the alerts included in this notification.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;CommonAnnotations&lt;/td&gt;
              &lt;td&gt;KeyValue&lt;/td&gt;
              &lt;td&gt;Annotations common to all the alerts included in this notification.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;ExternalURL&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Back link to the Grafana that sent the notification. If using external Alertmanager, back link to this Alertmanager.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The &lt;code&gt;Alerts&lt;/code&gt; type exposes functions for filtering alerts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Alerts.Firing&lt;/code&gt; returns a list of firing alerts.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Alerts.Resolved&lt;/code&gt; returns a list of resolved alerts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;alert&#34;&gt;Alert&lt;/h2&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&gt;Name&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Notes&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Status&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;firing&lt;/code&gt; or &lt;code&gt;resolved&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Labels&lt;/td&gt;
              &lt;td&gt;KeyValue&lt;/td&gt;
              &lt;td&gt;A set of labels attached to the alert.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Annotations&lt;/td&gt;
              &lt;td&gt;KeyValue&lt;/td&gt;
              &lt;td&gt;A set of annotations attached to the alert.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;StartsAt&lt;/td&gt;
              &lt;td&gt;time.Time&lt;/td&gt;
              &lt;td&gt;Time the alert started firing.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;EndsAt&lt;/td&gt;
              &lt;td&gt;time.Time&lt;/td&gt;
              &lt;td&gt;Only set if the end time of an alert is known. Otherwise set to a configurable timeout period from the time since the last alert was received.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;GeneratorURL&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;A back link to Grafana or external Alertmanager.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;SilenceURL&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Link to grafana silence for with labels for this alert pre-filled. Only for Grafana managed alerts.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;DashboardURL&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Link to grafana dashboard, if alert rule belongs to one. Only for Grafana managed alerts.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;PanelURL&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Link to grafana dashboard panel, if alert rule belongs to one. Only for Grafana managed alerts.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Fingerprint&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Fingerprint that can be used to identify the alert.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;ValueString&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;A string that contains the labels and value of each reduced expression in the alert.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;keyvalue&#34;&gt;KeyValue&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;KeyValue&lt;/code&gt; is a set of key/value string pairs that represent labels and annotations.&lt;/p&gt;
&lt;p&gt;Here is an example containing two annotations:&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;summary&amp;#34;: &amp;#34;alert summary&amp;#34;,
  &amp;#34;description&amp;#34;: &amp;#34;alert description&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;In addition to direct access of data (labels and annotations) stored as KeyValue, there are also methods for sorting, removing and transforming.&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&gt;Name&lt;/th&gt;
              &lt;th&gt;Arguments&lt;/th&gt;
              &lt;th&gt;Returns&lt;/th&gt;
              &lt;th&gt;Notes&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;SortedPairs&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;Sorted list of key &amp;amp; value string pairs&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Remove&lt;/td&gt;
              &lt;td&gt;[]string&lt;/td&gt;
              &lt;td&gt;KeyValue&lt;/td&gt;
              &lt;td&gt;Returns a copy of the Key/Value map without the given keys.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Names&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;[]string&lt;/td&gt;
              &lt;td&gt;List of label names&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Values&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;[]string&lt;/td&gt;
              &lt;td&gt;List of label values&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;functions&#34;&gt;Functions&lt;/h2&gt;
&lt;p&gt;Some functions to transform values are also available, along with &lt;a href=&#34;https://golang.org/pkg/text/template/#hdr-Functions&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;default functions provided by Go templating&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&gt;Name&lt;/th&gt;
              &lt;th&gt;Arguments&lt;/th&gt;
              &lt;th&gt;Returns&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;title&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Capitalizes first character of each word.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;toUpper&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Converts all characters to upper case.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;match&lt;/td&gt;
              &lt;td&gt;pattern, string&lt;/td&gt;
              &lt;td&gt;Match a string using RegExp.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;reReplaceAll&lt;/td&gt;
              &lt;td&gt;pattern, replacement, string&lt;/td&gt;
              &lt;td&gt;RegExp substitution, unanchored.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;join&lt;/td&gt;
              &lt;td&gt;string, []string&lt;/td&gt;
              &lt;td&gt;Concatenates the elements of the second argument to create a single string. First argument is the separator.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;safeHtml&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Marks string as HTML, not requiring auto-escaping.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;stringSlice&lt;/td&gt;
              &lt;td&gt;&amp;hellip;string&lt;/td&gt;
              &lt;td&gt;Returns passed strings as slice of strings.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="template-data">Template data&lt;/h1>
&lt;p>Template data is passed on to &lt;a href="./">message templates&lt;/a> as well as sent as payload to webhook pushes.&lt;/p>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Name&lt;/th>
&lt;th>Type&lt;/th>
&lt;th>Notes&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Receiver&lt;/td>
&lt;td>string&lt;/td>
&lt;td>Name of the contact point that the notification is being sent to.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Status&lt;/td>
&lt;td>string&lt;/td>
&lt;td>&lt;code>firing&lt;/code> if at least one alert is firing, otherwise &lt;code>resolved&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Alerts&lt;/td>
&lt;td>Alert&lt;/td>
&lt;td>List of alert objects that are included in this notification (see below).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GroupLabels&lt;/td>
&lt;td>KeyValue&lt;/td>
&lt;td>Labels these alerts were grouped by.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CommonLabels&lt;/td>
&lt;td>KeyValue&lt;/td>
&lt;td>Labels common to all the alerts included in this notification.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CommonAnnotations&lt;/td>
&lt;td>KeyValue&lt;/td>
&lt;td>Annotations common to all the alerts included in this notification.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ExternalURL&lt;/td>
&lt;td>string&lt;/td>
&lt;td>Back link to the Grafana that sent the notification. If using external Alertmanager, back link to this Alertmanager.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section>&lt;p>The &lt;code>Alerts&lt;/code> type exposes functions for filtering alerts:&lt;/p></description></item></channel></rss>