Message templates

Templates are the pre-approved messages that let you start WhatsApp conversations. This page covers categories, anatomy, creating and submitting templates in the dashboard, and getting past Meta review.

What templates are and why Meta reviews them

On the WhatsApp Business API you can reply freely inside the 24-hour customer-service window, but to start a conversation — a broadcast, an order update, an appointment reminder — you must use a message template that Meta has reviewed and approved in advance.

The review exists because templates reach people who have not just messaged you. Meta checks the wording, the category, and policy compliance before letting a template go out. Approved templates can then be sent any time, with per-recipient personalisation through variables. Session replies inside the 24-hour window are covered in Send messages.

Categories and what each costs

Every template belongs to one of three Meta categories. Pick the one that honestly matches the content — Meta may reject or re-categorise templates whose category does not match the copy.

CategoryUse it forTypical examples
MarketingPromotions, offers, announcements — anything that nudges a purchase or re-engagement.Festival sale, new product launch, abandoned-cart nudge
UtilityTransactional follow-ups to an action the customer already took.Order confirmation, delivery update, payment receipt, appointment reminder
AuthenticationOne-time passcodes for login or verification, in Meta's fixed OTP format.Login OTP, transaction verification code

Billing by category

RichAutomate charges Rs 0 platform fee, Rs 0 setup and Rs 0 monthly on every plan. On SaaS Pay, marketing template messages cost Rs 1.20 each and utility messages Rs 0.30 each. On Client Pay, every message is Rs 0.10 plus Meta conversation charges billed to you directly by Meta. Full breakdown on the pricing page.

Anatomy of a template

A template has up to four parts; only the body is required:

  • Header (optional) — a short text line (maximum 60 characters) or a media attachment: image, video, or PDF document. Media headers need a sample file at creation time so Meta's reviewers can see what recipients will get.
  • Body (required) — the main message. Insert numbered placeholders like {{1}} and {{2}} wherever a per-recipient value should go — a name, an order number, an amount. Meta does not allow a variable as the very first or very last thing in the body; the dashboard checks this before submitting.
  • Footer (optional) — a small muted line under the body, commonly used for opt-out text such as "Reply STOP to unsubscribe".
  • Buttons (optional) — quick-reply buttons (the tap becomes an inbound message), URL buttons that open a website, call buttons that dial a phone number, and copy-code buttons for offer codes.
Example body with variables
Hi {{1}}, your order {{2}} has been shipped and
should arrive by {{3}}. Track it anytime from the
link below.

Creating and submitting a template in the dashboard

  1. 1

    Open Templates and click Create Template

    The Templates section lists every template on your account with a status badge, category and language, in a grid or list view with search. Click Create Template to open the builder.
  2. 2

    Name it and pick category and language

    Template names use lowercase letters, numbers and underscores (for example order_shipped) — the form normalises anything else automatically. Choose Marketing, Utility or Authentication, and the template language.
  3. 3

    Compose the content

    Pick a header type (none, text, image, video or document), write the body with your {{1}} variables, add an optional footer, and attach buttons if you want them. A live preview on the right shows the message exactly as recipients will see it. For media headers, upload the sample file the form asks for.
  4. 4

    Submit for review

    Click Create Template. RichAutomate submits it to Meta immediately and it appears in your list with a pending status until Meta finishes the review.
  5. 5

    Track the status

    The badge turns Approved (green) when the template is ready to send, or Rejected (red) if Meta declined it. If you also create templates directly in Meta Business Manager, the Sync from Meta button pulls them into RichAutomate along with their latest statuses.

Approval times and common rejections

Approval usually takes minutes to a few hours. Meta may occasionally take longer, ask for changes, or reject a template outright — no platform can guarantee approval. The most common rejection reasons, and how to fix them:

  • Vague or floating variables. A body like "Hi {{1}}, {{2}}" gives reviewers no idea what will be sent. Surround every variable with concrete context ("your order {{1}} ships on {{2}}"), and never start or end the body with one.
  • Prohibited content. Anything that violates WhatsApp's Business or Commerce policies — restricted goods, misleading claims, sensitive personal data requests — is rejected regardless of wording. Rework the offer, not just the phrasing.
  • Category mismatch. Promotional copy submitted as Utility is the classic case: a "delivery update" that also pushes a discount usually comes back rejected or re-categorised as Marketing. Keep utility templates strictly transactional, or submit the promotional version honestly as Marketing.
  • Formatting problems. Spelling mistakes, excessive capitalisation, or URLs from link shorteners can trip the review. Use your own domain in URL buttons and keep the copy clean.

Rejected? Edit and resubmit

A rejection is not a penalty — fix the wording or category and submit again. Repeated identical resubmissions of rejected content, however, can hurt your quality standing with Meta, so change what the reviewers objected to before retrying.

Filling variables when you send

The placeholders are filled at send time, and the mechanism depends on how you send:

Via the REST API, pass a variables array — the first element fills {{1}}, the second {{2}}, and so on:

POST/api/v1/send-template
Request body
{
  "phone": "919876543210",
  "template": "order_shipped",
  "language": "en_US",
  "variables": ["Priya", "INV-2026-041", "Friday"]
}

In campaigns, add columns named var_1, var_2, … next to the phone column in your CSV — each row personalises that recipient's message. Details in Campaigns & broadcasts; authentication and full API setup in the API quickstart.

Try it on trial credits

Your 14-day free trial includes 100 credits — enough to create a template, get it through review, and test variable mapping end to end before spending anything.

Stuck? Message us on WhatsApp at +91 74349 01027 or book a free 15-minute setup call on Calendly.