Create a message template
Set up a message template, add content and buttons, and submit it to Meta for review.
Create a message template when you need reusable, approved content for WhatsApp. The builder guides you through Set up template, Edit template, and Submit for review, with a preview as you work.
Before you start
Open Channels, choose your WhatsApp account, then select Templates. Have your message text, language, sample variable values, and any header media ready.
Who can do this: the workspace owner or members whose role includes viewing channel connections and viewing and managing templates. Using a form also requires viewing forms.
Steps
Set up template
Select Create template. Choose Marketing, Utility, or Authentication in the category controls (1), then choose the message type. Select Next (2).
For Marketing and Utility, you can choose Form to attach a published form. See publish and send a form.
Edit template
Enter Template name and choose Language. Use 1-512 lowercase letters, numbers, or underscores for the name. Add the content described below, then select Next.
Submit for review
Review the summary and message preview. Use Edit beside a summary item or Previous to correct it. Select Submit for review when ready.
Add standard message content
For Marketing and Utility templates, add your message in Content.
| Part | What you can add |
|---|---|
| Header - Optional | Text, an image, a video, or a document. A text header allows 60 characters and one variable, without line breaks or Markdown formatting. |
| Body | Required message text, up to 1,024 characters. Select text and use Bold, Italic, Strikethrough, or Monospace in the formatting toolbar. |
| Footer - Optional | Up to 60 characters. Variables are not supported here. |
For a media header, upload a sample: JPEG or PNG up to 5 MB, MP4 up to 10 MB, or PDF up to 16 MB. Wait for the upload to finish before continuing.
Use variables
Choose Type of variable: Number for numbered variables such as {{1}}, or Name for named variables such as {{customer_name}}. In Body (1), place the cursor where a value belongs and select + Add variable (2).
- Numbered variables must first appear in order, starting with
{{1}}, without gaps. - Named variables must start with a lowercase letter and use lowercase letters, numbers, or underscores.
- Add fixed text before and after body variables. A body cannot start or end with a variable.
- Fill in Variable samples for every header and body variable. Use fictional examples, without customer information.
If the builder warns about too many variables, add more fixed text and separate variables with words.
Add buttons
In Buttons - Optional, select Add button. Enter the button text and the action details.
| Choice | Limit and details |
|---|---|
| Custom, under Quick reply buttons | Up to 10 quick replies. Customers tap a reply to respond. |
| Visit website | Up to 2. Enter an HTTP or HTTPS URL. A URL can have one trailing variable; provide its sample value. |
| Call phone number | Up to 1. Choose the country and enter the phone number. |
| Copy offer code | Up to 1. Provide an offer-code sample of up to 20 characters. Meta supplies the localized button text. |
Button labels allow up to 25 characters and cannot contain variables. Quick replies stay grouped together.
You can add up to 10 buttons in total, including the form button if you chose Form. More than 3 buttons appear in a list for customers.
Set authentication options
Authentication uses Meta's fixed verification-code content instead of a custom body. In Code delivery setup, choose a method:
- Copy code lets customers copy and paste the code into your app or website.
- One-tap autofill lets customers tap to fill the code in your Android app.
- Zero-tap autofill sends the code to your Android app automatically. Accept the displayed terms before continuing.
For autofill, ask your app developer for Package name and the 11-character App signature hash. You can set the Copy code and Autofill button text, up to 25 characters, or leave them blank for Meta's localized defaults.
In Content, you can select Add security recommendation and Add expiry time for the code. Set Expiry time (minutes) from 1 to 90 if you enable expiry text. Your app still needs to enforce the code's expiry; this option adds the notice to the message.
Set the message validity period
Utility and Authentication show Message validity period. Turn on Set custom validity period for your message, enter Validity period, and select Unit as Seconds or Minutes.
| Category | Custom range |
|---|---|
| Utility | 30 seconds to 12 hours. |
| Authentication | 30 seconds to 15 minutes. |
This controls how long WhatsApp retries an undelivered message. It is separate from the verification code's expiry. Leave the switch off to use Meta's default. Marketing does not show this setting in the builder.
Good to know
Meta usually reviews new templates within 24 hours. You can send the template once it is approved. If submission fails, correct the highlighted fields or read the error before trying again. Discard opens a confirmation before you leave unsaved work.
See template statuses, template library, and OTP for developers.