New to templates? Start with Introduction to templates for versions, brand kits, and channel constraints at a glance.
Templates are the reusable layer between your brand and channel-specific sends. Each template belongs to a channel and message type so the builder and campaign engine never mix incompatible content — for example, a subscription layout can’t be selected for an action-based send node.

Template states

StateMeaning
DRAFTWork in progress — not usable in campaigns or API sends
PUBLISHEDLive and usable — campaign send nodes and API sends can reference this version
REJECTEDBlocked by platform moderation — the rejection reason is shown in the template detail view. Edit and re-publish to request review.
Publishing is instant for all channels. There is no external (Google or carrier) approval process for individual templates — only the RCS Agent setup requires Google review. Once an agent is approved, any published template can be used with it immediately.
If a published template is later rejected (e.g., for spam or policy violation), in-flight campaigns that already queued sends for that template complete normally. New sends using the template are blocked until the rejection is resolved.

Template versions

Every publish creates a new version — an immutable snapshot. Campaign executions reference the version that was active when the campaign launched, so editing and re-publishing a template never changes an in-flight campaign. Typical workflow:
  • Edit content in DRAFT
  • Publish to make it live — creates version v2, v3, etc.
  • Campaigns always reference a specific version (or “latest published” at trigger time)

Brand kit

Brand kits attach logo, colors, footer, and legal copy defaults to a workspace. Email and RCS previews inherit these tokens automatically — teams stay on-brand without copying assets into every template. Brand kit values can be overridden per template, but the kit provides sensible defaults that apply unless you explicitly change them.

Channel fit

The builder only shows templates that match the selected channel and message type. At send time the system validates the published state before allowing launch — if a template is DRAFT or REJECTED, the campaign flow builder blocks launch with a clear error.
ChannelMessage typesNotes
EmailMESSAGE, NEWSLETTERTipTap block editor; rendered via React.Email to inline CSS HTML
RCSMESSAGE, CONVERSATION, NEWSLETTERRich card, carousel, or plain text. Newsletter requires newsletter-enabled agent.
SMS (coming soon)MESSAGEPlain text with character counter (160 / 306 / 459 chars), GSM-7 vs. UCS-2 detection

Email editor specifics

Email templates use a TipTap block editor with drag-and-drop sections:
  • Blocks: Header, text, image, button (CTA), spacer, divider, social links, footer
  • Personalization: Merge tags ({{first_name}}, {{last_order}}) — selectable from a dropdown, validated against contact fields
  • Preview: Desktop and mobile preview in the editor
  • Test send: Send a draft to your own email address with sample contact data
  • Rendering: TipTap JSON → React.Email → inline-CSS HTML. The rendered HTML is pre-computed and stored in the template version. Workers do only merge-tag string replacement at send time — no cross-service rendering call in the send path.

Campaigns vs API sends

PathHow templates are used
Flow builderSEND nodes select a template and channel. Only PUBLISHED templates matching the node’s channel + message type are shown.
Developer APIPOST /v1/messages accepts inline content or a template_id + template_version. See the relevant message type page for exact field names.

Introduction to templates

Concepts: versions, approval state, and API usage.

Campaigns

How SEND nodes reference templates.

Email capabilities

Email channel setup and deliverability.

RCS agents

Agent approval — the only external review in the template workflow.