<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.4/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.4/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.4/alerting/unified-alerting/message-templating/template-data/</link><pubDate>Sat, 04 Apr 2026 12:26:57 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.4/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;]]></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><item><title>Template functions</title><link>https://grafana.com/docs/grafana/v8.4/alerting/unified-alerting/message-templating/template-functions/</link><pubDate>Sat, 04 Apr 2026 12:26:57 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.4/alerting/unified-alerting/message-templating/template-functions/</guid><content><![CDATA[&lt;h1 id=&#34;template-functions&#34;&gt;Template Functions&lt;/h1&gt;
&lt;p&gt;Template functions allow you to process labels and annotations to generate dynamic notifications.&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;Argument type&lt;/th&gt;
              &lt;th&gt;Return type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#humanize&#34;&gt;humanize&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;number or string&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Converts a number to a more readable format, using metric prefixes.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#humanize1024&#34;&gt;humanize1024&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;number or string&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Like humanize, but uses 1024 as the base rather than 1000.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#humanizeduration&#34;&gt;humanizeDuration&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;number or string&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Converts a duration in seconds to a more readable format.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#humanizepercentage&#34;&gt;humanizePercentage&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;number or string&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Converts a ratio value to a fraction of 100.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#humanizetimestamp&#34;&gt;humanizeTimestamp&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;number or string&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Converts a Unix timestamp in seconds to a more readable format.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#title&#34;&gt;title&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;strings.Title, capitalises first character of each word.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#toupper&#34;&gt;toUpper&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;strings.ToUpper, converts all characters to upper case.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#tolower&#34;&gt;toLower&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;strings.ToLower, converts all characters to lower case.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#match&#34;&gt;match&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;pattern, text&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;regexp.MatchString Tests for a unanchored regexp match.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#rereplaceall&#34;&gt;reReplaceAll&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;pattern, replacement, text&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Regexp.ReplaceAllString Regexp substitution, unanchored.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#graphlink&#34;&gt;graphLink&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;string - JSON Object with &lt;code&gt;&amp;quot;expr&amp;quot;&lt;/code&gt; and &lt;code&gt;&amp;quot;datasource&amp;quot;&lt;/code&gt; fields&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Returns the path to graphical view in &lt;a href=&#34;/docs/grafana/latest/explore/&#34;&gt;Explore&lt;/a&gt; for the given expression and data source.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#tablelink&#34;&gt;tableLink&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;string- JSON Object with &lt;code&gt;&amp;quot;expr&amp;quot;&lt;/code&gt; and &lt;code&gt;&amp;quot;datasource&amp;quot;&lt;/code&gt; fields&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Returns the path to tabular view in &lt;a href=&#34;/docs/grafana/latest/explore/&#34;&gt;Explore&lt;/a&gt; for the given expression and data source.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#args&#34;&gt;args&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;[]interface{}&lt;/td&gt;
              &lt;td&gt;map[string]interface{}&lt;/td&gt;
              &lt;td&gt;Converts a list of objects to a map with keys, for example, arg0, arg1. Use this function to pass multiple arguments to templates.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#externalurl&#34;&gt;externalURL&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;nothing&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Returns a string representing the external URL.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#pathprefix&#34;&gt;pathPrefix&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;nothing&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Returns the path of the external URL.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;
&lt;h3 id=&#34;humanize&#34;&gt;humanize&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Template string&lt;/strong&gt; &lt;code&gt;{ humanize $value }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Input&lt;/strong&gt; &lt;code&gt;1234567.0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;1.235M&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;humanize1024&#34;&gt;humanize1024&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TemplateString&lt;/strong&gt; &lt;code&gt;{ humanize1024 $value } &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Input&lt;/strong&gt; &lt;code&gt;1048576.0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;1Mi&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;humanizeduration&#34;&gt;humanizeDuration&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TemplateString&lt;/strong&gt; &lt;code&gt;{ humanizeDuration $value }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Input&lt;/strong&gt; &lt;code&gt;899.99&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;14m 59s&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;humanizepercentage&#34;&gt;humanizePercentage&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TemplateString&lt;/strong&gt; &lt;code&gt;{ humanizePercentage $value }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Input&lt;/strong&gt; &lt;code&gt;0.1234567&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;12.35%&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;humanizetimestamp&#34;&gt;humanizeTimestamp&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TemplateString&lt;/strong&gt; &lt;code&gt;{ $value | humanizeTimestamp }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Input&lt;/strong&gt; &lt;code&gt;1435065584.128&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;2015-06-23 13:19:44.128 &#43;0000 UTC&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;title&#34;&gt;title&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TemplateString&lt;/strong&gt; &lt;code&gt;{ $value | title }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Input&lt;/strong&gt; &lt;code&gt;aa bb CC&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;Aa Bb Cc&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;toupper&#34;&gt;toUpper&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TemplateString&lt;/strong&gt; &lt;code&gt;{ $value | toUpper }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Input&lt;/strong&gt; &lt;code&gt;aa bb CC&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;AA BB CC&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;tolower&#34;&gt;toLower&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TemplateString&lt;/strong&gt; &lt;code&gt;{ $value | toLower }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Input&lt;/strong&gt; &lt;code&gt;aA bB CC&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;aa bb cc&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;match&#34;&gt;match&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TemplateString&lt;/strong&gt; &lt;code&gt;{ match &amp;quot;a&#43;&amp;quot; $labels.instance }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Input&lt;/strong&gt; &lt;code&gt;aa&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;true&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;rereplaceall&#34;&gt;reReplaceAll&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TemplateString&lt;/strong&gt; &lt;code&gt;{{ reReplaceAll &amp;quot;localhost:(.*)&amp;quot; &amp;quot;my.domain:$1&amp;quot; $labels.instance }}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Input&lt;/strong&gt; &lt;code&gt;localhost:3000&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;my.domain:3000&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;graphlink&#34;&gt;graphLink&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TemplateString&lt;/strong&gt; &lt;code&gt;{{ graphLink &amp;quot;{\&amp;quot;expr\&amp;quot;: \&amp;quot;up\&amp;quot;, \&amp;quot;datasource\&amp;quot;: \&amp;quot;gdev-prometheus\&amp;quot;}&amp;quot; }}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;/explore?left=[&amp;quot;now-1h&amp;quot;,&amp;quot;now&amp;quot;,&amp;quot;gdev-prometheus&amp;quot;,{&amp;quot;datasource&amp;quot;:&amp;quot;gdev-prometheus&amp;quot;,&amp;quot;expr&amp;quot;:&amp;quot;up&amp;quot;,&amp;quot;instant&amp;quot;:false,&amp;quot;range&amp;quot;:true}]&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;tablelink&#34;&gt;tableLink&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TemplateString&lt;/strong&gt; &lt;code&gt;{{ tableLink &amp;quot;{\&amp;quot;expr\&amp;quot;: \&amp;quot;up\&amp;quot;, \&amp;quot;datasource\&amp;quot;: \&amp;quot;gdev-prometheus\&amp;quot;}&amp;quot; }}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;/explore?left=[&amp;quot;now-1h&amp;quot;,&amp;quot;now&amp;quot;,&amp;quot;gdev-prometheus&amp;quot;,{&amp;quot;datasource&amp;quot;:&amp;quot;gdev-prometheus&amp;quot;,&amp;quot;expr&amp;quot;:&amp;quot;up&amp;quot;,&amp;quot;instant&amp;quot;:true,&amp;quot;range&amp;quot;:false}]&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;args&#34;&gt;args&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TemplateString&lt;/strong&gt; &lt;code&gt;{{define &amp;quot;x&amp;quot;}}{{.arg0}} {{.arg1}}{{end}}{{template &amp;quot;x&amp;quot; (args 1 &amp;quot;2&amp;quot;)}}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;1 2&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;externalurl&#34;&gt;externalURL&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TemplateString&lt;/strong&gt; &lt;code&gt;{ externalURL }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;http://localhost/path/prefix&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;pathprefix&#34;&gt;pathPrefix&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;TemplateString&lt;/strong&gt; &lt;code&gt;{ pathPrefix }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected&lt;/strong&gt; &lt;code&gt;/path/prefix&lt;/code&gt;&lt;/p&gt;
]]></content><description>&lt;h1 id="template-functions">Template Functions&lt;/h1>
&lt;p>Template functions allow you to process labels and annotations to generate dynamic notifications.&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>Argument type&lt;/th>
&lt;th>Return type&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;a href="#humanize">humanize&lt;/a>&lt;/td>
&lt;td>number or string&lt;/td>
&lt;td>string&lt;/td>
&lt;td>Converts a number to a more readable format, using metric prefixes.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="#humanize1024">humanize1024&lt;/a>&lt;/td>
&lt;td>number or string&lt;/td>
&lt;td>string&lt;/td>
&lt;td>Like humanize, but uses 1024 as the base rather than 1000.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="#humanizeduration">humanizeDuration&lt;/a>&lt;/td>
&lt;td>number or string&lt;/td>
&lt;td>string&lt;/td>
&lt;td>Converts a duration in seconds to a more readable format.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="#humanizepercentage">humanizePercentage&lt;/a>&lt;/td>
&lt;td>number or string&lt;/td>
&lt;td>string&lt;/td>
&lt;td>Converts a ratio value to a fraction of 100.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="#humanizetimestamp">humanizeTimestamp&lt;/a>&lt;/td>
&lt;td>number or string&lt;/td>
&lt;td>string&lt;/td>
&lt;td>Converts a Unix timestamp in seconds to a more readable format.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="#title">title&lt;/a>&lt;/td>
&lt;td>string&lt;/td>
&lt;td>string&lt;/td>
&lt;td>strings.Title, capitalises first character of each word.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="#toupper">toUpper&lt;/a>&lt;/td>
&lt;td>string&lt;/td>
&lt;td>string&lt;/td>
&lt;td>strings.ToUpper, converts all characters to upper case.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="#tolower">toLower&lt;/a>&lt;/td>
&lt;td>string&lt;/td>
&lt;td>string&lt;/td>
&lt;td>strings.ToLower, converts all characters to lower case.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="#match">match&lt;/a>&lt;/td>
&lt;td>pattern, text&lt;/td>
&lt;td>boolean&lt;/td>
&lt;td>regexp.MatchString Tests for a unanchored regexp match.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="#rereplaceall">reReplaceAll&lt;/a>&lt;/td>
&lt;td>pattern, replacement, text&lt;/td>
&lt;td>string&lt;/td>
&lt;td>Regexp.ReplaceAllString Regexp substitution, unanchored.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="#graphlink">graphLink&lt;/a>&lt;/td>
&lt;td>string - JSON Object with &lt;code>&amp;quot;expr&amp;quot;&lt;/code> and &lt;code>&amp;quot;datasource&amp;quot;&lt;/code> fields&lt;/td>
&lt;td>string&lt;/td>
&lt;td>Returns the path to graphical view in &lt;a href="/docs/grafana/latest/explore/">Explore&lt;/a> for the given expression and data source.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="#tablelink">tableLink&lt;/a>&lt;/td>
&lt;td>string- JSON Object with &lt;code>&amp;quot;expr&amp;quot;&lt;/code> and &lt;code>&amp;quot;datasource&amp;quot;&lt;/code> fields&lt;/td>
&lt;td>string&lt;/td>
&lt;td>Returns the path to tabular view in &lt;a href="/docs/grafana/latest/explore/">Explore&lt;/a> for the given expression and data source.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="#args">args&lt;/a>&lt;/td>
&lt;td>[]interface{}&lt;/td>
&lt;td>map[string]interface{}&lt;/td>
&lt;td>Converts a list of objects to a map with keys, for example, arg0, arg1. Use this function to pass multiple arguments to templates.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="#externalurl">externalURL&lt;/a>&lt;/td>
&lt;td>nothing&lt;/td>
&lt;td>string&lt;/td>
&lt;td>Returns a string representing the external URL.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="#pathprefix">pathPrefix&lt;/a>&lt;/td>
&lt;td>nothing&lt;/td>
&lt;td>string&lt;/td>
&lt;td>Returns the path of the external URL.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section>&lt;h2 id="examples">Examples&lt;/h2>
&lt;h3 id="humanize">humanize&lt;/h3>
&lt;p>&lt;strong>Template string&lt;/strong> &lt;code>{ humanize $value }&lt;/code>&lt;/p></description></item></channel></rss>