Guide

    WhatsApp Template Variables and Buttons: The Complete 2026 Guide (Limits, Types, Examples)

    How WhatsApp template variables and buttons work in 2026: named vs positional variables, sample values, button types and limits, headers, and examples.

    By Abbas Ali, Founder, WatsBerry6 min read

    WhatsApp Template Variables and Buttons: The Complete 2026 Guide (Limits, Types, Examples). Guide from WatsBerry.

    Quick answers

    What are variables in a WhatsApp template?
    Variables, called parameters in Meta's API, are placeholders in a template, such as a customer name or order number, that you fill in each time you send. They can be positional like {{1}} or named like {{order_id}}, and you must provide example values when you create the template.
    Should I use named or positional variables?
    Named variables such as {{customer_name}} are easier to read and less error-prone because values can be passed in any order. Positional variables like {{1}} must be numbered sequentially and filled in order. Meta supports both; positional is the default if you don't specify.
    How many buttons can a WhatsApp template have?
    Up to 10 buttons in total. Within that, up to 10 quick reply buttons, 2 URL buttons, 1 phone number button and 1 copy-code button. If a template has more than three buttons, WhatsApp shows two and puts the rest behind a 'See all options' button.

    Short answer

    Variables are placeholders you fill at send time. Write them as positional {{1}}, {{2}} or named {{customer_name}} (lowercase and underscores), and add a sample value for each when you submit. A template has a body (required, up to 1,024 characters). It can also have a header (text up to 60 characters with 1 variable, or image, video, document or location), a footer (60 characters) and up to 10 buttons: up to 10 quick replies, 2 URL, 1 phone and 1 copy-code button.

    Part 1: Variables (parameters)

    Named vs positional

    Positional Named
    Looks like {{1}}, {{2}} {{customer_name}}, {{order_id}}
    Rules Sequential numbers starting at 1 Unique, lowercase letters and underscores
    Order when sending Must match placeholder order Any order
    Default Yes, if you don't set a format Set parameter_format: named
    Best for Simple, short templates Teams, multiple languages, fewer mistakes

    Example (named):

    Thank you, {{first_name}}! Your order number is {{order_number}}.

    When you create this template, you provide examples like "Priya" and "WB-10234". When you send it, you pass the real values.

    Variable rules that cause rejections

    Meta's template review page lists these formatting failures:

    1. Missing or mismatched curly braces
    2. Special characters like #, $ or % inside the variable
    3. Non-sequential positional numbers ({{1}}, {{2}}, {{5}})
    4. Too many variables relative to the message length
    5. Starting or ending the template with a variable

    India tip: keep the currency symbol outside the variable: ₹{{amount}}, not {{₹amount}}. Format numbers the way your customers read them (₹1,499, not 1499.00).

    Where variables are allowed

    • Header (text): 1 variable
    • Body: multiple variables (keep it reasonable)
    • Footer: no variables (it's fixed text)
    • URL button: 1 variable, at the end of the URL
    • Copy-code button: the code is set at send time (up to 20 characters)
    • Authentication templates: parameters limited to 15 characters, and no URLs, media or emojis (see Meta's authentication templates guide)

    Part 2: Headers

    Header type Notes
    Text Up to 60 characters, 1 variable, no Markdown special characters
    Image / video / GIF / document Upload a sample through Meta's Resumable Upload API (your platform does this for you). The sample is reviewed.
    Location Generic map, set when sending. Utility or marketing only. Good for store locators and delivery points.

    Practical tips for Indian brands:

    • Use document headers for invoices or e-tickets in utility templates.
    • Use image headers for product launches in marketing templates.
    • Keep text readable on small screens. Many Indian users are on budget Android phones.

    Part 3: Buttons

    Button types and limits

    Button What it does Limit per template
    Quick reply Sends a fixed text back to you ("Confirm", "Reschedule", "Stop promotions") Up to 10
    URL Opens a link; supports 1 variable at the end Up to 2
    Phone number Calls a number 1
    Copy code Copies a coupon or code to clipboard 1
    Voice call Starts a WhatsApp call to the business See Meta's calling docs
    One-time password Copy-code or one-tap autofill, authentication templates only Per auth template rules
    Multi-product Opens up to 30 catalogue products in up to 10 sections Commerce templates

    Total: up to 10 buttons per template.

    Grouping and display rules

    • If you mix quick replies with other buttons, group them: all quick replies together, all other buttons together. Valid: Quick reply, Quick reply, URL, Phone. Invalid groupings return an API error.
    • With more than three buttons, WhatsApp shows two and hides the rest behind "See all options".
    • Templates with 4+ buttons, or a quick reply plus other button types, can't be viewed on WhatsApp desktop. Users are asked to open the message on their phone.
    • Button labels are short: 25 characters max for quick reply and URL labels.

    Button patterns that work

    Booking reminder (utility): Confirm / Reschedule (quick replies) + Get directions (URL)

    Order shipped (utility): Track order (URL with {{1}} = tracking ID)

    Festive offer (marketing): Shop now (URL) + Copy code (coupon) + Stop promotions (quick reply)

    Lead follow-up for real estate (marketing): Book site visit (quick reply) + Call sales (phone)

    Quick replies are powerful because the tap opens the 24-hour customer service window and lets your bot continue. Your replies in that window are service messages, charged per message after 1,000 free per number per month from October 1, 2026, per Meta's pricing page. Design flows that finish in a few taps.

    A complete example, end to end

    Template name: cod_confirm_v2 · Category: Utility · Language: English (en)

    • Header (text): Confirm your order
    • Body: Hi {{customer_name}}, you placed a cash on delivery order {{order_id}} for ₹{{amount}}. Please confirm so we can dispatch it within 24 hours.
    • Footer: Questions? Just reply here.
    • Buttons: Confirm order (quick reply) · Cancel order (quick reply) · View order (URL: https://yourstore.in/orders/{{1}})
    • Samples: Priya · WB-10234 · 1,499 · WB-10234

    Common mistakes checklist

    • Variables named in Hindi or with spaces ({{customer name}}): use customer_name
    • Sample values missing for header media or URL variable
    • Coupon inside a utility template (it becomes marketing)
    • Three URL buttons (max is two)
    • Footer with a variable (not allowed)
    • Authentication template with an emoji or link

    Where WatsBerry fits

    WatsBerry runs template campaigns and automations on the official WhatsApp Cloud API, triggered by Shopify events (order alerts, cart recovery) or by forms and Google Calendar bookings (reminders). Button replies land in the shared inbox or the next step of an automation. Meta bills WhatsApp usage to your own payment method (0% markup on Meta's per-message rates), and WatsBerry charges a separate platform plan (₹1,599 / ₹2,999 / ₹5,999 per month + GST).

    Next step

    If you're unsure how to map your store or booking data into variables, message me from watsberry.com with one template and I'll show you the cleanest structure. You can also join the waitlist for the 14-day free plan.

    Abbas Ali, Founder, WatsBerry

    Frequently asked questions

    What are variables in a WhatsApp template?

    Variables, called parameters in Meta's API, are placeholders in a template, such as a customer name or order number, that you fill in each time you send. They can be positional like {{1}} or named like {{order_id}}, and you must provide example values when you create the template.

    Should I use named or positional variables?

    Named variables such as {{customer_name}} are easier to read and less error-prone because values can be passed in any order. Positional variables like {{1}} must be numbered sequentially and filled in order. Meta supports both; positional is the default if you don't specify.

    How many buttons can a WhatsApp template have?

    Up to 10 buttons in total. Within that, up to 10 quick reply buttons, 2 URL buttons, 1 phone number button and 1 copy-code button. If a template has more than three buttons, WhatsApp shows two and puts the rest behind a 'See all options' button.

    Can a URL button have a variable?

    Yes. A URL button supports one variable, appended to the end of the URL, for example https://example.in/track/{{1}}. You provide an example value at creation and the real value when sending.

    Why does WhatsApp reject templates with variables at the start?

    Meta's review rules don't allow a template to start or end with a parameter (a dangling parameter). Add fixed text before and after, for example 'Hi {{customer_name}}, ...' and end with a full sentence.

    Sources

    Start 14-day free plan · Pricing · Features

    Ready to grow revenue on WhatsApp?

    Start a 14-day free plan. Join the waitlist for invite-only access. Broadcast, automate, recover carts, and support customers on official WhatsApp Business API.