Skip to main content
A template is a mold approved once. Creation defines the structure and the fixed text; send time fills in what changes on every dispatch. Almost every question about a field is really this one: does it belong to creation or to send time?
This page explains what each field is for. What Meta rejects in each one is in Validation, and the ready payload for each model is in Template models.

Identification

The fields at the root of the payload. They apply to the whole template, whatever the model.

The three categories

Send validity range

On authentication, the send validity cannot be shorter than the code validity. If the message stops being delivered before the code expires, the customer loses both.

Components

Each item in components is an object identified by type. Which component exists in which model is what each model page explains. format decides what the header shows, and each format uses different fields.
The media you put in at creation is the sample Meta reviews, not what the customer receives. The real file for each dispatch goes at send time. The handle comes from Upload media, and we also accept the public link to the file, which we convert before creating the template.

Message

Fixed text of up to 60 characters, with no variables. Usually used for notices such as “Reply STOP to unsubscribe”. On authentication it has another job: code_expiration_minutes, from 1 to 90, shows the code validity. Meta writes the sentence, and leaving it empty hides the line.

Buttons

On the last five, the label belongs to Meta: the text field is still required, but the value isn’t yours. The table with the exact values is in Validation.
Flow buttons accept three references, and you send one of them: flow_action says how it opens: navigate goes to the screen in navigate_screen, data_exchange exchanges data with your server.
Only a published flow works in a template. Meta does not accept drafts.
Each item in cards has its own components: the header with the media or the product, the card text (up to 160 characters) and the buttons. The rule that catches most people: every card needs the same components. If one has text, all do; the set of buttons is the same across cards, and what changes from one card to the next is the label and the destination.

Variables

A variable is the hole in the mold: you write the text once and fill the value on every send. NAMED is Meta’s current format, and the one our models use. On the positional one, parameter_format changes and so does the shape of the example:
Every variable needs an example, and none can open or close the text. Those are the two biggest causes of rejection — the details, with error codes, are in Validation.

Creation and send time: two different things

That is what lets you use the same approved template across different campaigns. Each model says exactly what falls on each side.

Choose the model

The 13 models, what each does and which to pick

Validation

What Meta rejects, with the code for each error