Template Variables

Last updated on Feb 25, 2026

Support Portal supports template variables — placeholders that resolve to contact, conversation, or agent data at send time. Instead of composing static messages, agents and automation rules can produce personalized content that references the recipient's name, the assigned agent, or the conversation identifier without manual lookup.

Operational objective

Template variables address three requirements common in enterprise and regulated communication workflows:

  • Personalization at scale — Outbound messages, acknowledgments, and follow-ups automatically include recipient-specific details, reducing manual effort and copy-paste errors.
  • Consistency across agents — Standardized message templates with embedded variables ensure that every agent delivers the same information structure, regardless of individual phrasing.
  • Auditability — Because variables resolve from system-held data, the resulting messages accurately reflect the current record, supporting traceability for SLA acknowledgments and ticket references.

Variable syntax

Template variables use double curly bracket notation:

{{ object.property }}

When a message containing this syntax is sent, the platform replaces each placeholder with the corresponding value from the conversation, contact, or agent record. If the value is available, it is inserted inline; if not, the fallback mechanism described below applies.

Inserting a variable

While composing a message or editing a canned response, type two opening curly brackets {{. The platform presents an autocomplete list of available variables. Select the required variable to insert it into the message body.

Available variables

The following variables are supported:

Variable Resolves to
{{ conversation.id }} The numeric identifier of the current conversation
{{ contact.id }} The numeric identifier of the contact
{{ contact.name }} The contact's full name
{{ contact.first_name }} The contact's first name
{{ contact.last_name }} The contact's last name
{{ contact.phone_number }} The contact's phone number
{{ agent.name }} The assigned agent's full name
{{ agent.first_name }} The assigned agent's first name
{{ agent.last_name }} The assigned agent's last name
{{ agent.phone_number }} The assigned agent's phone number

Variables in the contact.* namespace draw from the contact record associated with the conversation. Variables in the agent.* namespace draw from the agent currently assigned to the conversation.

Fallback values

When a variable references a field that has no stored value — for example, a contact record without a phone number — the platform can substitute a fallback string instead of leaving the placeholder blank.

Define a fallback by appending the logical OR operator (||) followed by the fallback text enclosed in single quotes:

{{ contact.first_name || 'there' }}

In this example, if contact.first_name is empty, the message renders as "there" in its place. This prevents incomplete or awkward phrasing in outbound communications.

Enterprise example

A telecom operator sending SLA acknowledgment messages might use:

Hello {{ contact.first_name || 'valued customer' }}, your request (conversation #{{ conversation.id }}) has been received. {{ agent.first_name || 'Our team' }} will respond within the agreed service window.

This template ensures every acknowledgment includes the ticket reference and a personal salutation — even when contact data is incomplete.

Undefined variable handling

If a message includes a variable name that does not match any supported placeholder, the platform displays a validation warning before the message is sent. This prevents agents from inadvertently sending unresolved placeholders to contacts.

Using variables in canned responses

Template variables are particularly effective when combined with canned responses. A canned response containing variables acts as a reusable message template that personalizes itself for each conversation.

For example, a canned response for initial SLA notification might be defined as:

Hello {{ contact.name || 'there' }}, thank you for reaching out. Your conversation reference is #{{ conversation.id }}. I'm {{ agent.first_name }}, and I'll be assisting you today.

When an agent selects this canned response, the platform resolves all variables against the active conversation before inserting the text. This combines the speed of pre-written responses with the accuracy of dynamic content.

See Canned Responses for instructions on creating and managing reusable message templates.

Variables in macros and automation

Template variables are also available in macros and automation rule actions that send messages. This allows automated workflows to produce context-aware notifications — for instance, an automation rule that sends a personalized follow-up when a conversation is marked as resolved, or a macro that inserts the ticket reference into a standard closing message.

See Automation for details on configuring automated actions.