AI & Automation

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.

Chatbot builder
My chatbot Test Bot Save

Start

Conversation opens

Group #1

Please choose an option
Sales
Support
Chat with AI
Default

Group #2

Please enter your email id
Collect email

Group #3

Choose a topic
Tech support
Billing issues
New feature request

Group #4

Assign Staff · Ann Clare

Group #5

Assign Tag
{{Dynamic}}

Messages

TextImageVideoLocationContactCall Button

Choices

Quick ReplyListList v2Carousel

Inputs

EmailNumberDatePhone

Logic

SetConditionDelayChatbot

Integrations

CRMRest APIOpen AISheets

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.

Message blocks

Text

Your order #1042 is packed and leaves tonight.
9:36

Image

This week's new arrivals.
9:37

Location

Northbridge Store

Al Wasl Road, Dubai

9:38

Contact card

A

Alex Morgan

Sales · +971 4 555 0198

9:39
Message

Call button

Prefer to talk it through?
9:40
Call us

Product

Linen Shirt — Navy

AED 249

9:41
View item

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
Interactive messages

Quick reply

How can we help today?
Track my order
Talk to sales
Something else

List

Pick a topic from the list.

View options
Tech support
Billing issues
New feature request

Carousel

Linen Shirt

AED 249

View

Canvas Tote

AED 89

View
Dynamic quick replies, lists and carousels render from whatever your API returns.

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
Inputs & validation
TextNumberEmailWebsiteDateTimePhoneFileLocation
Emailjames.carter@

Not a valid email — asked again

Emailjames.carter@northbridge.co

Saved to {{email}}

Numberabout four

Not a number — asked again

Date12 Oct 2026

Saved 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
Logic

Set

{{tier}}=api.customer.plan
{{open_order}}=api.orders[0].id

Condition

1{{open_order}} is not emptyOrder status
2{{tier}} == "Premium"Priority queue
elseno matchMain menu
Delaywait 2 hours

Conditions 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
Payment block

Collect payment

GatewayConnected
Amount{{order_total}}
Reference{{order_id}}
Success
Timeout
Cancelled

Each outcome is its own branch on the canvas.

What the customer sees

Your order comes to AED 498.

Pay securely
Paid.
Payment confirmed · order #1042
StripeRazorpayTapPayTabsWhatsApp Pay

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
CRM & routing

Assign staff

Round robin
Only staff who are online
Skip if already assigned
Assign to a named person

Next in rotation

Alex MorganNext
Priya RamanOnline
Daniel ReedOffline
Assign tag{{topic}}

Static or from a variable

Add to group

Feeds broadcast audiences

Add note

Internal only, never sent

Set reminder

Follow up in 2 days

System message{{meta}}

Logged with your own metadata

Reassign

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
API & webhooks
POSThttps://erp.yourcompany.com/quotes

Payload 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.eta

Used in the next message, a condition, or a dynamic carousel.

Wait for webhook

Paused — waiting for approval
POST /hooks/flow/9f2c…
{{approved_by}}{{credit_limit}}

Credit approved in your ERP resumes the flow and quotes the customer.

OpenAI · RAGGoogle SheetsBrevoAmazon SESZapierMakePabblyMeta templatesGoogle Calendar

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 block

AI Agent

Tool calling

Configuration

KnowledgeReturns policy · Catalogue
GuardrailAnswer from sources only
FallbackHand to a human

Tools in this step

get_order_statusread
check_availabilityread
book_slotwrite

One turn, handled

My order is late and I need it before Friday.
get_order_status(48210) → in_transit · ETA Thu
It is out for delivery and due Thursday, so ahead of Friday. Want a reminder the morning it arrives?
{{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 form
9:41
W

WhatsApp Flow

online

Choose service

Service type

Branch

Continue

Screens

1

Choose service

Service typeBranch
2

Pick a slot

DateTime
3

Confirm

NameNotes
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:30

Conditional 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

Outbound
AI voice agent
Play a fixed script

Live call

James Carter

Connected01:12

agent

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:00

No 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. 1

    Build the flow

    Drag blocks onto the canvas, connect the paths and set what each choice leads to.

  2. 2

    Wire in your data

    Collect values into variables, call your systems, and use what comes back further down the flow.

  3. 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

Build the flow your business actually runs

Start with the questions you answer every day, then add the blocks that resolve them.