Skip to main content
A template is a message pre-approved by Meta. It is the only message type you can send when the 24-hour window is closed — that is, when the contact hasn’t written to you in the last 24 hours. While the window is open you can send free text; once it closes, only a template will reach the customer.
Templates are created and approved in the dashboard. The public API only consumes them to send — it does not create or edit them.

How a template is resolved

1

Identify the template by name

A template is identified by its template_name — the same name you see in the dashboard and report to Meta.
2

Specify the language if needed

If the same name is approved in several languages, add language (Meta lower_UPPER format, e.g. en_US) to pick which one to send. If it exists in only one language, it is optional.
3

Verify it is approved

Only templates with status APPROVED can be sent. One in PENDING or REJECTED is not sendable.

Template components

When sending a template you fill in its dynamic parts:

body_variables

The body placeholders ({{1}}, {{2}}, …). Array of objects { index, value }.

header

The header: text, or media via file_uuid.

button_parameters

Parameters for dynamic buttons (e.g. the suffix of a URL button).

Sending a template

A typical send, with two variables in the body:
To discover which templates you have available and what variables each one expects, query the template catalog endpoints in the API Reference.

Test templates for tester conversations

The dashboard lets you create test templates (status: FAKE) from the Tester module without going through Meta’s approval. They exist so operators and integrators can test flows against tester conversations without waiting for Meta review. Sending rules via the public API:
  • Tester conversation (is_tester: true in GET /conversations) — you can send both APPROVED templates and FAKE templates. The send replicates the real flow but does not hit Meta (wamid returns "").
  • Real conversation (is_tester: false) — only APPROVED templates. If you try to send a FAKE template or a template with is_tester: true to a real conversation, the API responds with TEMPLATE_FAKE_REQUIRES_TESTER_CONVERSATION (422).
The public catalog (GET /templates and GET /templates/{name}/{language}) does not include FAKE templates — only real APPROVED ones. If you need the name of a FAKE template to send it, ask the operator.

Next steps

Send messages

Sending templates, text, media, and quick replies.

Conversations

The 24-hour window and the state of a conversation.