For the complete documentation index, see llms.txt. This page is also available as Markdown.

WhatsApp message templates

Create, submit, import and send WhatsApp templates, and get them approved for the line you actually send from.

Use Text Agents β†’ Message templates to manage the messages your business sends first. Connect a WhatsApp line in the same workspace before you start, and make sure you have permission to edit and send.

New to templates? Start with the types, then come back here to build one.

Which template type do you need

Approval belongs to the sending account

One template in Dapta can be registered with more than one sending account β€” a Meta WhatsApp Business Account, or the account behind a legacy line. Approval is granted per registration, not to the template as a whole β€” so a template approved for one account is not automatically approved for another.

Three things have to line up before a send works: the line you send from, the account it belongs to, and an approved registration of the template for that account. A template you can see in the library is not necessarily usable on the line selected in Inbox or in a Sequence.

Create and submit a template

Meta reviews every template before you can use it. Most rejections come from formatting details you can avoid on the first submission. Follow these steps under Text Agents β†’ Message Templates β†’ Create Template.

Create Template form with name, language, category, type, header, body with variables, footer, buttons, the phone preview and the variables panel with example values
The form on the left, the preview in the middle, and the example value for each variable on the right.

Step 1: Give it a name.

Use only lowercase letters, numbers and underscores, for example order_confirmation or appointment_reminder. The name is internal: your customers never see it, but it helps you find the template later.


Step 2: Choose the language.

Pick the language the message is written in. If the text is in Spanish and you choose English, Meta rejects it.


Step 3: Choose the right category.

Marketing, Utility or Authentication, based on what the message does, not on what it costs. A promotion labelled Utility is rejected, or Meta moves it to Marketing. If in doubt, see Which template type do you need.


Step 4: Choose the template type.

Standard is a single message. Carousel shows several cards the customer swipes through.


Step 5: Add a header, if you need one.

It is optional: a short text, an image, a video or a document. Files must be public: a private or login-protected link will not work.


Step 6: Write the body.

This is the main text, up to 1,024 characters. To personalise it, add variables with the variable control, for example {{contact_name}} or {{company_name}}. Each variable is replaced with the contact's data when the message is sent.


Step 7: Fill in the example value for each variable.

In the Variables panel on the right, write a realistic example for each one, such as Maria for contact_name or Acme for company_name. Meta uses these examples to understand the message. Never use a real customer's data.


Step 8: Add a footer and buttons, if you need them.

  • Footer: a short, fixed text of up to 60 characters, with no variables. For example, Reply STOP to opt out.

  • Buttons: up to 3, as quick replies, links (URL) or a phone number to call.


Step 9: Check the preview.

The phone preview shows the message the way your customer will see it. Read it as they would: it should make sense, the variables should fit the sentence, and nothing should be left blank.


Step 10: Save or submit for approval.

If you are not finished, save a draft. When it is ready, submit it for approval and pick which accounts to register it with. Read each registration's result separately: if some succeed and others fail, keep the ones that worked and fix the rest individually.

Get it approved the first time

Do this
Avoid this

Put text before the first variable and after the last one.

Starting or ending the message with a variable, like {{contact_name}}, hi.

Put text between one variable and the next.

Two variables in a row, like {{first_name}} {{last_name}}.

Give every variable a name: {{contact_name}}.

An empty variable, like {{}}.

Few variables, plenty of fixed text.

A message that is mostly variables: Meta cannot tell what you will send.

A realistic example for every variable.

Empty examples, or a real customer's data.

A category that matches the content.

Labelling an offer as Utility to pay less.

A clear message about who is writing and why.

Vague or threatening messages, or asking for sensitive data such as passwords or card numbers.

Public links on your own domain.

Link shorteners, or files behind a login.

If Meta rejects it, read the reason on the template, fix it and submit again. Meta's review usually takes from a few minutes up to 24 hours.

Import what you already have, and keep statuses fresh

  • Import from Meta brings templates from your connected Meta accounts into the workspace. The result distinguishes created, attached, updated and errors β€” read it rather than assuming everything came across. You can fix the errors and run it again.

  • Sync status refreshes approval states. Check Last synced, and the rejection reason when there is one.

  • Add registration registers an existing template with another eligible account. Use it when a template is approved somewhere but missing for the line you need.

Importing and syncing move information around. Neither one grants approval.

Status
What to do

Draft

Finish it and submit.

Pending review

Wait, then sync. Do not schedule anything on it yet.

Approved

Confirm this registration matches the line you will actually send from.

Rejected

Read the reason, fix the content, submit again. If the template cannot be edited, use Duplicate to Edit.

Paused or disabled

A restriction from WhatsApp. Fix the underlying problem β€” copying the template to send anyway makes it worse.

Duplicate to Edit creates a separate template that needs its own approval. Sequences pointing at the original keep pointing at the original.

Send one by hand from Inbox

  1. Open Text Agents β†’ Inbox β†’ New conversation.

  2. Under Send from, choose the WhatsApp line, then type the recipient's number in international format.

  3. Pick an approved template offered for that line, fill its variables and add any header media.

  4. Check the recipient, the preview and the sending line, then click Send once.

  5. The conversation appears under Awaiting first reply until the person answers.

Inside an existing conversation, Send template does the same thing with that conversation's line. Which controls appear depends on the line and the state of the conversation.

The 24-hour window

Every incoming customer message opens β€” or refreshes β€” a 24-hour window in which your agent can reply freely. Outside it, reaching someone takes an approved template, and sending that template does not reopen the window: only the customer's reply does.

This is WhatsApp's rule, and it is separate from your agent's conversation timeout and from a Sequence's schedule. Meta's own reference is its customer service window page.

What a message inside or outside that window costs depends on how your line is connected. See WhatsApp billing: legacy and direct lines.

When a send fails

Problem
Check

No approved templates offered for a line

Workspace, which account the line belongs to, the template's language, its approval status and when it was last synced.

One registration works, another does not

The failing account's error. Do not delete the registration that works.

Missing variables or media

Fill every requested value and match the header format.

Status refresh fails

Treat the last known status as unconfirmed, check your access and retry.

The send fails, or you cannot tell

Open the conversation history before retrying, so you do not send it twice. For support, note the line, the template, the time and the exact error.

Source review: September 17, 2026. Approval and account access determine what is available.

Inbox

Last updated