Chatbot Builder
Every block your flow needs, on one canvas.
Drag blocks onto a canvas and connect them. Send any WhatsApp message type, collect validated answers, branch on what you learn, call your own systems, take payment, route to a person — and hand the hard turns to an AI agent when a script is not enough.
Start
Group #1
Group #2
Group #3
Group #4
Group #5
Messages
Choices
Inputs
Logic
Integrations
Most builders run out of blocks halfway through
The first two screens are easy anywhere. Then you need a validated email, a live order lookup, a payment link that confirms itself, a round-robin assignment that skips whoever is offline, and a carousel built from your own API — and the tool you picked can do three of those. So the flow becomes a handoff to a human far earlier than it needed to.
What you get
Every message type WhatsApp supports
Text, image, video, YouTube, file, audio, location, contact cards, links and call buttons — plus catalogue and product messages for selling in the thread.
Answers you can trust
Ask with quick replies, lists or carousels, and collect typed input — email, number, date, phone, file, location — validated before the flow moves on.
Connected to your systems
Call any REST API with the values you collected, save the response into variables, pause on an incoming webhook, and read or write Google Sheets, your CRM, email and thousands of apps through Zapier, Make and Pabbly.
AI where a script runs out
Drop in an AI agent block for open-ended turns, open a native WhatsApp Flow for a form-like step, or place an outbound voice call — all inside the same flow.
Text
Image
Location
Northbridge Store
Al Wasl Road, Dubai
Contact card
Alex Morgan
Sales · +971 4 555 0198
Call button
Product
Linen Shirt — Navy
AED 249
Every block accepts variables, so the copy is personalised without extra branches.
Send anything WhatsApp can carry
A flow is not only text. Send media with a caption, drop a pin, share a contact card, offer a tappable call button, or push a product straight from your catalogue — each one a block you place on the canvas and fill in.
- Text, image, video, YouTube, file and audio
- Location pins, contact cards, links and call buttons
- Catalogue, single product and product set messages
Quick reply
List
Pick a topic from the list.
Carousel
Linen Shirt
AED 249
Canvas Tote
AED 89
Ask in a way people answer
Open questions get vague answers. Quick replies, lists and carousels give the customer something to tap, which keeps the flow on a path you designed. When the options depend on live data, build them from an API response instead of hard-coding them.
- Quick replies, lists, list v2 and carousels
- Options can be generated from an API response at runtime
- Each choice routes to its own branch on the canvas
james.carter@Not a valid email — asked again
james.carter@northbridge.coSaved to {{email}}
about fourNot a number — asked again
12 Oct 2026Saved to {{visit_date}}
Saved values are available to every block that follows.
Collect answers that are actually usable
An input block knows what it is asking for. An email field rejects something that is not an email, a number field refuses text, a date field returns a real date. The customer is asked again rather than the flow continuing with a value nothing downstream can use.
- Text, number, email, website, date, time, phone, file and location
- Invalid answers trigger a retry, not a broken branch
- Every answer is saved to a variable or a custom field
Set
{{tier}}=api.customer.plan{{open_order}}=api.orders[0].idCondition
{{open_order}} is not emptyOrder status{{tier}} == "Premium"Priority queueno matchMain menuConditions are evaluated on saved data, not on what the customer typed last.
Branch on what you already know
Set a value, compare it, and send the conversation down the right path. Conditions read anything the flow has collected, anything on the contact record, and anything an API returned — so a returning customer with an open order never sees the same opening as a stranger.
- Set variables from input, API responses or contact fields
- Conditions on collected values, custom fields and API data
- Delays and jumps between chatbots for longer journeys
Collect payment
Connected{{order_total}}{{order_id}}Each outcome is its own branch on the canvas.
What the customer sees
Your order comes to AED 498.
Take the money in the conversation
A payment block raises a link on your connected gateway using a value the flow already holds, then waits for the gateway to confirm. You get three separate paths out of it — paid, timed out, cancelled — so the flow reacts to what really happened rather than assuming success.
- Auto-generated link from your own connected gateway
- Payment verified automatically, with paths for each outcome
- Native WhatsApp Pay in India, gateway links everywhere else
Assign staff
Next in rotation
{{topic}}Static or from a variable
Feeds broadcast audiences
Internal only, never sent
Follow up in 2 days
{{meta}}Logged with your own metadata
Moves the history with it
The same actions are available to the AI agent as tools.
Route it to a person, and write it down
When the flow reaches its limit, the handover should not lose anything. Assign by round robin, only to staff who are online, and skip conversations somebody already owns. Then tag the contact, add them to a group, leave an internal note, set a follow-up reminder, and log a system message carrying your own metadata.
- Round robin, online-only, skip-if-assigned, or a named person
- Tag, group, reassign, note, reminder and system messages
- Two-way sync with your CRM so the record matches
https://erp.yourcompany.com/quotesPayload from the flow
phone:{{contact.phone}}product:{{choice}}quantity:{{qty}}tier:{{contact.plan}}Saved from the response
{{quote_id}}←data.quote.id{{quote_total}}←data.quote.total{{eta_days}}←data.fulfilment.etaUsed in the next message, a condition, or a dynamic carousel.
Wait for webhook
POST /hooks/flow/9f2c…{{approved_by}}{{credit_limit}}Credit approved in your ERP resumes the flow and quotes the customer.
Talk to anything you already run
A REST block sends whatever the flow has collected — answers, the conversation's phone number, custom profile fields — to any endpoint, and maps the response back into variables you can use downstream. A webhook block does the reverse: it parks the conversation until your system calls back, then continues with the data it sent.
- Send collected values, phone number and profile fields to any API
- Save the response into variables for later blocks
- Pause on an incoming webhook and resume with its payload
AI Agent
Tool callingConfiguration
Tools in this step
get_order_statusreadcheck_availabilityreadbook_slotwriteOne turn, handled
get_order_status(48210) → in_transit · ETA Thu{{agent_result}}The next block branches on what the agent resolved.
Hand the turn to an AI agent
A scripted flow is predictable, which is what you want right up until the customer says something you did not anticipate. The AI agent block takes that turn, answers from your knowledge base, calls the tools you scoped to this step, and hands control back with whatever it worked out saved as a variable.
- Grounded in your knowledge base, not general knowledge
- Calls only the tools you gave this step
- Returns to the flow with a variable you can branch on
WhatsApp Flow
Native formWhatsApp Flow
online
Choose service
Service type
Branch
Screens
Choose service
Pick a slot
Confirm
GET /flow/slots?branch={{branch}}Available times are fetched live, so nothing unbookable is offered.
Returned to the flow
{{service}}Annual maintenance{{branch}}City West{{slot}}Sat 7 Jun · 09:30Conditional screens skip questions the earlier answers already settled.
Open a native form without leaving the chat
Some steps are a form, not a conversation. The WhatsApp Flow block opens a multi-screen sheet inside WhatsApp — dates, dropdowns, validation, all native — and closes with every answer saved as a variable. Screens can be fixed, or driven by a data endpoint so the options reflect what is actually available.
- Multi-screen native form, no browser redirect
- Options can come from your own data endpoint
- Every answer returns to the flow as a variable
Voice call
OutboundLive call
James Carter
Connected01:12agent
Calling about your service visit on Saturday — does 9:30 still work?
customer
Can we make it the afternoon instead?
agent
There is a 14:00 slot. Shall I move you to that?
customer
Yes, please.
Returned to the flow
{{call_outcome}}answered · rescheduled{{new_slot}}Sat 7 Jun · 14:00No answer, busy and voicemail each get their own path.
Place a voice call from the flow
Some things are faster said than typed. The voice block dials the customer on WhatsApp and hands the call to an AI agent with the same tools and guardrails as the chat — or simply plays a script you wrote. The outcome comes back to the flow, so a missed call and a confirmed booking take different paths.
- Outbound WhatsApp call triggered by the flow
- Handled by an AI voice agent, or a fixed script
- Outcome and captured values return as variables
How it works
- 1
Build the flow
Drag blocks onto the canvas, connect the paths and set what each choice leads to.
- 2
Wire in your data
Collect values into variables, call your systems, and use what comes back further down the flow.
- 3
Test and publish
Run it end to end with Test Bot, then publish it to the number that should answer with it.
Frequently asked questions
Related features
Keep reading — these work closely with this one.
Build the flow your business actually runs
Start with the questions you answer every day, then add the blocks that resolve them.