Skip to main content

Components

Components are the building blocks of your WhatsApp Flow screens. Each component serves a specific purpose — displaying text, collecting input, showing images, or navigating between screens.

This page is a complete reference for every component type, organized by category.


Text components

Display text content on the screen. Text components are read-only — customers see them but don't interact with them.

Heading

Large, bold text for screen titles and section headers.

PropertyDetails
TextMax 80 characters
Visible whenOptional condition to show/hide

Subheading

Medium-weight text for sub-sections and secondary titles.

PropertyDetails
TextMax 80 characters
Visible whenOptional condition to show/hide

Body

Regular paragraph text. Supports markdown formatting (bold, italic, links).

PropertyDetails
TextMax 4,096 characters
Visible whenOptional condition to show/hide

Caption

Small, muted text for supplementary information and disclaimers. Supports markdown.

PropertyDetails
TextMax 409 characters
Visible whenOptional condition to show/hide

Rich Text

Formatted text with full markdown support. Use this when you need more control over text formatting.

PropertyDetails
TextMax 4,096 characters
Visible whenOptional condition to show/hide
📸
Screenshot: Text components in the flow builder showing Heading, Subheading, Body, Caption, and Rich Text on a screen
text-components.png
1. Add Heading, Body, and Caption components to a screen
2. Fill in sample text content
3. Capture the screen preview showing the text components
Save to: static/img/screenshots/developer-tools/whatsapp-flows/components/text-components.png

Media components

Display visual content on the screen.

Image

Show an image on the screen.

PropertyDetails
URLImage source URL — max 2,048 characters
Scale typecover (fills the area, may crop) or contain (fits entirely, may have whitespace)
WidthImage width
HeightImage height
Aspect ratioAlternative to width/height — maintains proportions
Max per screen3 images
Visible whenOptional condition to show/hide

An inline text link. Useful for "Terms & Conditions" or "Privacy Policy" links.

PropertyDetails
TextLink text — max 25 characters
URLLink destination
Max per screen2 links
Visible whenOptional condition to show/hide

A clickable list of items. Each item can trigger a navigation, data exchange, or data update action when tapped.

📸
Screenshot: Navigation List component showing a list of clickable items with titles and descriptions
navigation-list.png
1. Add a Navigation List component to a screen
2. Add 3-4 items with titles and descriptions
3. Capture the screen preview showing the list
Save to: static/img/screenshots/developer-tools/whatsapp-flows/components/navigation-list.png
PropertyDetails
LabelList header — max 80 characters
DescriptionOptional list description — max 300 characters
Items1–20 items
Max per screen2 navigation lists
Visible whenOptional condition to show/hide

Item properties

Each item in the list has:

PropertyMax charactersDescription
Image100 KBOptional image shown at the start of the item
Title30Main text shown to the customer
Description20Secondary text below the title
Metadata80Hidden value stored when the item is selected
End title10Optional text at the end of the item
Badge15Optional badge label — only one item per list can have a badge
Tags15 per tagOptional tags — up to 3 tags per item, 15 characters each

Item on-click actions

When a customer taps a navigation list item, one of these actions is triggered:

ActionDescription
NavigateMove to a specified screen
Data ExchangeSend data to your server and navigate based on the response
Update DataSend data to your server and update the current screen

Each action can include a payload with ${form.field} and ${item.id}, ${item.title}, or ${item.description} references.

Data sources

Navigation List items can be populated from different data sources:

SourceDescription
StaticManually entered items — you define each item's title, description, and metadata
Initial PayloadItems from the initial payload data sent when the flow opens
Screen DataItems populated dynamically by your server via data exchange

See Dynamic Data for details on configuring data sources.


Text answer components

Collect text and date input from customers.

Text Input (Short Answer)

A single-line input field for short text.

📸
Screenshot: Text Input components configured for name, email, and phone number
text-input.png
1. Add Text Input components configured for name (text), email (email), and phone (phone)
2. Capture the screen preview showing the input fields
Save to: static/img/screenshots/developer-tools/whatsapp-flows/components/text-input.png
PropertyDetails
NameField identifier — max 255 characters
LabelDisplay text — max 20 characters
Label variantdefault or floating — floating labels move above the field when focused (v7.0+)
Input typetext, number, email, password, passcode, phone (see below)
Helper textHint below the field — max 80 characters
Error messageCustom validation error message — max 30 characters
RequiredWhether the field must be filled
PatternRegex validation pattern (v6.2+)
Min charactersMinimum input length
Max charactersMaximum input length (default 80)
Initial valuePre-filled default value — supports dynamic references like ${data.name}
Visible whenOptional condition to show/hide
Enabled whenOptional condition to enable/disable

Input types

TypeKeyboardUse case
textStandardNames, addresses, general text
numberNumericQuantities, amounts, IDs
emailEmail (with @)Email addresses
passwordMasked inputOTPs, codes, sensitive data
passcodePIN-styleVerification codes
phonePhone dialerPhone numbers

Text Area (Paragraph)

A multi-line text input for longer content like comments, descriptions, or feedback.

PropertyDetails
NameField identifier — max 255 characters
LabelDisplay text — max 20 characters
Label variantdefault or floating — floating labels move above the field when focused (v7.0+)
Helper textHint below the field — max 80 characters
Error messageCustom validation error message
RequiredWhether the field must be filled
Max charactersMaximum input length (default 600)
Initial valuePre-filled default value — supports dynamic references like ${data.feedback}
Visible whenOptional condition to show/hide
Enabled whenOptional condition to enable/disable

Date Picker

A date selector that opens a calendar popup.

PropertyDetails
NameField identifier — max 255 characters
LabelDisplay text — max 40 characters
Min dateEarliest selectable date
Max dateLatest selectable date
Unavailable datesSpecific dates that cannot be selected
Helper textHint below the field
RequiredWhether the field must be filled
Visible whenOptional condition to show/hide
Enabled whenOptional condition to enable/disable

Calendar Picker

A visual calendar view for selecting dates. Supports single date or date range selection.

PropertyDetails
NameField identifier — max 255 characters
TitleCalendar header — max 80 characters
DescriptionAdditional text below the title — max 300 characters
Modesingle (one date) or range (start and end date)
LabelDisplay text — max 40 characters. In range mode, separate labels for start date and end date
Helper textHint below the field — max 80 characters. In range mode, separate helper text for start and end date
Error messageCustom validation error — max 80 characters. In range mode, separate messages for start and end date
RequiredWhether a date must be selected. In range mode, separate required settings for start and end date
Min dateEarliest selectable date
Max dateLatest selectable date
Unavailable datesSpecific dates that cannot be selected
Include daysFilter by weekday — only the specified days of the week are selectable (e.g., Mon–Fri only)
Min daysMinimum number of days in the selected range (range mode only)
Max daysMaximum number of days in the selected range (range mode only)
Initial valuePre-selected date — supports dynamic references like ${data.date}. In range mode, separate values for start and end date
On select actionOptional Data Exchange action triggered when a date is selected
Visible whenOptional condition to show/hide
Enabled whenOptional condition to enable/disable
info

Calendar Picker requires WhatsApp Flow JSON version 7.0 or later.


Selection components

Let customers choose from predefined options.

Radio Buttons (Single Choice)

A group of options where the customer can select one.

📸
Screenshot: Selection components showing Radio Buttons, Checkbox Group, and Dropdown on a screen
selection-components.png
1. Add Radio Buttons, Checkbox Group, and Dropdown to a screen
2. Configure each with sample options
3. Capture the screen preview showing all selection components
Save to: static/img/screenshots/developer-tools/whatsapp-flows/components/selection-components.png
PropertyDetails
NameField identifier — max 255 characters
LabelGroup label — max 30 characters
Options1–20 options
RequiredWhether a selection is required
ImagesOptional image for each option
Media sizeSmall, Medium, or Large (when images are used)
Data sourceStatic, Initial Payload, or Screen Data
Visible whenOptional condition to show/hide
Enabled whenOptional condition to enable/disable

Option properties

PropertyMax charactersDescription
Title30Main text for the option
Description300Additional details (optional)
Metadata20Hidden value stored when selected (optional)

Checkbox Group (Multiple Choice)

A group of options where the customer can select multiple.

PropertyDetails
NameField identifier — max 255 characters
LabelGroup label — max 30 characters
Options1–20 options
RequiredWhether at least one selection is required
Min selectedMinimum number of selections required
Max selectedMaximum number of selections allowed
ImagesOptional image for each option
Data sourceStatic, Initial Payload, or Screen Data
Visible whenOptional condition to show/hide
Enabled whenOptional condition to enable/disable

A single-select dropdown list. Supports more options than Radio Buttons.

PropertyDetails
NameField identifier — max 255 characters
LabelDisplay text — max 20 characters
Options1–200 options (100 when images are used)
RequiredWhether a selection is required
ImagesOptional image for each option
Data sourceStatic, Initial Payload, or Screen Data
Visible whenOptional condition to show/hide
Enabled whenOptional condition to enable/disable

Chips Selector

Tap-to-select chip buttons. Supports multi-select.

PropertyDetails
NameField identifier — max 255 characters
LabelDisplay text — max 80 characters
Options2–20 options
Chip titleMax 35 characters per chip
Multi-selectAllow multiple chips to be selected
Min selectedMinimum number of selections required
Max selectedMaximum number of selections allowed
On select actionOptional Data Exchange action triggered when a chip is selected
On unselect actionOptional Data Exchange action triggered when a chip is deselected
Data sourceStatic, Initial Payload, or Screen Data
Visible whenOptional condition to show/hide
Enabled whenOptional condition to enable/disable

Opt-In

A consent checkbox for terms, privacy policies, or marketing opt-ins.

PropertyDetails
NameField identifier — max 255 characters
LabelConsent text — max 120 characters
RequiredWhether the checkbox must be checked
Max per screen5 opt-in components
Visible whenOptional condition to show/hide
Enabled whenOptional condition to enable/disable

The footer is automatically added to every screen and cannot be deleted or reordered. It provides the main action button for each screen.

PropertyDetails
LabelButton text — max 35 characters
Left CaptionSmall text left of the button — max 15 characters
Center CaptionSmall text center below button — max 15 characters
Right CaptionSmall text right of the button — max 15 characters
Enabled whenOptional condition to enable/disable the button
ActionNavigate, Complete, Data Exchange, or Update Data
PayloadJSON object with ${form.field} references (for Navigate, Data Exchange, Update Data)

For details on footer actions and payloads, see Flow Builder — Footer component.


Component limits reference

Quick reference for all component limits:

ComponentMax per screenMax characters (label/text)Max options
Heading80
Subheading80
Body4,096
Caption409
Rich Text4,096
Image3
Embedded Link225
Navigation List28020 items
Text Input20
Text Area20
Date Picker40
Calendar Picker80 (title) / 40 (label)
Radio Buttons3020
Checkbox Group3020
Dropdown20200 (100 with images)
Chips Selector8020
Opt-In5120
Footer1 (auto)35