Skip to main content
Each template button that needs a value at send time gets its own button component. index is the button’s zero-based position on the template, and sub_type is its type.
index counts every button on the template, including the ones you don’t send a component for. On a template with a static URL button at position 0 and a quick reply at position 1, the quick reply component uses "index": "1".

Dynamic URL button

Send only the variable part. If the template URL is https://example.com/track/{{1}}, sending abc123 opens https://example.com/track/abc123.

Quick reply buttons

Quick reply labels are fixed on the template. At send time you can attach a payload to each button. It comes back in the webhook when the customer taps the button, so you know which message and which option triggered the reply.
When the customer taps a template quick reply, your webhook receives a message with type: "button":
Template quick replies arrive as type: "button". Quick replies from an interactive button message arrive as type: "interactive" with button_reply. Handle both if you use both.

Copy code button

The coupon code is set per message, so each customer can get a different code. Maximum 15 characters.

Combining buttons

Send one component per button that needs a value, each with its own index. Order the components however you like — index decides which button each value belongs to.