Skip to main content
Last Updated: May 13, 2026, 11:42 AM

Template Components

A WhatsApp template is assembled from up to four components: Header, Body, Footer, and Buttons. Understanding how each component works helps you build effective templates that get approved by Meta on the first submission.


The header appears at the top of the template message. It is optional but highly recommended for visual impact.

Text Header

  • Max 60 characters
  • Supports one variable: {{1}}
  • Renders in bold above the body

Media Headers

TypeUsage
ImageUpload a JPG/PNG or provide a URL. WhatsApp renders it inline at the top.
VideoUpload an MP4 or provide a URL. Displays a playable video thumbnail.
DocumentUpload a PDF. Renders as a downloadable file header.
LocationDisplays a static map pin. No variable or URL support.

For media headers, you can set a static file at template creation time, or mark it as dynamic so the sender can upload different media each time the template is used.

Header section with Image type selected and an uploaded image preview An image header renders prominently at the top of the message bubble.


Body

The body is the only required component. It contains the main message content.

Text Formatting

WhatsApp supports these inline formatting marks:

FormatSyntaxRendered As
Bold*text*text
Italic_text_text
Strikethrough~text~text
Monospace```text```text

Variables

Use numbered placeholders {{1}}, {{2}}, {{3}} (and so on sequentially) to insert personalized content at send time.

Rules:

  • Variables must be sequential — you cannot skip from {{1}} to {{3}}.
  • A variable cannot appear at the very start or the very end of the body text.
  • Provide at least one example value for each variable when submitting.
Variables at the start or end of the body will be rejected

Meta's review system flags templates where a variable is the very first or last token in the body. Always wrap variables with surrounding text — e.g., Hi {{1}}, not {{1}} has a message for you.

Hello {{1}}, your order {{2}} has been shipped and will arrive by {{3}}.

Body text area showing a template with two variables and example value inputs below Each variable requires an example value for Meta's review.


The footer is a short line of grey text rendered beneath the body. Use it for contextual info or opt-out instructions.

  • Max 60 characters
  • No variables supported
  • No formatting supported
Use the footer for opt-out instructions

Including Reply STOP to unsubscribe in your footer is best practice for Marketing templates — it signals to Meta that your template respects user preferences, which improves approval rates and quality ratings.

Example: Reply STOP to unsubscribe

Footer input field with an unsubscribe notice entered Keep footer text short and informative.


Buttons

Buttons appear below the footer and let contacts take action directly from the message. A template can have up to 10 buttons in total.

Quick Reply Buttons

Tapping sends a preset reply back to your team as an inbound message.

  • Max 10 quick replies per template
  • Max 25 characters per button label
  • Example: "Yes, I'm interested", "Learn more", "Stop messages"

URL Buttons

Opens a link in the contact's browser.

  • Max 2 URL buttons per template
  • Supports one variable at the end of the URL: https://example.com/track/{{1}}
  • Example: "Track My Order", "Book Now"

Phone Number Button

Dials a number when tapped.

  • Max 1 phone button per template
  • Enter the phone number in international format

Copy Code Button

Copies a code (e.g., discount or OTP) to the device clipboard.

  • Max 1 copy code button per template
  • Pair with {{1}} in the body to display the code

Buttons section showing a URL button, two quick replies, and a phone button configured A template with a URL button, phone button, and two quick replies.


Common Rejection Reasons

ReasonFix
Wrong categoryUse UTILITY for transactional, MARKETING for promotional
Missing example valuesProvide example values for all {{N}} variables
Variable at start/end of bodyMove variables so they are surrounded by text
Non-sequential variablesUse {{1}}, {{2}}, {{3}} in order
Promotional content in UTILITYChange category to MARKETING

Video Walkthrough


What's Next