- Templates
- Practitioner
- Developers
- Marketers
Template Buttons
Also called: Template button · Template button types · BUTTONS component · WhatsApp template CTA buttons · Template quick replies
The tappable actions a WhatsApp template can carry — quick reply, URL, call, copy-code, OTP, Flow and catalogue buttons — up to 10 per template.
Reviewed
What is a template button?
Template buttons are the action component of a WhatsApp message template. A template can carry up to 10 buttons in total, chosen from several types: quick reply buttons that send a short reply back to the business, URL buttons that open a web page, a phone number button that opens the dialler, a voice call button that starts a WhatsApp call, a copy-code button that puts a coupon on the clipboard, an OTP button for authentication templates, and special-purpose buttons that open a WhatsApp Flow, a catalogue or a multi-product message.
Each type has its own limits. Quick replies: up to 10. URL buttons: up to 2, each URL up to 2,000 characters with at most one variable, at the end. Phone number: 1, the number up to 20 characters. Copy code: 1. Button text is capped at 25 characters, and the voice call button's label at 20. Buttons must also form two contiguous groups — all quick replies together, all other buttons together — so quick reply, quick reply, URL, phone is valid while URL, quick reply, URL is rejected.
How buttons display matters as much as the rules. With more than three buttons, WhatsApp shows two and puts the rest behind a “See all options” button, and templates with four or more buttons, or quick replies mixed with another type, cannot be viewed on WhatsApp desktop — recipients are asked to open their phone. Template buttons are defined at creation and approved with the template. They are not the same as the reply buttons of a non-template interactive message, which allows 3 buttons and can only be sent inside an open customer service window.
Key takeaways
- Template buttons are the tappable actions a WhatsApp template carries, defined at creation and approved with the template.
- A template can have up to 10 buttons: up to 10 quick replies, 2 URL buttons, 1 phone number button and 1 copy-code button.
- Quick replies must form one contiguous group, separate from all other button types, or the template is rejected.
- With more than three buttons, WhatsApp shows two and hides the rest behind "See all options"; desktop cannot show such templates.
- Non-template interactive messages allow only 3 reply buttons and only inside an open customer service window.
Interactive stop
Every template button type, side by side
| Limit | Filled at send time | On tap | |
|---|---|---|---|
| Quick reply | |||
| URL | |||
| Phone number | |||
| Voice call | |||
| Copy code | |||
| OTP (authentication) | |||
| Flow | |||
| Catalogue / multi-product |
Hover, tap or arrow-key through the cells — a dot in the corner means there is a note.
Catalogue / multi-product by Limit
MPM: 30 items, 10 sectionsIn-chat experiences
Needs a catalogue connected to the WhatsApp Business Account.
Legend — press one to highlight its cells
Row 8 of 8. Catalogue / multi-product × Limit: MPM: 30 items, 10 sections. Needs a catalogue connected to the WhatsApp Business Account.
How does a template button work?
Pick the action, then the type
Answer in the chat: quick reply. Open a page: URL. Speak to someone: phone number or voice call. Use a code: copy code for a coupon, an OTP button for authentication. Fill in a form or book a slot: Flow.
Define buttons at creation
Add a
BUTTONScomponent with abuttonsarray. Each entry has atypeandtext; URL buttons addurl(plus anexamplewhen the URL has a variable), phone buttonsphone_number, copy-code buttons anexamplecode.Order them in two groups
Keep all quick replies together and all other buttons together, and put the action most people need first, since only two may show inline.
Fill dynamic parts at send time
In the send request, add a
buttoncomponent per dynamic button with itssub_type(url,quick_reply,copy_code,flow) and zero-basedindex, then its parameter: a URL suffix, a quick-replypayload, acoupon_codeor a Flow token.Handle the taps
Quick-reply taps arrive on your webhook as inbound
buttonmessages carrying the payload you set; URL clicks appear in template analytics; Flow responses arrive asnfm_replyinteractive messages.
A template button: key facts and limits
- Buttons per template
- Up to 10
- Quick reply
- Up to 10
- URL
- Up to 2; 2,000 characters; 1 variable at the end
- Phone number
- 1; number up to 20 characters
- Copy code
- 1; code up to 20 characters
- Button text
- 25 characters (voice call label 20)
- Shown inline
- Up to 3; more puts the rest behind “See all options”
- Non-template reply buttons
- 3, inside the service window only
A template button in code
{"type": "BUTTONS","buttons": [{ "type": "QUICK_REPLY", "text": "Confirm" },{ "type": "QUICK_REPLY", "text": "Reschedule" },{ "type": "URL", "text": "View booking","url": "https://book.example.in/b/{{1}}","example": ["https://book.example.in/b/APPT-8812"] },{ "type": "PHONE_NUMBER", "text": "Call the salon", "phone_number": "+912240001234" }]}
Quick replies first, then the other buttons: two contiguous groups. Four buttons means two show inline.
Common mistakes with a template button
Breaking the two groups
URL, quick reply, URL is rejected because quick replies must sit together. Order buttons as all quick replies, then all other types (or the reverse).
Hiding the main action
With four or more buttons only two show inline and desktop users cannot view the message at all. Keep important templates to three buttons, with the main action first.
Putting the variable mid-URL
A URL button allows one variable and only at the end. Use a short path on your own domain, such as
/b/{{1}}, and resolve query parameters on your server.Confusing template buttons with reply buttons
Non-template interactive messages allow 3 reply buttons and work only inside the customer service window; templates allow 10 and can start a conversation. Pick the format for the situation, not the button count.
Sending quick replies without payloads
Without a payload you only get the button text back, which cannot tell you which booking or order was meant. Set a payload per send that identifies the record.
Best practices for a template button
- Start labels with a verb and keep them well under 25 characters so they never truncate.
- Use payloads that carry the record ID (
CONFIRM_APPT_8812), not just the choice. - Add UTM tags to URL-button links so clicks can be attributed beyond template analytics.
- Test every template with four or more buttons on a phone, because desktop recipients cannot view it.
Example: A salon reminder with three taps
A Mumbai salon's appointment reminder carries quick replies “Confirm” and “Reschedule” and a phone number button “Call the salon”. Confirm taps arrive on the webhook with the payload CONFIRM_APPT_8812 and mark the booking confirmed; Reschedule taps route the chat to the front desk, where staff reply inside the service window the tap has just opened. With three buttons nothing hides behind “See all options”, but because quick replies are mixed with a call button, desktop users are asked to open their phone — a trade-off the salon accepts for a reminder most people read on mobile anyway.
Why does a template button matter?
Buttons turn a message into an action — tracking an order, paying, confirming an appointment, copying a code — and they are where most measurable engagement happens, since template analytics count clicks per button. Choosing the right type and the right number decides whether the customer acts in one tap or has to hunt behind “See all options” or switch devices. For developers, button payloads and indexes are what connect a tap back to the right record.
Template Buttons FAQs
How many buttons can a WhatsApp template have?+
Can I mix quick replies and URL buttons?+
Why does my template show only two buttons?+
Does a quick-reply tap open the customer service window?+
Talk to InfiQ
From definition to your first message
InfiQ is an official Meta Business Partner. Start a 7-day free trial — no card needed — and see this running on your own number.