Skip to main content

WhatsApp

How to stop a WhatsApp chatbot from looping: retry limits, fallbacks and a way out

“Sorry, I didn't understand. Please choose an option.” Once is fine. Three times and the customer is gone. A counter, a fallback branch and a handoff rule turn a looping bot into one that knows when to stop.

MonoChat Team Updated: 7 min read

On this page
  1. Why chatbot loops cost more than they save
  2. Why WhatsApp bots get stuck
  3. How MonoChat reads an answer
  4. Build a retry limit, step by step
  5. What the conversation looks like
  6. When the bot is an AI agent
  7. Checklist
  8. Get started
  9. Sources

A WhatsApp chatbot loops when it cannot match a customer’s answer and keeps asking the same question. To stop it, give every question a fallback branch for unexpected answers, count how many times the bot has asked, and hand the conversation to a person after two or three attempts, with the history attached. In MonoChat that is three nodes: Question Answer with its On Other output, Set Flow Variable to count, and an If condition on the count that leads to Assign Session.

This guide explains why loops happen on WhatsApp, how to design the fallback, and how to build a retry limit step by step.

Why chatbot loops cost more than they save

Bots save money on every conversation they finish. They lose it on the ones they trap. In an April 2026 article in California Management Review, Yuqing Ren and Rongjin Zhang bring the research together:

  • multiple surveys find that 53–77% of respondents have had a bad or frustrating chatbot experience;
  • a Gartner survey of 5,728 customers found that 64% would prefer companies did not use AI for customer service, and 53% would consider switching to a competitor over it;
  • the same Gartner survey found that only 14% of customer service issues are fully resolved in self-service;
  • 70–80% of customers prefer dealing with a human agent.

The authors name the “chatbot loop” as one of the main sources of that frustration: instead of handing over, the bot keeps asking questions, repeating information or apologising. They also point to “no easy path to a human” as the irritant that turns a small annoyance into a loss of trust.

None of this argues against bots. It argues for bots that know when to stop.

Why WhatsApp bots get stuck

Most WhatsApp bots are menus: a question with reply buttons or a list. Meta’s limits shape them. A reply-button message carries up to 3 buttons of at most 20 characters each; a list message carries up to 10 rows across all sections, each row title at most 24 characters. Within those limits, customers still do four things the menu did not expect:

  1. They type instead of tapping. “the second one”, “delivery”, “2”.
  2. They answer a different question. The bot asks for an order number; the customer sends a photo of the parcel.
  3. They write something the menu does not cover. “My order arrived broken” on a menu of Track / Return / Talk to us.
  4. They come back later to a question the bot asked yesterday.

A bot that treats each of these as “invalid, please choose again” loops. A bot that has a plan for each one does not.

WhatsApp’s own rules point the same way. Its Business Messaging Policy allows automation during the 24-hour window, but says businesses “must also have available prompt, clear, and direct escalation paths”: an in-chat transfer to a human agent, a phone number, email, web support, a store visit or a support form.

How MonoChat reads an answer

Before building the limit, it helps to know what the Question Answer node does with a reply:

  • A tapped button or list row goes to that option’s output.
  • A typed answer is compared with the option titles. If it is close enough to one of them, it counts as that option; “Track my order” matches a “Track order” button.
  • A number picks the option in that position, so “2” means the second button or row.
  • Anything else (text that matches nothing, a photo, a voice note) goes to the node’s On Other output.

So the loop is not in the matching; it is in what you connect to On Other. Leave it pointing back to the same question with no limit, and the bot will ask forever.

Build a retry limit, step by step

The example is a delivery-question menu for an online store. Customers pick Track order, Return an item or Something else.

1. Ask the question

  1. Go to Settings › Automation › Flows and open your bot flow, or create one.
  2. Add a Question Answer node with your question and three buttons. Keep the button titles short and distinct; similar titles make typed answers harder to match.
  3. Connect each button’s output to the branch for that topic.

2. Count the attempts

  1. Add a Set Flow Variable node and connect the On Other output of the question to it.
  2. Add a row: name attempts, operation Increase by, value 1. An empty value also counts as 1, and a variable that does not exist yet starts from 0, so the first wrong answer sets it to 1.
  3. Rows run in order. If you want to keep what the customer wrote, add a second row that Sets last_answer as Text from {{message.text}}.

3. Decide: ask again or hand over

  1. After Set Flow Variable, add an If node.
  2. In the condition, open the Flow group and choose Flow Variable Value: attempts, Greater Than or Equal, 2.
  3. Connect False to a Send Message node that asks again, more clearly, and then back to the Question Answer node.
  4. Connect True to the handoff in step 4.

A second attempt should not repeat the first word for word. Say what the bot can do and show the options again:

Sorry, I can help with these three things here. Tap one, or type its number: 1 Track order · 2 Return an item · 3 Something else

4. Hand over properly

  1. Add an Assign Session node on the True branch and choose the team or agent who handles delivery questions.
  2. Before it, add a Send Message that tells the customer what happens next: “I’m passing you to a colleague. They can see this chat, so you won’t need to repeat anything.”
  3. If you have working hours, add an If with Within Working Hours first. Outside them, say when a person will reply rather than promising one now.

The agent sees the whole conversation in the shared team inbox, including the answers the bot could not match.

5. Give “Something else” a real exit

“Something else” is the button that most often leads to a loop, because it opens a free-text question the menu cannot answer. Connect it directly to Assign Session, or to an AI step that can read free text, rather than to another menu.

What the conversation looks like

Customer: hi my parcel came damaged

Bot: Hi Elena! I can help with orders here. What do you need? [Track order] [Return an item] [Something else]

Customer: it’s broken

Bot: Sorry, I can help with these three things here. Tap one, or type its number: 1 Track order · 2 Return an item · 3 Something else

Customer: (sends a photo of the box)

Bot: I’m passing you to a colleague. They can see this chat, so you won’t need to repeat anything.

Agent: Hi Elena, I’m Sam. Sorry the parcel arrived damaged, I can see your photo. I’ll arrange a replacement now.

Two attempts, one clear handoff, and the photo is already in front of the agent.

When the bot is an AI agent

AI agents read free text, so they loop less over buttons, but they can still go round in circles: asking for details the customer already gave, or repeating an answer that did not help. Two rules carry over:

  • Limit the run. MonoChat’s AI Agent node works within an execution budget and continues on Completed, Budget Exceeded, Timed Out or On Fail. Connect every output except Completed to a person.
  • Count the turns. The same Set Flow Variable counter works around an AI step: increase ai_turns each time the customer replies, and hand over after a number you choose. Our guide to AI to human handoff covers the handoff message and routing in more detail, and testing an AI agent before launch shows how to find the questions it cannot answer before customers do.

Checklist

  • Every Question Answer node has its On Other output connected.
  • A Set Flow Variable node increases an attempts counter on that branch.
  • An If node with Flow Variable Value decides between asking again and handing over (2 or 3 attempts).
  • The second attempt is worded differently and shows the options with numbers.
  • “Something else” goes straight to a person or an AI step, never to another menu.
  • Assign Session sends the chat to the right team, with a message that says what happens next.
  • Outside working hours, the bot says when a person will reply.
  • AI steps send Budget Exceeded, Timed Out and On Fail to a person.

Get started

Retry limits are built in the no-code workflow automation builder. Start on the free Basic plan at app.monochat.ai, or read our guide to building a WhatsApp chatbot and the options for WhatsApp interactive messages.

Sources

FAQ

Frequently asked questions

What is a chatbot loop?

A chatbot loop is a conversation in which the bot keeps answering with the same question, menu or apology because it cannot match what the customer wrote, and never offers a way out. Researchers writing in California Management Review in April 2026 describe it as a loop of endless conversation that goes nowhere.

How many times should a bot repeat a question before handing over?

There is no official number. Two or three attempts is a common choice: one to ask, one to ask again more clearly with buttons, and then a person. Count the attempts in the flow so the rule is the same for every customer.

How do I count attempts in a MonoChat flow?

Add a Set Flow Variable node with the Increase by operation on a variable such as attempts each time the question is asked again. Then add an If node with a Flow Variable Value condition, for example flow.attempts Greater Than or Equal 3, and connect its True output to Assign Session.

What happens when the customer types instead of tapping a button?

MonoChat's Question Answer node matches a typed answer to the closest button or list option, or to its number (2 for the second option). An answer that matches nothing goes to the node's On Other output, which is where the retry branch starts.

Does WhatsApp require a way to reach a person?

Yes. WhatsApp's Business Messaging Policy allows automation within the 24-hour window but requires prompt, clear and direct escalation paths, such as an in-chat transfer to a human agent, a phone number, email, web support, a store visit or a support form.

Can an AI agent loop too?

It can repeat itself or keep asking for details. In MonoChat the AI Agent node runs within an execution budget and continues on Completed, Budget Exceeded, Timed Out or On Fail, so you can send everything other than Completed to a person.

First month of Growth on us

Run WhatsApp, Instagram and Messenger from one inbox

Start free with MonoChat: shared team inbox, AI assistants, templates and campaigns on official Meta APIs.

One code per business • 30 days to redeem • No card needed

$150 to get started.

Claim