Rich, interactive messaging replaces free-text prompts with structured UI: rich cards and carousels present media with actions, suggested replies and quick-reply buttons offer tappable choices, and list pickers present a menu. RCS (via RBM) and WhatsApp both support these with different payloads and limits, so senders design to the stricter constraints and provide text fallbacks.
From free text to structured interaction
The value of rich channels over SMS is not just media — it is structured interaction. Instead of asking a customer to type "1 for track, 2 for support," an interactive message presents tappable elements: cards that combine an image, title, description and buttons; suggested replies that send a predefined response; and pickers that offer a bounded menu. Each tap returns a machine-readable value (a postback string, a button ID) rather than free text, so the sender's logic branches deterministically instead of parsing natural language. Both RCS Business Messaging and the WhatsApp Business Platform provide these elements, with different names, payload shapes and limits — so the design work is to express one interaction in each platform's vocabulary and constraints.
| Element | RCS (RBM) | |
|---|---|---|
| Single rich card | Standalone rich card | Media header + interactive body |
| Horizontal set of cards | Rich card carousel | Product list / multi-product (commerce) |
| Tappable quick choice | Suggested reply | Interactive reply buttons |
| Action (dial/URL/etc.) | Suggested action | URL / call-to-action button |
| Menu of options | (suggestions) | List message (list picker) |
Rich cards and carousels
A rich card bundles a media element (image or video), a title, a description and a set of suggestions into one visually prominent message — ideal for an order summary, a product, or a booking with a clear call to action. A carousel is a horizontally scrollable set of rich cards, used to present a small catalogue of options (a few products, a choice of appointment slots) in a single message. In RBM a standalone rich card carries a media height, title, description and its own suggestions; a carousel wraps several such cards with a card width. WhatsApp expresses comparable richness through media headers with interactive bodies and, for commerce, product and multi-product messages. Card counts, image sizes and text lengths are capped per platform, so a carousel is designed to the smaller of the two limits.
{
"contentMessage": {
"richCard": {
"standaloneCard": {
"cardOrientation": "VERTICAL",
"cardContent": {
"title": "Order #4021",
"description": "Arriving Friday. Track or change delivery.",
"media": { "height": "MEDIUM",
"contentInfo": { "fileUrl": "https://brand.example/pkg.jpg" } },
"suggestions": [
{ "reply": { "text": "Track", "postbackData": "track_4021" } },
{ "action": { "text": "Reschedule", "postbackData": "resched_4021",
"openUrlAction": { "url": "https://brand.example/r/4021" } } }
]
}
}
}
}
}Suggested replies, actions and quick-reply buttons
The simplest interactive element is a tappable chip. In RCS these are suggestions of two kinds: a suggested reply sends predefined text back to the agent with its postback data, and a suggested action performs a device action — dial a number, open a URL, open the map, create a calendar event, request location. WhatsApp's equivalent for a plain message is interactive reply buttons: up to three quick-reply buttons whose tap returns a button ID, plus URL and call buttons for actions. Both platforms bound the number and label length of these chips (RCS suggestions and WhatsApp's three-button limit), so an interaction with more than a few choices must use a list picker instead of buttons.
{
"messaging_product": "whatsapp",
"to": "15551234567",
"type": "interactive",
"interactive": {
"type": "button",
"body": { "text": "Your order #4021 has shipped. What next?" },
"action": { "buttons": [
{ "type": "reply", "reply": { "id": "track_4021", "title": "Track" } },
{ "type": "reply", "reply": { "id": "resched_4021", "title": "Reschedule" } },
{ "type": "reply", "reply": { "id": "support", "title": "Help" } }
] }
}
}List pickers for larger choice sets
When there are more options than a few buttons can hold, a list picker presents a scrollable menu. WhatsApp's list message shows a button that opens a list of rows grouped into sections, each row a title, optional description and an ID returned on selection — suited to a menu of services, time slots or FAQ topics that would overflow the three-button limit. RCS presents larger choice sets through multiple suggestions or a carousel of cards rather than a single native list widget, so a cross-channel design maps "choose one of many" to a WhatsApp list on WhatsApp and to a carousel or suggestion set on RCS. The interaction result is the same in both: a single selected ID the sender's logic acts on.
{
"type": "interactive",
"interactive": {
"type": "list",
"body": { "text": "Choose an appointment time" },
"action": {
"button": "View times",
"sections": [
{ "title": "Friday", "rows": [
{ "id": "fri_0900", "title": "09:00" },
{ "id": "fri_1330", "title": "13:30" } ] },
{ "title": "Saturday", "rows": [
{ "id": "sat_1000", "title": "10:00" } ] }
]
}
}
}UX and accessibility notes
Interactive messaging only helps if it degrades gracefully and remains usable to everyone. Because rich content is not universally reachable, every interactive message should carry a meaningful text body so it still makes sense when it falls back to SMS or renders on a client that cannot show the widget — the buttons may vanish, but the message must not become meaningless. Keep button and row labels short, unambiguous and action-led ("Track", not "Click here"), since long labels are truncated and vague ones fail screen readers. Respect each platform's caps (WhatsApp's three reply buttons, list row limits; RCS suggestion counts) rather than trying to exceed them. Provide alt/descriptive text for media where the platform supports it, avoid relying on colour or image alone to convey meaning, and make sure any action a button triggers is also reachable another way — so the interaction is convenient, not the only path.
| Guideline | Why |
|---|---|
| Always include a text body | Survives fallback to SMS and non-rich clients |
| Short, action-led labels | Truncation and screen-reader clarity |
| Stay within platform caps | Buttons/rows over the limit are rejected |
| Don't rely on colour/image alone | Accessibility for low-vision and fallback |
| Provide an alternate path to each action | Interaction is convenience, not the only route |
Frequently asked
What is a rich card?
A rich card is a structured message that bundles a media element (image or video), a title, a description and a set of tappable suggestions or buttons into one prominent message — for an order summary, product or booking. RCS calls it a standalone rich card; WhatsApp achieves comparable richness with a media header and interactive body.
What is a carousel?
A carousel is a horizontally scrollable set of rich cards presented in a single message, used to show a small set of options such as a few products or appointment slots. In RBM it wraps several rich cards; WhatsApp expresses similar multi-item richness through product and multi-product commerce messages. Card counts and sizes are capped per platform.
What is the difference between a suggested reply and a suggested action?
In RCS a suggested reply sends predefined text back to the agent with postback data, so the user picks a canned response. A suggested action performs a device action instead — dial a number, open a URL, open the map, create a calendar event or share location. WhatsApp's equivalents are reply buttons and URL/call buttons.
When should I use a list picker instead of buttons?
When there are more choices than a few buttons can hold. WhatsApp caps interactive reply buttons at three, so a menu of services, time slots or topics should use a list message — a button that opens grouped, scrollable rows, each returning an ID on selection. On RCS the same idea maps to multiple suggestions or a carousel.
How many buttons can a WhatsApp interactive message have?
A WhatsApp interactive message supports up to three quick-reply buttons, each returning a button ID when tapped. For more options you use a list message (list picker), which presents grouped rows behind a single button. Exceeding the button limit causes the message to be rejected, so larger choice sets must use a list.
How do I keep interactive messages accessible?
Always include a meaningful text body so the message survives fallback to SMS and non-rich clients; keep labels short and action-led; stay within each platform's button and row caps; don't rely on colour or image alone to convey meaning; provide media alt text where supported; and ensure every button action is also reachable another way.
Source specifications
The published standards this page is grounded in. Opens in a new tab.