Message Templates
Message Templates are pre-approved SMS message bodies with variable placeholders that get resolved from CRM data at send time. Templates give administrators control over what agents can send, support compliance requirements (opt-in/opt-out), and ensure consistent messaging.
When a messaging channel has Require Templates enabled, agents can only send messages using approved templates - freeform messaging is not allowed on that channel.
Template Grid
The grid displays all templates for the current tenant with columns for name, channel type, category, status, and variable count.
Create/Edit Template
Basic Fields
| Field | Description |
|---|---|
| Name | Unique template name within the tenant (required) |
| Channel Type | The messaging protocol: currently SMS |
| Category | Organizational category: Marketing, Support, Billing, Reminders, Alerts, Transactional, Onboarding, Notifications, Surveys, or General |
| Status | Active or Inactive. Only active templates are available to agents |
Message Body
The Body field contains the message text with {{source.field}} placeholders for dynamic content. You can add a default value after a pipe character: {{source.field|default}}. If the field is empty at send time, the default is used instead. For example:
Hi {{contact.first_name|Customer}}, thank you for contacting {{company.name}}.Your appointment is confirmed for {{system.date}}. Call us at {{company.phone}}.Reply STOP to unsubscribe.Insert Variable
To add a variable placeholder to the message body, use the Source dropdown and Field list below it:
- Select a Source type to filter the available fields
- Click a field in the list to insert it as
{{source.field}}into the body text
Available Sources
Contact - CRM contact fields:
first_name, last_name, email, phone, mobile, title, department
Account - fields from the contact’s linked account:
name, industry, website, phone, email, address_line1, city, state, postal_code, country
Lead - lead-specific fields:
first_name, last_name, email, phone, company, source, status
Custom Fields - any tenant-defined Custom Fields (inserted as {{contact.cf.field_name}} or {{account.cf.field_name}})
Company - your organization’s identity (from tenant settings):
| Variable | Description | Example |
|---|---|---|
company.name | Company display name | Acme Corp |
company.phone | Company phone number | +15551234567 |
company.url | Company website URL | https://acme.com |
System - runtime context (date and time use your tenant’s configured timezone):
| Variable | Description | Example |
|---|---|---|
system.agent_name | The user sending the message | John Smith |
system.date | Current date in your timezone | Mar 7, 2026 |
system.time | Current time in your timezone (12-hour) | 2:45 PM |
Default Values
Add a pipe and fallback text after any variable to handle empty fields:
{{contact.first_name|Customer}}- uses “Customer” if first name is blank{{company.phone|our office}}- uses “our office” if no phone is set
If no default is specified and the field is empty, the placeholder resolves to an empty string.
Compliance Options
| Field | Description |
|---|---|
| Require Opt-In | When enabled, the system checks the contact’s opt-in status before sending. Messages are blocked if the contact has not opted in for the channel type |
| Include Opt-Out | When enabled, the opt-out text is automatically appended to the message |
| Opt-Out Text | The opt-out instruction appended to messages (default: “Reply STOP to unsubscribe.”). Only shown when Include Opt-Out is enabled |
Notes
Free-text field for internal notes about the template’s purpose, approval status, or usage guidelines.
Worked example: build and ship an appointment-reminder template
Goal: agents (and campaigns) can send a personalized SMS reminder, but only to consented contacts, with an opt-out line - and no freeform edits.
- Create the template. Click Add. Name
Appointment Reminder, Channel TypeSMS, CategoryReminders, StatusInactivefor now (so no one uses it before you have tested it). - Write the body with variables. Use the Source/Field picker to insert placeholders, and add pipe defaults so blanks read naturally:
Hi {{contact.first_name|there}}, this is a reminder of your appointment with {{company.name}} on {{system.date}}. Questions? Call {{company.phone|our office}}.- Turn on compliance. Enable Require Opt-In (blocks sending to anyone who has not opted in to SMS) and Include Opt-Out, leaving the default Opt-Out Text “Reply STOP to unsubscribe.” appended automatically.
- Test. Save, then from a channel that has this template assigned, send it to your own mobile. Confirm your first name, the date, and company details resolve correctly and the STOP line appears.
- Activate. Set Status to
Active. It now appears to agents on any channel with Require Templates enabled, and can be selected as the message in an SMS campaign.
Because the channel enforces templates, agents choose Appointment Reminder and the variables fill from each contact’s CRM record at send time - they cannot alter the wording or message someone who has not consented.
Best practices
- Always provide default values for personalization.
{{contact.first_name|Customer}}keeps the message reading naturally even when a field is blank; without a default it resolves to an empty string. - Include opt-out on marketing messages. Enable Include Opt-Out (and pair it with Require Opt-In) to stay compliant with SMS regulations and carrier rules.
- Keep SMS bodies concise. Long messages split into multiple segments; short, single-segment messages cost less and arrive more reliably.
- Test before activating. Send a template to yourself first to confirm the variables resolve correctly, then set the status to Active.
- Name templates by intent. “Appointment Reminder” is easier for an agent to pick than “Template 4.”
Default Templates
New tenants are created with 8 starter templates covering common use cases:
- Appointment Reminder - appointment confirmation with callback number
- Welcome New Customer - onboarding greeting with company name
- Order Confirmation - order and delivery details
- Payment Reminder - invoice and payment link
- Support Follow-up - ticket status check-in
- Promotion Announcement - marketing offer with expiry
- Service Outage Notification - disruption alert
- Feedback Request - post-interaction rating
These templates demonstrate the variable and default value syntax and can be customized or removed as needed.
Related documentation
- Messaging Channels - assign templates to channels and configure the Require Templates policy.
- WhatsApp Accounts - manage Meta-approved WhatsApp templates and their variable mappings.
- CRM Contacts - contact data used for variable resolution.
- Custom Fields - define additional fields available as template variables.
- Campaigns - send templated messages in bulk to a list.