Guides/Messages & templates

How do I build my own message template, buttons and all?

The template designer from scratch: where the menu is, how to write the changing parts, and the Meta rules that cause rejections. 4 min read

A template is a message Meta approves in advance, so you may send it any time — including to people who have never replied to you. This page walks you through the form field by field.

Where the menu is

Templates in the left column of the dashboard → the "Message templates" page → the "Create a new template" section. The form is on the left; on the right is a preview showing the message exactly as the recipient will see it. Keep an eye on that preview — most mistakes show up there first.

Field by field

  1. Category — 🔔 Notification (reminders, confirmations, order status), 📣 Marketing (offers, outreach, anything that asks for a purchase), or 🔑 Verification code. A category that does not match the content is the number-one cause of rejection, and marketing dressed up as a notification still gets caught. The price differs too.
  2. Template name — lowercase, numbers, underscores, e.g. intro_tasya. Only you see it, never the customer.
  3. Message body — the sentences the customer reads. See the next section for the parts that differ per person.
  4. An example for each changing part — one line per part, in order. Meta requires this (their reviewer needs to see real values), but it is never sent to customers.
  5. Footer (optional) — a small grey line, 60 characters at most, no changing parts.
  6. Buttons (optional) — quick replies (up to 3, each ≤ 25 characters), a link button (text + a fixed address), or a WhatsApp form button if you have published a form. These fields sit below Footer — keep scrolling.
  7. Image or PDF above the message (optional) — a poster, brochure, invoice.
  8. Submit to Meta — then wait for the status to change.

Writing the parts that change per recipient

Just put them in braces, with a name that makes sense:

Hello {title}, we have received your {product} order.

Meta-style numbering ({{1}}, {{2}}) works too if you are used to it — both are accepted, and WACO converts them into the form Meta wants. One rule of thumb: in the preview on the right, that part must appear in yellow. If your text is not yellow, it is not being read as a changing part.

If you use a name like {title} and leave the examples box empty, WACO fills in a sensible example for you. Writing a real one is still better — Meta's reviewer reads it.

The name inside the braces does not have to match your spreadsheet column. When the broadcast is sent, each part is mapped to a contact field through a dropdown — so {title} can be taken from whichever column you pick.

Four Meta rules that are nowhere on their screen

Breaking them ends in an INVALID_FORMAT rejection hours later, with no mention of which part is at fault. WACO checks them before submitting, but it helps to know:

  1. Never start or end the message with a changing part. Always keep ordinary words at both ends — "Hello {name}, …", "… thank you 🙏".
  2. Never put two changing parts back to back. "{title} {name}" is rejected; write "{title}, dear {name}" or merge them into one {full_name}.
  3. Bold asterisks must come in pairs. *SHOP* is right, SHOP* is wrong.
  4. 1024 characters maximum for the body.

A real before and after

Rejected:

Hiii {title} {name}, it looks like in {year} you ordered
*{product}* from MYSHOP* …

Two changing parts back to back, and one unpaired asterisk. The version that passes:

Hiii {title}, it looks like back in {year} you ordered
*{product}* from *MYSHOP* — thank you so much for trusting
us back then 😊🙏

Examples to fill in: Mrs. / 2024 / custom tumblers.

After submitting

The status shows in the template list: Pending → Approved (usually minutes to a few hours) or Rejected with a reason. If rejected, fix it and submit under a new name — see the most common causes of rejection.

An approved template can be reused indefinitely without another review: open Broadcast → New broadcast → "Already have an approved template?", and its buttons go out with it, no extra setup. More in the broadcast guide.

Still stuck after following this guide? Contact us from the dashboard — attach a screenshot if you have one, it speeds everything up.