Message Blocks
Message blocks are the nodes you use to send messages to your customers during a flow. The available message types depend on the flow's channel — some are available on all channels, while others are channel-specific.
| # | Message type | Channels | Best for |
|---|---|---|---|
| 1 | Text Message | All | Simple text replies |
| 2 | Media Message | All | Images, videos, documents |
| 3 | Interactive Buttons | All | Quick choices (up to 3 options) |
| 4 | Question | All | Collecting customer input |
| 5 | Template Message | Messages outside the 24-hour window | |
| 6 | List Menu | Menus with many options | |
| 7 | Location Request | Collecting customer location | |
| 8 | Single Product Message (SPM) | Showcasing one product | |
| 9 | Multi-Product Message (MPM) | Product collections | |
| 10 | WhatsApp Flow | Interactive forms and surveys | |
| 11 | Carousel | Messenger, Instagram | Swipeable card collections |
| 12 | Reply Comment | Messenger, Instagram | Replying to post comments |
1. Text Message
Sends a simple text message to the customer. This is the most basic message type — perfect for greetings, confirmations, and short replies.
2. Click it to open the configuration panel
3. Type a message with a variable like {{customer_name}}
4. Capture the configuration panel
Save to:
static/img/screenshots/chatbot-flows/message-blocks/text-message-config.pngConfiguration
| Setting | Description |
|---|---|
| Message text | The text content to send. Supports variables and the Expression Builder. |
Character limit: 4,096 characters (WhatsApp limit)
Using variables
Click the code icon (</>) next to the message field to open the Expression Builder. You can insert variables from previous nodes, contact data, or system values directly into the message.
Example: "Hi {{customer_name}}, thanks for reaching out! How can we help you today?"
Use cases
- Welcome messages — Greet the customer by name when the flow starts
- Simple responses — Provide quick answers like business hours or an address
- Confirmations — "Your request has been received. We'll get back to you shortly."
2. Media Message
Sends an image, video, or document file to the customer. Use this when you need to share visual content or files. Available on all channels.
2. Click it to open the configuration panel
3. Select "Image" as the media type
4. Click Browse to open the File Manager or paste a URL
5. Add a caption
6. Capture the full configuration panel
Save to:
static/img/screenshots/chatbot-flows/message-blocks/media-message-config.pngConfiguration
| Setting | Description |
|---|---|
| Media type | Choose between Image, Video, or Document |
| Media URL | The link to the media file — paste a URL or click Browse to select from the File Manager |
| Caption | Optional text below the media (up to 1,024 characters). Supports variables. |
| Filename | Only for documents — the name the customer sees when downloading the file |
Supported formats and size limits
| Media type | Supported formats | Maximum size |
|---|---|---|
| Image | JPEG, PNG | 5 MB |
| Video | MP4, 3GPP | 16 MB |
| Document | PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT | 100 MB |
Click the Browse button next to the URL field to open the File Manager. You can upload files from your computer or select previously uploaded files without needing to manage URLs manually.
Use cases
- Product images — Send a photo of the product the customer asked about
- Instruction videos — Share a how-to video for your product or service
- PDF brochures — Send a catalog, price list, or user guide as a document
- Invoices — Send an invoice PDF after an order is confirmed
3. Template Message
This message type is only available for WhatsApp flows.
Sends a pre-approved WhatsApp template message. This is the only message type that works outside the 24-hour messaging window — making it essential for proactive outreach and follow-ups.
2. Click it to open the configuration panel
3. Select a template from the list
4. Map the template parameters to flow variables
5. Capture the full configuration panel showing the template workflow
Save to:
static/img/screenshots/chatbot-flows/message-blocks/template-message-config.pngConfiguration
The Template Message uses a step-by-step workflow to configure your template:
| Step | What you do |
|---|---|
| Select template | Choose from your approved WhatsApp templates |
| Select language | Pick the template language |
| Map parameters | Connect flow variables to template parameters (e.g., map {{customer_name}} to the template's {{1}} placeholder) |
| Preview | See how the final message will look |
Quick-reply button payloads
If your template has Quick Reply buttons, you can set a Custom payload for each (with {{variables}}, e.g. approve_{{request_id}}) — the value sent back when the customer taps it. As with interactive messages, the template node also has a Wait for user reply toggle: turn it off when the buttons are handled by a separate Button Click trigger flow, so the sending flow doesn't block.
You can customize a quick-reply button's payload, but not its label — WhatsApp fixes button text when the template is approved. Only the returned payload (and a dynamic URL suffix for URL buttons) can be set at send time.
When to use
- Customer hasn't messaged you in the last 24 hours — Regular messages (text, media, interactive) only work within the 24-hour window. Templates work anytime.
- Standardized messages — Order confirmations, appointment reminders, shipping updates, and other messages that follow an approved format.
- Webhook-triggered flows — When an external system triggers the flow, the customer likely hasn't messaged recently, so you need a template.
WhatsApp requires businesses to use approved templates for outbound messages outside the 24-hour window. Regular text, media, and interactive messages only work within the window. If your flow might run outside this window (which is common for webhook and manual triggers), always use a Template Message.
Use cases
- Order updates — "Your order #
{{order_id}}has been shipped! Track it here:{{tracking_link}}" - Appointment reminders — "Hi
{{customer_name}}, your appointment is tomorrow at{{appointment_time}}" - Follow-up messages — Re-engage customers who haven't replied in a while
4. Interactive Buttons
Sends a message with up to 3 clickable buttons. When the customer taps a button, the flow continues along the path connected to that button. This is the best way to give customers quick choices.
2. Click it to open the configuration panel
3. Set the action type to "Buttons"
4. Add a header (text or image)
5. Type the body text
6. Add 3 buttons with labels
7. Capture the full configuration panel
Save to:
static/img/screenshots/chatbot-flows/message-blocks/interactive-buttons-config.pngConfiguration
| Setting | Description | Limit |
|---|---|---|
| Header | Optional — choose None, Text, Image, Video, or Document | 60 characters for text headers |
| Body text | The main message content. Supports variables. | 1,024 characters |
| Footer | Optional small text below the message | 60 characters |
| Buttons | 1 to 3 quick reply buttons | 20 characters per button label |
You can add an image, video, or document as the message header. This is useful for sending a product image with action buttons below it, or a video with "Watch More" / "Not Interested" options.
How buttons work
Each button you add creates a separate output on the node in the flow builder. You connect each output to a different next node, so the flow takes a different path depending on which button the customer taps.
┌──────────────────────┐
│ Interactive Buttons │
│ │
│ "How can we help?" │
└──┬───────┬───────┬───┘
│ │ │
[Sales] [Support] [Track]
│ │ │
▼ ▼ ▼
Sales Support Order
Flow Flow Lookup
By default, button IDs are auto-generated — you only set the label (what the customer sees) and connect each button to a next node on the canvas.
Custom payloads
Turn on Custom payload to set the exact value that's sent back when a button is tapped. Payloads support variables, so they can carry data — for example a payload of approve_{{request_id}} is sent as approve_REQ123.
Use custom payloads when:
- A separate flow handles the click. A Button Click trigger (e.g. Starts With
approve_) catches the payload and can extract the dynamic part — ideal for approvals. - You need the value downstream. The clicked payload is available as
{{_last_button_payload}}in the next nodes (see Variables).
Leave Custom payload off when the button simply branches to a next node on the same canvas — the auto-generated ID handles that.
Wait for reply
The Wait for user reply toggle (on by default) controls what happens after the message is sent:
- On — the flow pauses and waits for the customer to tap a button, then follows that button's path.
- Off — the flow sends the message and continues immediately (or ends). Turn this off when the buttons are handled by a separate Button Click trigger flow (e.g. approvals), so the sending flow doesn't sit waiting and block other interactions.
Use cases
- Yes/No confirmations — "Would you like to proceed?" → Yes / No
- Menu selections — "What are you looking for?" → Sales / Support / Billing
- Quick actions — "Your order is ready!" → Confirm / Reschedule / Cancel
- Approvals — Send a request with an "Approve" button (custom payload
approve_{{request_id}}, Wait for reply off) handled by a separate Button Click trigger flow
5. List Menu
This message type is only available for WhatsApp flows.
Sends a message with a dropdown list that customers can browse and select from. Lists support sections with multiple items — ideal when you have more options than 3 buttons can handle.
2. Set the action type to "List"
3. Type the body text and button text
4. Add sections with rows
5. Add titles and descriptions for each row
6. Capture the full configuration panel
Save to:
static/img/screenshots/chatbot-flows/message-blocks/list-menu-config.pngConfiguration
| Setting | Description | Limit |
|---|---|---|
| Header | Optional text header | 60 characters |
| Body text | The main message content. Supports variables. | 4,096 characters |
| Footer | Optional footer text | 60 characters |
| Button text | The text on the dropdown button (what the customer taps to open the list) | 20 characters |
| Sections | Groups of related list items | Up to 10 sections |
| Rows | Individual items within each section | Up to 10 total rows |
Each row has:
| Field | Description | Limit |
|---|---|---|
| Title | The item name the customer sees | 24 characters |
| Description | Optional details shown below the title | 72 characters |
List menus only support text headers — unlike buttons, you cannot add images, videos, or documents as a header for list messages. This is a WhatsApp limitation.
Like reply buttons, list rows support a Custom payload (with {{variables}}) and the message supports the Wait for user reply toggle — see Custom payloads and Wait for reply above. The selected row's payload is available downstream as {{_last_row_payload}}.
How list selection works
Like buttons, each row creates a separate output on the node. When the customer selects a row, the flow follows the path connected to that row.
┌─────────────────────┐
│ List Menu │
│ │
│ "Choose a service:" │
│ [View Options ▼] │
└──┬──┬──┬──┬──────────┘
│ │ │ │
[Haircut][Color][Facial][Massage]
│ │ │ │
▼ ▼ ▼ ▼
... different flows ...
Use cases
- Department selection — List departments: Sales, Support, Billing, Returns, General Inquiry
- Product categories — Browse product categories with descriptions
- Service menus — Show available services with prices in descriptions
- Appointment types — Let customers pick the type of appointment they need
6. Location Request
Sends an interactive message that asks the customer to share their location. When the customer taps the button, WhatsApp opens the location picker so they can send their current or a selected location.
2. Set the action type to "Location Request"
3. Type the body text asking for the location
4. Capture the configuration panel
Save to:
static/img/screenshots/chatbot-flows/message-blocks/location-request-config.pngConfiguration
| Setting | Description | Limit |
|---|---|---|
| Body text | The message asking the customer for their location. Supports variables. | 1,024 characters |
When the customer shares their location, it becomes available as a variable for use in subsequent nodes — for example, to find the nearest store or calculate delivery distance.
Use cases
- Nearest store finder — "Share your location and we'll find the nearest store for you!"
- Delivery address — "Please share your delivery location so we can calculate shipping"
- Service area check — "Share your location to check if we deliver to your area"
7. Question
Sends a question and waits for the customer to type a reply. The customer's answer is saved as a variable that you can use in any later node in the flow.
2. Click it to open the configuration panel
3. Type a question like "What is your name?"
4. Enter a variable name like "customer_name"
5. Capture the full configuration panel including the preview
Save to:
static/img/screenshots/chatbot-flows/message-blocks/question-config.pngConfiguration
| Setting | Description |
|---|---|
| Question text | The question to send to the customer. Supports variables. |
| Save to variable | The variable name where the customer's answer will be stored |
How it works
- The flow sends the question text to the customer
- The flow pauses and waits — no further nodes execute until the customer replies
- When the customer replies, their response is saved to the variable you specified
- The flow continues to the next connected node
- All subsequent nodes can now use the saved variable
The saved variable can be used anywhere in the flow by referencing {{variable_name}}. For example, if you save the answer to customer_name, you can use {{customer_name}} in any later message or condition. In the next node, click the code icon (</>) on any text field to open the Expression Builder — the variable will appear in the Variables tab under Scenario Variables.
Like the WhatsApp Flow node, the Question node is a waiting node — it pauses the flow until the customer responds. For more details on how waiting nodes work and how their responses become available, see Nodes that wait for customer input.
Preview
The configuration panel includes a preview section at the bottom that shows how the question and expected response will look in the conversation.
Use cases
- Collecting names — "What is your name?" → Save to
customer_name - Getting email addresses — "Please share your email address:" → Save to
email - Order lookup — "What is your order number?" → Save to
order_id - Feedback — "How would you rate our service? (1-5)" → Save to
rating - Budget collection — "What is your budget range?" → Save to
budget
You can add multiple Question nodes in sequence to collect several pieces of information — like name, email, and phone number — one after another. Each answer is saved to a different variable.
8. Single Product Message (SPM)
This message type is only available for WhatsApp flows.
Sends a single product from your WhatsApp catalog. The product image, name, price, and details are pulled directly from your catalog — you just select the product.
2. Click it to open the configuration panel
3. Select a product from the catalog picker (showing image, name, price, and SKU)
4. Add body text and optional footer
5. Capture the full configuration panel
Save to:
static/img/screenshots/chatbot-flows/message-blocks/spm-config.pngConfiguration
| Setting | Description |
|---|---|
| Product | Select a product from your WhatsApp catalog. The picker shows the product image, name, price, and SKU. |
| Body text | Optional message text to accompany the product (up to 1,024 characters). Supports variables. |
| Footer | Optional footer text |
How it works
- You select a product from your catalog using the product picker
- The product's image, name, price, and description are pulled automatically from the catalog
- The customer receives a rich product card with a "View" button
- Tapping the card shows the full product details inside WhatsApp
Use cases
- Product recommendations — "Based on your interest, here's our top pick:"
- Back in stock alerts — "Great news! This product is back in stock:"
- Featured product — "Product of the day:" → Send one highlighted product
- Order-related — Show the specific product a customer asked about
9. Multi-Product Message (MPM)
This message type is only available for WhatsApp flows.
Sends multiple products organized into sections. Customers can browse products, view details, and add items to their cart directly in WhatsApp.
2. Click it to open the configuration panel
3. Add a header and body text
4. Create product sections and add products to each
5. Capture the full configuration panel showing the product builder
Save to:
static/img/screenshots/chatbot-flows/message-blocks/mpm-config.pngConfiguration
| Setting | Description | Limit |
|---|---|---|
| Header | Header text for the message | — |
| Body text | The main message content. Supports variables. | 1,024 characters |
| Footer | Optional footer text | — |
| Sections | Product groups — each section has a title and products | Up to 10 sections |
| Products per section | Products within each section | Up to 30 products total |
| Section title | The name of each product group | 24 characters |
How it works
- You create sections (e.g., "Bestsellers", "New Arrivals", "On Sale")
- Within each section, you pick products from your catalog
- The customer receives a message with a "View Products" button
- Tapping it opens a browsable product list organized by your sections
- The customer can view product details, select quantities, and add items to cart
Use cases
- Product collections — "Here are this week's featured products:" with sections for each category
- Deals of the week — Group discounted products by discount percentage or category
- Category browsing — Let customers browse your catalog by category (Electronics, Clothing, Home, etc.)
- Seasonal offerings — "Summer Collection" with sections like Tops, Bottoms, Accessories
10. WhatsApp Flow
This message type is only available for WhatsApp flows.
Sends an interactive form (WhatsApp Flow) that customers fill out directly inside WhatsApp. Forms can include text inputs, dropdowns, date pickers, checkboxes, and more — all within the WhatsApp chat.
Important: After sending the form, the chatbot flow pauses and waits for the customer to fill and submit the form. Only after submission does the flow continue to the next node — and the submitted data becomes available as variables.
2. Click it to open the configuration panel
3. Select a WhatsApp Flow from the dropdown
4. Configure the CTA button text, header, body, and footer
5. Set the flow mode and flow action
6. Scroll to the response mapping section
7. Capture the full configuration panel
Save to:
static/img/screenshots/chatbot-flows/message-blocks/whatsapp-flow-config.pngConfiguration
| Setting | Description | Limit |
|---|---|---|
| WhatsApp Flow | Select a WhatsApp Flow from the dropdown. Only published flows are available. | — |
| CTA button text | The text on the button the customer taps to open the form (e.g., "Open Form", "Book Now") | 20 characters |
| Header | Optional header text | — |
| Body text | Introduction text explaining what the form is for | — |
| Footer | Optional footer text | — |
Flow mode
| Mode | Description |
|---|---|
| Draft | Opens the flow in preview/test mode — useful for testing before publishing |
| Published | Opens the live, published version of the flow |
Flow action
| Action | Description |
|---|---|
| Navigate | Opens the WhatsApp Flow at a specific screen. You can pass initial data to pre-fill form fields. |
| Data Exchange | Opens the flow and allows it to send/receive data dynamically during the interaction. This is the action that enables response mapping. |
Initial data (Navigate action)
When using the Navigate action, you can pass data to the WhatsApp Flow to pre-fill form fields. This is useful when you already have some information from earlier in the chatbot flow (like the customer's name or order number) and want to auto-fill those fields in the form.
You can use session variables in the data fields — for example, {{session.contact_name}}, {{session.phone_number}}, or any other session variable from previous nodes.
2. Scroll to the Initial Data Configuration section
3. Show session variable examples in the data fields
4. Capture the initial data section
Save to:
static/img/screenshots/chatbot-flows/message-blocks/whatsapp-flow-initial-data.pngResponse mapping (Data Exchange action)
When using the Data Exchange action, you can map the form field values submitted by the customer to session variables. This is how the form data becomes available to subsequent nodes in your flow.
The Response Mapping section lets you add mappings, each with:
- Flow Field — the name of the form field from the WhatsApp Flow (e.g.,
full_name,email) - Session Variable — the variable name where the value will be saved (e.g.,
customer_name,customer_email)
| Flow field | → | Session variable |
|---|---|---|
full_name | → | customer_name |
email | → | customer_email |
preferred_date | → | appointment_date |
2. Scroll to the Response Mapping section
3. Add 2-3 mappings (e.g., full_name → customer_name, email → customer_email)
4. Capture the response mapping section showing the field-to-variable mappings
Save to:
static/img/screenshots/chatbot-flows/message-blocks/whatsapp-flow-response-mapping.pngHow it works end-to-end
Here's the complete flow of how a WhatsApp Flow node works with response mapping:
- The chatbot sends the form to the customer with a CTA button (e.g., "Fill Form")
- The flow pauses — it waits for the customer to open and submit the form
- The customer taps the button, fills out the form fields, and submits
- The submitted values are saved to session variables based on your response mapping
- The flow continues to the next connected node
- The next node (and all subsequent nodes) can now use those variables
Using the responses in the next node:
After the customer submits the form, the mapped variables are available in the Expression Builder. In any subsequent node, click the code icon (</>) on a text field, go to the Variables tab, and you'll see the mapped variables listed. Click any variable to insert it.
For example, after the form is submitted, you can use {{customer_name}} in the next Message node to say: "Thanks {{customer_name}}, your booking is confirmed!"
For a detailed explanation of how waiting nodes, response variables, and the Expression Builder work together, see Nodes that wait for customer input.
Use cases
- Appointment booking — Customer selects a date, time, and service type in a form → Flow waits → Customer submits → Flow sends confirmation with
{{appointment_date}} - Lead capture — Customer fills in name, email, phone, and requirements → Flow waits → Customer submits → Flow routes to the right team based on
{{requirements}} - Customer surveys — Multi-question feedback form → Flow waits → Customer submits → Flow thanks the customer and saves responses
- Registration forms — Event or service registration with multiple fields → Flow waits → Customer submits → Flow sends confirmation email
Only published WhatsApp Flows appear in the dropdown. If your flow isn't showing up, make sure it's been published first in the WhatsApp Flows section.
11. Carousel
This message type is only available for Messenger and Instagram flows.
Sends a swipeable collection of cards, each with an image, title, subtitle, and action buttons. Carousels are the Messenger/Instagram equivalent of multi-product messages — great for showcasing products, services, or options in a visually appealing format.
2. Add a Carousel node to the canvas
3. Click it to open the configuration panel
4. Add 2-3 cards with images, titles, subtitles, and buttons
5. Capture the full configuration panel
Save to:
static/img/screenshots/chatbot-flows/message-blocks/carousel-config.pngConfiguration
| Setting | Description | Limit |
|---|---|---|
| Cards | Individual cards in the carousel — each card has its own content and buttons | Up to 10 cards |
Each card has:
| Field | Description | Limit |
|---|---|---|
| Image URL | The image shown at the top of the card — paste a URL or click Browse to select from the File Manager | — |
| Title | The card's headline text | 80 characters |
| Subtitle | Additional text below the title | 80 characters |
| Buttons | Action buttons on the card — each button can be a Web URL (opens a link) or Postback (triggers a flow action) | Up to 3 buttons per card |
How buttons work
Each Postback button creates a separate output on the node in the flow builder. When a customer taps a postback button, the flow continues down the path connected to that button — just like Interactive Buttons.
Web URL buttons simply open a link in the customer's browser and do not create flow outputs.
Use cases
- Product showcase — Display 3–5 products with images, names, prices, and "Buy Now" buttons
- Service menu — Show available services (e.g., "Haircut", "Color", "Facial") with images and "Book Now" postback buttons
- Content highlights — Share blog posts, articles, or videos with "Read More" URL buttons
- Plan comparison — Show pricing plans side by side with "Choose Plan" postback buttons
12. Reply Comment
This message type is only available for Messenger and Instagram flows, and only appears when the flow uses a Post Comment trigger.
Replies directly to the customer's comment on your Facebook or Instagram post. While other message nodes send a private DM, this node posts a public reply to the comment on the post itself.
2. Add a Reply Comment node to the canvas
3. Click it to open the configuration panel
4. Type a reply message
5. Capture the configuration panel
Save to:
static/img/screenshots/chatbot-flows/message-blocks/reply-comment-config.pngConfiguration
| Setting | Description |
|---|---|
| Reply text | The text to post as a reply to the comment. Supports variables. |
How it works
- A customer comments on your post (triggering the Post Comment trigger)
- The flow reaches the Reply Comment node
- The system posts a public reply to that comment on the post
- The flow continues to the next node
Combining with DM messages
A common pattern is to use Reply Comment alongside a regular Text Message or Carousel node:
Post Comment Trigger
↓
Reply Comment: "Thanks for your interest! Check your DMs 📩"
↓
Text Message (DM): "Here's the exclusive link you asked for: ..."
This way, the customer gets a visible reply on the post and a private message with more details.
Use cases
- Acknowledgment — "Thanks for your comment! We've sent you a DM with more info."
- Contest replies — "You're entered! Check your DMs for confirmation."
- Engagement boost — Reply publicly to increase post visibility, then follow up via DM
Quick reference
| # | Message type | Channels | Best for | Key limit |
|---|---|---|---|---|
| 1 | Text Message | All | Simple text replies | 4,096 characters |
| 2 | Media Message | All | Images, videos, documents | 5 MB image, 16 MB video, 100 MB document |
| 3 | Interactive Buttons | All | Quick choices (2–3 options) | 3 buttons, 20 char labels |
| 4 | Question | All | Collecting typed input | Answer saved to variable |
| 5 | Template Message | Messages outside the 24-hour window | Must be pre-approved | |
| 6 | List Menu | Menus with many options | 10 sections, 10 rows total | |
| 7 | Location Request | Collecting customer location | — | |
| 8 | SPM | Single product showcase | 1 product from catalog | |
| 9 | MPM | Product collections | 10 sections, 30 products total | |
| 10 | WhatsApp Flow | Interactive forms and surveys | Must be published first | |
| 11 | Carousel | Messenger, Instagram | Swipeable card collections | 10 cards, 3 buttons per card |
| 12 | Reply Comment | Messenger, Instagram | Replying to post comments | Post Comment trigger required |
All message types support {{variable_name}} to insert dynamic content. Click the code icon (</>) next to any text field to open the Expression Builder, where you can browse and insert variables from previous nodes, contact data, and system values.