BouncerBouncer Docs
WhatsApp ConnectionsMeta Cloud API

Template Requirements & Limits

Meta's rules for WhatsApp message templates — character limits, variable rules, button constraints, and content policies


Meta enforces strict rules on WhatsApp message templates. If your template doesn't meet these requirements, it will be rejected during review or fail when sending.

This page covers the rules you need to follow. For how to create and manage templates in Bouncer, see WhatsApp Templates.

Template name

RuleLimit
Allowed charactersLowercase a-z, digits 0-9, underscores _ only
CaseMust be all lowercase
Max length512 characters
UniquenessMust be unique per WhatsApp Business Account (case-insensitive)

Avoid generic names like test, abc, or message_1 — Meta may reject them.

Categories

Every template must declare a category at creation:

  • Utility — Order confirmations, shipping updates, appointment reminders, account alerts
  • Marketing — Promotions, offers, newsletters, re-engagement (requires customer opt-in)
  • Authentication — OTP codes, login verification, account verification

Your template content must match the declared category. If Meta detects a mismatch, the template will be rejected with INCORRECT_CATEGORY.

Tip: Bouncer sets allow_category_change: true by default. This lets Meta auto-assign the correct category instead of rejecting outright if you picked the wrong one.

Headers are optional. You can have one header per template.

Text header

RuleLimit
Max length60 characters
Max variables1
No leading or trailing variable{{1}} Hello and Hello {{1}} alone are not allowed — add surrounding text
No consecutive variables{{1}}{{2}} is not allowed

Media header

Instead of text, you can use an image, video, or document as the header.

FormatAccepted typesMax size
ImageJPEG, PNG16 MB
VideoMP416 MB
DocumentPDF16 MB

You must provide an example media file when creating the template. This is uploaded during template creation and used for Meta's review.

Body

The body is the main message text. It is required.

RuleLimit
Max length1,024 characters
Variable format{{1}}, {{2}}, {{3}} — numbered sequentially
No named variables{{name}} or {{order_id}} will be rejected — use {{1}}, {{2}}
Sequential numberingMust start at {{1}} with no gaps
No leading or trailing variableAdd text before and after variables
No consecutive variables{{1}}{{2}} is not allowed — add text between them
Variable-to-text ratioVariables cannot make up most of the message — add enough static text
Max consecutive spaces4
Max emojis (Marketing only)10

Example values

When your body contains variables, you must provide realistic example values for Meta's review. Don't use generic values like test or abc — use something that represents actual content.

Footers are optional. If included:

RuleLimit
Max length60 characters
No variablesVariables are not allowed in the footer
No line breaksMust be a single line
No emojisEmojis are not allowed in the footer

Buttons

Templates can include up to 10 buttons total. Each button type has its own limits.

Quick Reply

RuleLimit
Max count10 per template
Text max length25 characters
No variablesVariables are not allowed in button text

URL button

RuleLimit
Max count2 per template
URL formatMust start with https://
URL max length2,000 characters
Variable placementOnly in the path or query string, not in the domain
No wa.me linksWhatsApp links are not allowed
No URL shortenersbit.ly, tinyurl, goo.gl, t.co, ow.ly are blocked

Phone Number button

RuleLimit
Max count1 per template
FormatE.164 international format (e.g., +14155551234)
Text max length25 characters

Copy Code button

RuleLimit
Max count1 per template
Code max length15 characters

Button ordering

If you mix Quick Reply buttons with other button types (URL, Phone, Copy Code), all Quick Reply buttons must be grouped together.

Button text must be unique across the template — no two buttons can have the same label.

Authentication templates

Authentication templates have additional restrictions:

RuleDetail
No URLsCannot include URLs in the content or parameters
No mediaCannot use media headers
No emojisCannot include emojis in the content
OTP code max length15 characters
Code expiration1–90 minutes (code_expiration_minutes)
Security recommendationOptional flag to show a security message

Template lifecycle

After you submit a template, it goes through Meta's review process.

StatusCan send?Can edit?Notes
PendingNoNoReview typically takes less than 48 hours
ApprovedYesYes (1/day, 10/month)Can appeal category within 60 days
RejectedNoYes (edit and resubmit)30-day block on reusing the same name
In AppealNoNoWaiting for Meta's review
PausedNoYesLow quality score — edit to improve
DisabledNoNoToo many pauses — create a new template

Account limits

LimitValue
Templates per WhatsApp Business Account250
Templates created per hour100
Template edits1 per day, 10 per month

Content policy

Meta rejects templates containing content in these categories:

  • Adult or sexually suggestive content
  • Alcohol sales
  • Drugs (prescription, recreational, marijuana)
  • Gambling (casinos, poker, sports betting)
  • Healthcare products (medical devices, nicotine cessation)
  • Illegal products or services
  • Misleading claims (MLM, "get rich quick", binary options)
  • COVID-19 vaccine or pandemic marketing
  • Unsubstantiated financial claims
  • Comparative or superlative claims without proof
  • wa.me or whatsapp.com links in call-to-action buttons

Common rejection reasons

If your template is rejected, check for these issues:

ProblemFix
Character limit exceededCheck header (60), body (1,024), footer (60), button text (25)
Invalid variable formatUse {{1}}, {{2}} — not {{name}} or {{order}}
Leading or trailing variableAdd static text before and after your variables
Too many variables, not enough textAdd more static content to improve the variable-to-text ratio
Wrong categoryMake sure your content matches the declared category
URL contains shortenerUse full URLs instead of bit.ly, tinyurl, etc.
Generic template nameUse descriptive names like order_shipped instead of test
Parameter contains URLMove URLs to a URL button instead of putting them in variable values
Promotional content in UtilityUse Marketing category for promotional messages
Missing opt-out for MarketingInclude an unsubscribe or opt-out option

Common error codes

These error codes may appear when creating or sending templates:

CodeMeaning
2388019Template limit (250) exceeded — delete unused templates
2388040Character limit exceeded
2388047Header format invalid
2388072Body format invalid
2388073Footer format invalid
2388293Variable-to-text ratio exceeded
2388299Leading or trailing variable
131008Parameter value contains a URL — move to button
131047Outside 24-hour window — use a template message
132000Parameter count mismatch
132001Template does not exist — check name and language
132015Template is paused — edit to improve quality
132016Template disabled — create a new one