Chatbot
A visual flow that replies to customers automatically — trigger keyword, menus, branching and actions, all on one canvas.
What a chatbot does
A chatbot (a flow) watches for a trigger — a keyword the customer sends, or a contact entering a pipeline stage — and then runs a series of steps. Each step sends a message or performs an action, then either waits for the customer's reply or auto-advances to the next step. Branching lets different answers lead to different paths.
Because a bot replies inside the customer's own message thread, its free-form messages are subject to the 24-hour window like any other — the exception is a Template Message step.
Build it in six steps
Open the builder
Sidebar → 🤖 Chatbot → ➕ Create Bot. A full-screen editor opens over the app.
Name it and set the trigger
Name the bot, then choose Keyword (Contains matches anywhere in the message; Exact match needs the whole message) or Pipeline stage. Leave Active off while building.
Add steps
➕ Add Step → pick a type (table below). The first step is marked ▶ START — where the trigger lands. Drag any step by its header to reposition it.
Connect the steps
Each step has one 🔗 connect port per possible outcome. Click a port, then click 🎯 Connect here on the next step. Click the port again to cancel.
Preview it
🖥️ Preview bot opens a phone panel and locks the canvas. Tap chips or type replies as a customer would. Nothing here sends a real message or touches contacts.
Save and activate
Save, then use ▶️ Enable / ⏸️ Pause on the Bots list. Only active bots respond.
Step types
| Step | What it does | After it runs |
|---|---|---|
| 💬 Text Message | Plain text. Add keyword branches and it waits for a matching reply; add none and it just sends. | Waits if it has branches, else auto-advances |
| 📋 List Message | A tappable menu; each option has its own connection. | Waits for a tap |
| 🔘 Quick Reply Buttons | Up to 3 tappable buttons (WhatsApp's limit). | Waits for a tap |
| 🔗 Website Link Button | One message, one button that opens a URL. | Auto-advances |
| 📨 Template Message | Sends an approved template — the only way to include a Call Now button, and the only step that works outside the 24-hour window. | Auto-advances |
| ⏸️ Pause | Sends nothing; waits N minutes, then continues. | Waits out its timer |
| 🏷️ Action | Tags the contact or opts them out. Silent. | Auto-advances |
| 🔀 Condition | Checks contact data ("has tag X", "is opted in") and branches If true / If false. | Resolves instantly |
| ▶️ Start Another Bot | Hands off to another bot's start step. | Jumps immediately |
| ⏹️ Stop Bot | Ends the conversation. Always a dead end. | Ends |
Waiting vs. auto-advancing
The one idea that makes flows predictable: a step either waits for the customer, or it doesn't.
- Waits: List, Buttons, Text-with-keywords, Pause. A waiting step can have extra branches for “another answer” (they typed something unmatched) and “no answer after N min”.
- Auto-advances: Text-without-keywords, Link, Template, Action.
- Resolve instantly: Condition and Start Another Bot — never wait.
- Never continues: Stop Bot.
Good to know
menuorrestartfrom a stuck customer always clears their bot session so they can start over.- Only one bot session per contact at a time — a newly triggered bot takes over from one in progress.
- Preview is free — no Gupshup call, no contact writes, and it doesn't really wait through a Pause.
- Bots send through whichever Gupshup app is set on Connect your number — connect your own before relying on this for real conversations.