All Posts
Templates4 min read

The Complete Guide to WhatsApp Message Templates

Everything you need to know about creating, submitting, and getting WhatsApp message templates approved — including category rules, variable best practices, and common rejection reasons.

T
Team MotherBot
June 13, 2026276 views

What Are WhatsApp Message Templates?

Message templates (formerly called HSMs — Highly Structured Messages) are pre-approved message formats that WhatsApp businesses use to reach contacts outside the 24-hour customer service window.

If a customer messaged you more than 24 hours ago, you cannot send them a free-form message. You must use an approved template. This rule protects WhatsApp users from spam.

Templates are reviewed by Meta, usually within 1–5 minutes for simple text templates, up to 24 hours for complex rich-media ones.


Template Categories

Meta defines three categories. Choosing the wrong one is the most common reason for rejection.

UTILITY

For transactional or functional messages directly related to a product/service the customer opted into.

✅ Order confirmations, shipping updates, payment receipts, appointment reminders, OTPs

AUTHENTICATION

For one-time passcodes and verification codes only. Has strict formatting requirements.

✅ "Your verification code is {{1}}. Valid for 10 minutes."

MARKETING

For promotional content, offers, product announcements, or any message that doesn't fit UTILITY.

✅ Sale announcements, re-engagement messages, product launches, newsletters

Important: Marketing templates cost more per conversation than UTILITY templates. Misclassifying a marketing message as UTILITY to save costs is a policy violation and will result in template rejection or account restriction.

Template Structure

A template consists of up to four components:

HEADER (optional)  — Text, image, video, or document
BODY (required)    — Main message text, up to 1,024 characters
FOOTER (optional)  — Short disclaimer or opt-out text
BUTTONS (optional) — Up to 3 quick reply or call-to-action buttons

Variable placeholders

Use {{1}}, {{2}}, etc. for dynamic content. Variables must be numbered sequentially.

✅ Good:

"Hi {{1}}, your appointment is confirmed for {{2}} at {{3}}."

❌ Bad (mixing variable types):

"Hi {{name}}, your order {{orderId}} is ready."

Meta requires numbered placeholders, not named ones.


Creating a Template in MotherBot

  1. Go to Templates → New Template.
  2. Choose a category (UTILITY / MARKETING / AUTHENTICATION).
  3. Select the language — you need a separate template for each language you want to use.
  4. Fill in the body text with your variables.
  5. Optionally add a header, footer, and buttons.
  6. Click Submit to Meta.

MotherBot submits the template to Meta's API and polls for status every 30 seconds. You'll see Approved, Rejected, or Pending in the template list.


Common Rejection Reasons

| Reason | Fix |

|--------|-----|

| Wrong category | Re-submit under correct category |

| URL in UTILITY template body | Only allowed in buttons or header |

| Vague variable usage | Add sample values for all variables |

| Template name contains brand names | Use generic descriptive names |

| Grammar/spelling errors | Proof carefully — Meta is strict |

| Threatens consequences | Rewrite without urgency pressure |

| Misleading content | Ensure body matches what user expects |


Button Types

Quick Reply buttons

Up to 3 buttons. User taps one; the button text is sent as their reply.

Use for: YES/NO confirmations, opt-outs, simple choices.

Call-to-Action buttons

  • Phone number — opens the dialer with a pre-filled number
  • URL — opens a link, optionally with a dynamic URL suffix via {{1}}
  • Copy code — copies a code to clipboard (great for promo codes)

You can mix one URL button and one Phone button in the same template.


Template Variables — Best Practices

  1. Always provide sample values when submitting. Meta reviewers can't approve templates with empty variables.
  2. Keep samples realistic. If your variable is a name, use "John", not "TEST_VAR_1".
  3. Don't use variables for the entire message body. At least 50% of your body text should be static — Meta rejects templates that are entirely variable content.
  4. Limit variables per template. More than 5–6 variables makes template management complex and increases rejection risk.

Tags

templatesmetaapprovalcompliancevariables

Ready to get started?

Join 50,000+ businesses growing with MotherBot.