Best practices

Chatbot flow design: 12 best practices for conversations people actually finish

Practical rules for designing chatbot conversation flows that customers finish: branching, fallbacks, personalisation, handoff and testing.

A visual flow builder makes it easy to build a chatbot. It also makes it easy to build a frustrating one. The difference is almost never the tool. It's the design of the conversation.

These twelve practices come from how real customers behave in WhatsApp, SMS and Messenger conversations. Use them as a checklist before you launch a flow.

1. Start with one goal per flow

Every flow should finish one job: book an appointment, track an order, qualify a lead. When a flow tries to do everything, its branches multiply and nobody can maintain it.

If customers need several things, build a short menu flow that sends them into focused flows with Enter another flow. Each sub-flow stays simple, and you can reuse it from anywhere.

2. Say who you are and what you can do

The first message sets expectations. Compare:

โŒ Hello! How can I help you today?

โœ… Hi Sara ๐Ÿ‘‹ I'm the Nile Store assistant. I can track orders, change deliveries or connect you to our team.

The second tells the customer it's a bot, names the options, and promises a way to reach a person. People are much more patient with a bot that's honest about being one.

3. Offer choices, but accept free text

Quick replies are faster than typing, and they steer customers onto paths you've planned. But many people still type, especially on SMS, where buttons don't exist.

So for every Wait for the contact to respond, add rules for the typed equivalents too. If your quick replies are Track my order and Talk to someone, also match has any of the words track, status, where and agent, human, person.

4. Never leave "Other" empty

Other is where every unexpected reply goes, and it is used more than you think. A good pattern:

  1. First miss: rephrase the question and show the options again.
  2. Second miss: offer a person by opening a ticket.

Never send someone back to the same question three times with the same words. That's the moment customers give up.

5. Validate answers at the moment you ask

If you need a number, date, email or phone number, use the matching split rule: has a number, has a date, has an email or has a phone number. Customers fix mistakes far more willingly right after a question than three steps later.

Make the retry message specific: "Please send the date like 14/11" works better than "Invalid input."

6. Personalise with what you already know

Asking for information the customer already gave you is the fastest way to feel robotic. Use expressions:

  • @contact.first_name for their name
  • @fields.city or any contact field you've saved
  • @results.order_number for an answer from earlier in this flow

And save useful answers back to the contact with Update the contact, so the next flow doesn't ask again.

7. Bring in live data instead of generic replies

"Your order is on the way" is a script. "Your order 48213 is with Aramex and arrives Thursday" is service.

A Call a webhook step can fetch order statuses, balances, appointment slots or anything else your systems know, and the response is ready in the next message as @webhook. See our guide on making chatbots dynamic with webhooks.

8. Keep messages short, then shorter

Messaging isn't email. Aim for:

  • one idea per message,
  • no more than 2โ€“3 short lines,
  • no more than 3 quick replies (that's also what many channels display best).

If you need to send a lot of information, split it into two messages or send a link.

9. Design the handoff, not just the bot

Every flow needs a clear route to a person. With Open a ticket with a human agent you can:

  • choose a topic so it reaches the right team,
  • write a ticket body that summarises what the bot already learned (Order @results.order_number, issue: @results.issue),
  • tell the customer what happens next.

The agent then sees the whole conversation in the ticketing workspace and never has to ask "How can I help?" again.

10. Respect time and timing

Customers walk away mid-conversation. Decide what happens then:

  • Set a timeout on long waits so the flow can follow up ("Still there? Reply with your order number whenever you're ready").
  • On WhatsApp, remember the 24-hour customer service window. Outside it, you can only start a conversation with an approved template.

11. Test like a confused customer

The Simulator lets you run the flow as a contact. Don't just test the happy path:

  • type misspellings and emoji,
  • send an answer in the wrong format,
  • send nothing and test the timeout,
  • make the webhook fail (use a wrong order number).

If a path feels long in the simulator, it will feel twice as long on a phone.

12. Measure, then improve

After launch, the flow editor shows how many contacts took each path. Look for:

  • drop-offs: steps where many contacts stop responding,
  • busy "Other" branches: questions people don't understand,
  • unexpected handoffs: things the bot could handle itself with one more branch.

Results can be exported to Excel, and every change you make is kept in the flow's revision history, so you can improve with confidence.

A quick pre-launch checklist

Run through this checklist before you launch any flow; each line maps to one of the practices above.

Check Done?
One clear goal for the flow โ˜
First message says it's a bot and lists options โ˜
Typed answers match the quick replies โ˜
Every wait has an "Other" path โ˜
Answers validated where they're asked โ˜
Known details reused, not re-asked โ˜
A route to a person from every branch โ˜
Timeouts on long waits โ˜
Every path tested in the simulator โ˜

Ready to put this into practice? Follow the step-by-step WhatsApp chatbot tutorial or start building for free.

Build your first dynamic flow today

30 days free. No credit card. Set up in minutes.

Create your free account