Skip to content
OmniChannels.ai

Free tool

WhatsApp template preview and checker

Write your template, add variables and buttons, and see exactly how it lands in WhatsApp. A live checklist flags what Meta's review would reject before you submit, then exports the API payload.

Free · no sign-up · runs in your browser

Start from an example

18/512

Lowercase letters, numbers and underscores only.

Category

Updates the customer asked for: orders, bookings, accounts, alerts. No promotional content.

Header
21/60
147/1024

Use {{1}}, {{2}}… for variables. Formatting: *bold*, _italic_, ~strikethrough~, ```monospace```.

Sample values

Meta requires a realistic sample for every variable. Reviewers read them.

22/60

Buttons · optional

Up to 10 in total: 10 quick replies, 2 URL, 1 phone number, 1 copy code.

  1. 1URL
    11/25

    Add {{1}} at the very end for a dynamic suffix.

  2. 2Phone number
    12/25
    15/20

Live preview

No blocking issues found. Ready to submit for review.

Approval checklist

  • Pass: Template name format is valid.
  • Pass: Header text length 21/60.
  • Pass: Body length 147/1024.
  • Pass: 4 variables, numbered in sequence.
  • Pass: Every variable has a sample value.
  • Pass: Footer length 22/60.
  • Pass: 2 buttons within Meta's limits and grouping rules.
  • Pass: No promotional wording found for a utility template.

Rules checked against Meta's official template documentation (components, template review and categorization pages), verified October 2026. Components · Template review · Categorization

Template JSON

Request body for POST /<WABA_ID>/message_templates on the WhatsApp Business Management API.

{
  "name": "order_confirmation",
  "language": "en_US",
  "category": "UTILITY",
  "components": [
    {
      "type": "HEADER",
      "format": "TEXT",
      "text": "Order {{1}} confirmed",
      "example": {
        "header_text": [
          "#48213"
        ]
      }
    },
    {
      "type": "BODY",
      "text": "Hi {{1}}, thanks for your order!\n\nWe've received order *{{2}}* for {{3}} and will message you again as soon as it ships. Estimated delivery: {{4}}.",
      "example": {
        "body_text": [
          [
            "Sara",
            "#48213",
            "AED 349.00",
            "Thursday, 14 Nov"
          ]
        ]
      }
    },
    {
      "type": "FOOTER",
      "text": "Reply HELP for support"
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "URL",
          "text": "Track order",
          "url": "https://shop.example.com/orders/{{1}}",
          "example": [
            "48213"
          ]
        },
        {
          "type": "PHONE_NUMBER",
          "text": "Call support",
          "phone_number": "+97140000000"
        }
      ]
    }
  ]
}

Submitting dozens of templates in several languages? Our team builds, submits and tracks approvals for you. Talk to a WhatsApp expert

Nothing you type here is sent to our servers.

Short answer

A WhatsApp message template is a pre-approved message a business sends outside the 24-hour customer service window. Meta limits the body to 1,024 characters, the header and footer to 60, and button labels to 25, with up to 10 buttons. Variables like {{1}} must be numbered in sequence, need sample values, and cannot start or end the body. Each template is categorized as marketing, utility or authentication.

How to preview and check a WhatsApp template

  1. 1

    Pick a category and language

    Choose marketing, utility or authentication and the template language. Or load one of the ready examples, in English or Arabic.

  2. 2

    Write the header, body and footer

    Use {{1}}, {{2}} for personal details. A sample value field appears for each variable so the preview reads like a real message.

  3. 3

    Add buttons

    Add quick replies, website links with a dynamic suffix, a phone number or a copy offer code. The tool keeps them within Meta's limits.

  4. 4

    Fix the checklist, then export

    Resolve every red item, review the warnings, then copy the JSON payload for the WhatsApp Business Management API.

WhatsApp template character limits

Meta's template components documentation sets hard limits on every part of a template. Submissions over these limits fail at the API before a human reviewer ever sees them, so it pays to check them while writing.

Characters are counted as you see them: an emoji or an Arabic letter counts as one. Line breaks count too, and Markdown-style formatting characters such as the asterisks in *bold* are part of the count.

Source: Meta, Template components, https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/components (checked October 2026).

  • Template name: up to 512 characters, lowercase letters, numbers and underscores only.
  • Text header: up to 60 characters and at most 1 variable. Media headers can be an image, video or document; location headers are allowed for utility and marketing only.
  • Body: up to 1,024 characters, required, with as many variables as you need.
  • Footer: up to 60 characters, no variables.
  • Buttons: up to 10 in total, including at most 10 quick replies, 2 URL buttons, 1 phone number button and 1 copy code button. Button labels are limited to 25 characters, URLs to 2,000, phone numbers to 20 and copy codes to 20.

Variable rules that cause rejections

Most rejected templates fail on their placeholders, not their wording. Meta's template review guide lists the variable problems it rejects: parameters that are not sequential, contain special characters such as #, $ or %, have mismatched curly braces, or sit at the very start or end of the message ("dangling parameters").

Meta also rejects templates with too many variables relative to their length. It publishes no exact ratio, so this tool warns when there are fewer than three fixed words per variable. Reviewers also commonly reject two variables placed side by side, such as {{1}} {{2}}; merge them into one or put words between them.

Every variable needs a realistic sample value at submission. Reviewers read the samples to understand what the message really says, so "test" or "xxx" invites a rejection.

Source: Meta, Template review, https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-review.

Template rejected? Decode Meta's reason

Switch to the "Rejected? Paste Meta's reason" tab and paste the reason from WhatsApp Manager, Business Support Home, the rejection email or the message_template_status_update webhook. The tool recognises Meta's reason codes, such as INVALID_FORMAT, INCORRECT_CATEGORY, TAG_CONTENT_MISMATCH, PROMOTIONAL, SCAM and ABUSIVE_CONTENT, and the wording of the common causes in Meta's template review guide, then shows the likely cause and the fix.

A rejected template can be edited and resubmitted, or you can appeal in WhatsApp Manager after adding sample values; Meta says appeals are decided within 24 hours. A reason of NONE means the template was paused, not rejected.

Utility vs marketing vs authentication

Category drives both approval and price. Utility templates follow up on something the customer did or asked for, such as an order, booking, account change or alert, and must be non-promotional. Authentication templates carry one-time passcodes and use fixed wording from Meta. Everything else, including cart reminders, offers and re-engagement, is marketing.

Meta's categorization guidelines state that a template mixing utility and promotional content is marketing. Discount codes, sales offers, upselling, cart reminders and app download prompts all push a template into marketing. Meta periodically re-checks approved templates and moves utility templates that look promotional into the marketing category, usually with one day's notice.

The checker scans your wording in English, Arabic, French, Spanish, German and Portuguese for promotional terms and warns you before Meta recategorizes the template for you. Only authentication templates may send one-time passcodes, so it also flags OTP wording in other categories.

Source: Meta, Template categorization, https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-categorization.

Buttons: grouping, dynamic URLs and what customers see

Quick reply buttons and call-to-action buttons must be grouped: all quick replies before the other buttons, or all after them. A quick reply sandwiched between two links is rejected by the API.

A URL button can carry one variable, and it must sit at the end of the URL, for example https://shop.example.com/orders/{{1}}. Percent-encode the value you send (a space becomes %20). Avoid link shorteners: they hide the destination and look like spam.

When a template has more than three buttons, WhatsApp shows two and puts the rest behind "See all options". Templates with four or more buttons, or quick replies mixed with other buttons, cannot be viewed on WhatsApp desktop clients, so put the most important action first.

From preview to sending at scale

The exported JSON follows the request body of POST /<WABA_ID>/message_templates in the WhatsApp Business Management API, including example values. For media headers, upload a sample with the Resumable Upload API and replace the placeholder handle.

Once approved, you send the template by name and language with the real values for each variable. OmniChannels.ai manages templates across WhatsApp Business Accounts, tracks review status and quality, and sends approved templates through one REST API, campaigns or the shared inbox, with SMS fallback when WhatsApp isn't available.

WhatsApp template questions

What is the character limit for a WhatsApp template?

The body can hold up to 1,024 characters. A text header and the footer are limited to 60 characters each, and each button label to 25 characters. Authentication templates use Meta's fixed text, and their code parameter is limited to 15 characters.

Why was my WhatsApp template rejected?

The most common reasons are variable problems (not sequential, at the start or end of the body, special characters, too many for the message length), missing or unrealistic sample values, promotional content in a utility template, policy violations, and duplicating the wording of an existing template.

What do INVALID_FORMAT and INCORRECT_CATEGORY mean?

They are reason codes Meta sends when it rejects a template. INVALID_FORMAT means the structure breaks a formatting rule, usually in the variables, and comes with a detailed reason and recommendation. INCORRECT_CATEGORY, like TAG_CONTENT_MISMATCH, means the content does not match the category you chose. Paste either into the Rejected tab to see the fix.

What is the difference between a utility and a marketing template?

Utility templates confirm or update something the customer did or requested, such as an order, payment, booking or account change, and contain no promotion. Marketing templates promote products, offers or re-engagement. Mixing the two makes the template marketing, which is priced higher.

Can a variable be at the start or end of a template?

No. Meta rejects templates whose body starts or ends with a parameter. Write "Hi {{1}}, your order is ready." rather than "{{1}}, your order is ready" or "Your order number is {{1}}".

How many buttons can a WhatsApp template have?

Up to 10 buttons: at most 10 quick replies, 2 URL buttons, 1 phone number button and 1 copy code button. Quick replies must be grouped together, before or after the other buttons.

How do I add a dynamic link to a template button?

Add one variable at the very end of the URL, such as https://example.com/track/{{1}}, and provide a sample value. When you send the template, pass only the suffix, percent-encoded.

Can I send a WhatsApp template in Arabic?

Yes. Create the template with the language code ar and write the text in Arabic. Meta does not translate templates, so each language is a separate template under the same name, and each counts toward your template limit.

How long does WhatsApp template approval take?

Most templates are reviewed automatically within minutes. Meta says a template can stay in review for up to 24 hours. Templates that pass this checker avoid the most common automatic rejections.

More free tools