> ## Documentation Index
> Fetch the complete documentation index at: https://docs.telzino.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SMS Templates

> Create reusable SMS message templates your agents send at call time with the Send SMS function.

SMS Templates let you author and reuse SMS messages instead of having the agent write the whole body on every call. You define a template once — with placeholders that resolve to live call context — and point an agent's **Send SMS** function at it. At send time the template is rendered server-side with real values and delivered.

Templates are managed in the **SMS Templates** area of the Dashboard (**Customers → SMS Templates**) and the Connect app. They pair with the [Send SMS](/functions/send-sms) function.

## Creating a template

1. Open **SMS Templates** and click **+ Create Template**.
2. Choose a **Message Type** — **Standard SMS** or **MMS** (this can't be changed after creation).
3. Give it a **Name** (unique within the organization) and click **Create** to open the editor.

## Authoring the message

The editor gives you a plain-text body with live feedback:

* **Character & segment counter** — shows GSM-7 (160 chars/segment) vs Unicode (70 chars/segment) and the current segment count.
* **Placeholders** — insert tokens from the **Parameters** panel; recognized tokens are highlighted in the body.
* **Segment estimate** — a worst-case estimate accounting for placeholder expansion.

### Placeholders

Tokens are written as `{{token_name}}` and resolved at send time. Categories:

| Category | Examples |
| - | - |
| **Caller Context** | `{{caller_name}}`, `{{caller_number}}`, `{{called_number}}`, `{{call_id}}` |
| **Business / Account** | `{{business_name}}`, `{{business_phone}}`, `{{business_address}}`, `{{business_website}}` |
| **Date / Time** | `{{current_date}}`, `{{current_time}}`, `{{current_datetime}}` — resolved in the **agent server's timezone (UTC)**, not the caller's or your organization's. The editor preview uses your browser's locale, so a preview and a real send can show different times. Quiet Hours are unaffected: those use the IANA timezone you select on the template. |
| **Agent Collected** | Custom parameters you define, filled from the agent's conversation |

<Warning>
  Not every listed token is wired to a data source. In the current release `{{caller_number}}`, `{{call_id}}`, `{{call_direction}}`, `{{agent_name}}`, the date/time tokens, `{{caller_name}}` (when the agent learns it on the call), the **Business / Account** tokens (see below), and your own **Agent Collected** custom parameters resolve to a value. Three are **not available** and resolve to an empty string unless you give them a fallback: `{{called_number}}` — there is no reliable per-call source for it, since the SIP attributes carry only caller-side numbers — and `{{call_duration}}` and `{{call_start_time}}`, which are not yet read from the live call at send time. The editor's Parameters panel labels each token so you can see which will fill.
</Warning>

<Note>
  The **Business / Account** tokens resolve from your organization's **Template Variables**,
  set in the Dashboard under Customers → Manage → Template Variables. They are shared with
  email templates, so filling them in once covers both. A field left blank leaves its token
  empty (or renders its fallback, if one is given), so `{{business_name|Acme Dental}}` is
  still worth writing for templates that may be used before the values are set.

  SMS has no equivalent of email's `{{business_email}}`: that token is the reply-to address
  for outbound mail, and a text message replies to the sending number instead.

  The editor's preview shows illustrative sample values (`Your Business`, `+15550001111`)
  rather than your saved ones — sample data is there to show length and layout, not to
  predict the delivered message. A real send always uses your Template Variables.
</Note>

Use a **fallback** with `{{token|fallback text}}` — e.g. `Hi {{caller_name|there}},` resolves to the caller's name, or "there" when it's unknown. Unrecognized tokens (and tokens with no data source) resolve to an empty string.

<Warning>
  **Don't use templates to send payment or checkout links.** Stripe checkout links are
  generated per call — a unique, per-amount Checkout Session created on the merchant's
  connected account — and are sent automatically by the agent's [Card Payments](/functions/card-payments)
  function, never through an SMS template. A per-call checkout link can't be stored in a
  reusable template, and the agent is explicitly instructed never to text a payment link by
  any other tool. Templates are for reusable message content (confirmations, reminders,
  directions); let the payment function handle payment links.
</Warning>

## MMS attachments

MMS templates support a media attachment (JPEG, PNG, GIF, MP4, PDF, or vCard, max 5 MB). Media is stored privately and delivered via a short-lived signed URL at send time — the raw file URL is never exposed. You can also use a placeholder for a **dynamic media URL** the agent supplies at send time.

## Compliance

Each template can carry compliance settings, enforced at send time:

* **First Contact** — flags templates that may be the first SMS to a recipient; on **Save & Activate** the body must contain opt-out language (e.g. "Reply STOP to opt out").
* **Allowed Regions** — restrict sending to specific countries (ISO 3166-1 alpha-2, e.g. `US, CA`); a send to a country outside the list is blocked.
* **Quiet Hours** — an allowed send window (start/end, timezone) that is enforced **only on the days you select**. On a selected day, a send outside the window is blocked and returns a suggested retry time. On any day you do **not** select there is no restriction at all, and sends go out at any hour. Selecting Mon–Fri therefore means "apply this window on weekdays", not "only send on weekdays" — leave every day selected if you want the window to apply all week. The window may wrap midnight (e.g. `20:00`–`08:00`).

## Preview & test

Use **Sample Data** to preview the resolved message and segment count, then **Send Test** to deliver a real SMS via a Twilio-enabled agent in the template's own organization.

<Note>
  **Send Test does not apply your compliance settings.** Allowed regions and quiet hours are
  enforced when the *agent* sends during a call, not on a test send — so a test still goes
  out to a blocked region, or outside your quiet-hours window. This is deliberate, so you
  can verify wording and media at any time of day, but it means a successful test does not
  prove the compliance configuration is right.

  Test sends are also rate-limited to roughly one every ten seconds per user, and each one
  is a real, billable message.
</Note>

## Using a template in an agent

In the agent's **Send SMS** function settings, pick a template from the **Template** dropdown (only **Active** templates are selectable) and map each custom placeholder to the agent context key that fills it. At call time the agent renders that template and sends it.

### Sender number (From Number)

A template can optionally set a **From Number** to override the From Number on the agent's **Send SMS** function — for example, sending appointment reminders from a dedicated line. It accepts a phone number, short code, or alphanumeric sender ID.

A phone number is only valid for **one Twilio account**. Twilio credentials belong to the **organization** — see [Twilio](/integrations/twilio) — so a template's From Number must be an SMS-capable number on the organization's Twilio account. (Agents connected before the move may still carry their own credentials, which continue to work.) Because a template can be shared across agents, its From Number is verified **when you assign the template to an agent**, not when you author it. If the number is not on that account, the Send SMS settings show a warning, and a send would otherwise be rejected by the carrier with error `21606`. Short codes and alphanumeric sender IDs are not phone numbers and are not account-checked. Leave the field empty to use the agent's own From Number, set on its **Send SMS** function.

## Status & lifecycle

* **Draft** — work in progress; not selectable by agents.
* **Active** — available to agents.
* **Archived** — hidden from agent selection but kept for reference; can be unarchived or deleted (delete is allowed only on archived templates that no agent references).

<Warning>
  **Archiving a template, or moving it back to Draft, breaks every agent already bound to it.** Only *selection* is hidden — existing bindings are left in place, and from the next call those agents' Send SMS fails with `template_not_found` instead of sending.

  The archive confirmation says the template "will no longer be available to agents", which reads as though only future selection is affected; it is not a warning about the agents already using it, and the API gives no warning at all. Note also that **deleting** a template is refused while any agent references it, but **archiving is not** — so an in-use template can be archived without resistance. Re-point the agents that use it first.
</Warning>

## History

Every change is recorded — who changed what, when, and **where it was saved from** (Dashboard, Connect, or the API) — with a field-level diff and one-click **Restore This Version**.

## Managing templates via the API

Templates can also be managed programmatically. See the [SMS Templates API reference](/api-reference/sms-templates/list) for list, create, get, update, and delete endpoints.

## Availability

SMS Template Manager can be enabled or disabled per organization, reseller, or partner
through [Feature Administration](/admin-guide/dashboard/feature-administration). When
disabled for an organization, its SMS Templates page is hidden, new or edited templates
can't be saved, reactivating an archived template is blocked, and no new template can be
bound to an agent's Send SMS tool — but agents already sending with a bound template are
unaffected, and an existing template can still be archived or deleted.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.