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

# Outbound templates: author, manage, and reuse message bodies

> Create reusable message bodies for SMS, WhatsApp, RCS, email, and more from the Outbound → Templates hub, manage versions and lifecycle, and pick them into a campaign.

# Outbound templates

A template is a saved message body you write once and reuse in campaigns, one-off sends, and drip sequences. Instead of re-typing the same confirmation or promo for every send, you author it in **Outbound → Templates**, let it clear any channel approval it needs, and pick it from the message step of the campaign-create wizard.

Templates live side by side with campaigns under the Outbound hub (an entry point under **Messages → Templates** reaches the same library — same rows, either door).

<Note>
  Voice is not a template channel. The template library covers text channels: SMS, WhatsApp, RCS, email, Viber, Telegram, LINE, Messenger, Instagram, push, fax, and Apple Messages for Business. A voice call flow (Jambonz/speech IVR) is authored in Agents/Studio instead. (Template authoring itself is feature-free and does not interact with outbound routing invariants.)
</Note>

## What a template is

A template record carries a **channel**, a **name**, a **language**, and the message **content** — the body text (or, for rich channels, a body plus optional media). Two placeholder systems personalize that content at send time:

* **Variables** — merge tokens written in the body as double-curly placeholders, for example `{{first_name}}` or `{{order_id}}`. At send time the campaign (or the single-message composer) substitutes per-recipient data from the contact record or the send payload.
* **Conditional blocks** — depending on the channel, richer structures such as WhatsApp's header/footer/buttons or RCS rich cards are built in a dedicated editor, but the body itself stays a single text block (plus media for MMS-style messages).

For most channels the library is flat: each row is one channel's variant, authored directly. A second tab, **Content Templates**, offers a cross-channel author layer: one logical content id grouping per-channel variants with a fallback order (Twilio Content API parity). Use it when the same copy must serve several channels under one definition.

## Channel-specific rules

What you can author, and what happens after you save it, depends on the channel:

* **WhatsApp** — templates must clear **Meta's model approval**. Until the `approved` status is in, the template can't be used from a campaign or a test send. Author the copy, pick a **category** (marketing, utility, or authentication — a WhatsApp-only taxonomy), submit it, and wait for Meta's review. A rejection reason (if any) is visible in the template row.
* **RCS** — rich cards and carousels are reviewed per carrier; editing a template re-enters the `pending` state and old sends keep using the prior approved version.
* **SMS / email / Viber / Telegram / LINE / Messenger / Instagram / push / fax / Apple Messages** — no carrier approval queue; a saved template becomes `active` immediately and is sendable. Email bodies fit MJML-style HTML in the `content` body if you paste rendered HTML, but plain text works too (the composer handles raw bodies).
* **SMS unresolved variables** — SMS has no server-side merge on the composer send path: if a template body still contains `{{name}}` tokens when you open the composer, the UI flags the unresolved variables so you replace them before sending, instead of shipping literal `{{...}}` to the customer.

Two WhatsApp-specific helpers live in the hub toolbar: **WhatsApp Starter Library** (pre-built, policy-compliant Meta templates you can clone in) and **Sync from Meta** (pull template status/category/quality from your connected WABA to repair drifted rows).

## Create a template

1. Open **Outbound → Templates**.
2. Click **Create template** and pick the channel.
3. For WhatsApp: pick the WABA (the picker appears only when your tenant has more than one connected) and choose a category.
4. Fill the body with your copy; insert `{{variable}}` placeholders where personalization is needed.
5. Save. Approval-required channels (WhatsApp, RCS) move to `pending`; platform-only channels land directly at `active`.

Template management — creating, editing, archiving, and deleting — is restricted to the `owner`, `admin`, and `developer` roles.

## Manage versions and lifecycle

Opening the library shows a row per template with status, category (WhatsApp only), language, and a two-line body preview.

* **Edit** — patch the body/name/category/language. Editing a WhatsApp or RCS template re-submits for review; an old approved version stays usable while the new one is pending.
* **Clone** — duplicates the row with a `_copy` name as a new variant. This is the canonical A/B mechanism, because per-template metrics live on the template id — two clones are two measurable variants.
* **Localize** — the Languages action opens a per-locale tracker listing every language variant and its approval status, and can auto-translate into more locales.
* **Archive** — soft-delete; the row leaves compose pickers and test-send lists, and stays restorable from the archive view.
* **Delete** — permanent, after a confirmation dialog.
* **Test send** — fire one to yourself (WhatsApp only after approval; SMS opens the in-place composer; other channels deep-link to the channel's compose dialog with the template pre-selected, and the recipient is marked as a test contact so one-off test sessions do not pollute your contacts list).

## Use a template in a campaign

1. Open **Outbound → Campaigns → Create**.
2. In the message step, pick **Use a template** and select the template from your library. The wizard pre-fills the body for you to review and adjust (for WhatsApp, only `approved` templates show; for SMS/email/etc., any active template shows).
3. Drip sequences treat the campaign's `message_template` as the step-0 welcome message; every step can carry its own template or inline body.
4. A/B testing across template versions: create two clones (as above), then run both variants against the same audience — each variant accumulates its own metrics.

## Read template analytics

After a campaign sends, **Outbound → Templates** → row **Analytics** action opens the cross-campaign rollup: sent → delivered → opened → clicked, consolidated across every campaign that reused that template. See [Template analytics](/guides/template-analytics) for the rollup's exact semantics — the terminal-as-denominator convention, the `degraded` flag on transient fallbacks, and the per-channel breakdown.

## Governance: naming and edit roles

Keep the library trustworthy with two conventions:

* **Naming**: adopt a `<purpose>_<variant>_<locale>` convention (e.g. `order_confirm_v2_en`, `promo_blast_a_es`) so the body preview plus the name together identify what a row is without opening it.
* **Who can edit**: restrict template create/edit/delete/archive to the `owner`/`admin`/`developer` roles (enforced by the hub's role guard). A larger team can view and pick templates in campaigns without being able to mutate the library.
