Home · Blog · 10 errors in bot scripts that we find during audits

10 errors in bot scripts that we find during audits

· updated · Command CHBT · Flows, Errors

When people come to us with the complaint “the bot doesn’t bring in requests,” we open the script and almost always find something from the same list. The errors are not exotic—a dead end without buttons, a phone number in the first message, an “Any message” trigger that intercepts everything—but each of them quietly cuts down on conversion, and from the outside it looks like “they write, but don’t get to the request.” Below are ten such errors: what they look like, why they’re bad, and what exactly to fix in CHBT.

1. Deadlock: message without buttons and without waiting for a response

What it looks like. The thread ends with the “Message” block: “Thank you, we will contact you!” - that's all. There are no buttons, there is no next block. The person writes “when?”, the bot is silent.

What’s bad. Each such end is a point where the client is left alone. Some will write again and, having received no response, decide that the bot is broken. In Conversations it looks like tails of lonely unanswered messages.

How to fix it in CHBT. Each final “Message” block should have either two buttons - “Back” and “Ask a question” - or followed by an “Operator” block. The “Back” button leads to the first block of the script; “Ask a question” - to “Operator”. Quick check: Open Canvas and look at the blocks with no outgoing links - each one should be either an "Operator" or a message with buttons. In "Steps" mode, go through the script through "Check Script" to the end of each thread and try to write something after the last message.

2. Phone number in the first message

What it looks like. “Hello! Leave your phone number and the manager will call you back.” This is the first block of the script, even before the person understands where he ended up.

What’s bad. The man came to ask, not to leave a contact. Requiring a number at the entrance - the same feedback form, only in chat; many close the conversation or write “tell me the price first.” There are few applications, and those that exist are from people who would leave their number even without a bot.

How to fix it in CHBT. The order of the blocks is: “Message” with selection buttons (service, direction, task type) → “Message” with a useful answer of your choice (price “from”, term, example) → “Data collection” to the name → “Data collection” to the phone with an explanation of why: “Where should I send the calculation?” The phone should be no earlier than the third step. If your niche allows it, add a button “Write here, no need to call” - you already have a contact in the messenger, but some people will never give you a phone number. The complete scheme is in the article about collecting applications via bot.

3. There is no access to the operator

What it looks like. The script covers five typical questions and does not contain the “Operator” block in any branch. A person writes “I have another question” and receives a menu. Writes “operator” - menu again.

What’s bad. Everything that is not included in the buttons is lost. But usually the most valuable things were not included: a volume discount, a non-standard order, a claim. People with such questions leave with the feeling that the company is hidden behind an answering machine.

How to fix it in CHBT. Two required elements. The first is the “Another question” button in each menu, leading to the “Operator” block, in front of it is the “Message”: “I am passing it on to a colleague, we will answer during business hours in 10–15 minutes.” The second is a separate flow with a “Keyword” trigger in the “contains” mode: operator, manager, person. The keyword in CHBT is triggered even in the middle of another flow, so that a person will reach the operator from anywhere. In the “Operator” block, fill in “Message to the operator” - your colleague will not have to re-read the conversation. Where to draw the line between a bot and a human and how to respond in “Conversations” is a separate article: transferring the conversation to the operator.

4. The “Any message” trigger intercepts everything

What it looks like. In order for the bot to “always respond”, a trigger “Any message” (catch-all) was added to one of the scripts. After that, the keywords stopped working or the bot responded to every message with the same greeting.

What’s bad. Catch-all is the greediest trigger: it reacts to any text that is not caught by another trigger. If it leads as a greeting, the person who wrote “how much does a manicure cost” gets “Hello! Select a section” - and so on for each message. If there are two such flows, the behavior becomes unpredictable.

How to fix it in CHBT. Rules three. Catch-all - one per bot. It does not lead to a greeting, but to a short “Message” block: “I didn’t understand the question. Select an option or write “operator” with buttons for the main sections and a button for “Operator”. And he doesn’t argue with waiting for an answer: while a person is inside the script and the bot is waiting for a response to “Data Collection”, catch-all does not work - this is the built-in behavior of CHBT, so answers to the bot’s questions are not intercepted. If the keywords "stopped working", first disable the catch-all script and test again. If it worked, that was the problem: scripts are checked in the order they were created, and the catch-all of an earlier script intercepts the keywords of later ones. Check this in a real messenger: the “Check script” test chat runs only the open script and will not show interception by another script.

5. Keyword that catches the wrong thing

What it looks like. The “Keyword” trigger is configured in “exact” mode for the word Gift. The client writes “gift!” or “I want a gift” - the bot does not respond. Or vice versa: the “contains” mode on the word da - and the bot triggers on “Hope”, “sale”, “when”.

What’s bad. In the first case, the code word from the advertisement “write GIFT” does not work for everyone who added a sign or another word to the word, and the advertising budget is wasted. In the second, the keyword intercepts people’s answers in other flows: a person enters the name “Nadezhda” to the question “What is your name?”, and the bot starts issuing a gift.

How to fix it in CHBT. The CHBT case does not take into account - "Gift" and "GIFT" are equal - but the "exact" mode requires a complete text match, so an exclamation mark or an extra word breaks it. For code words from advertising, use “contains” and a fairly long word: gift, discount20, price. Short words - da, no, ok — don’t put them in triggers at all: there are buttons for responses. If you need precision with spelling options, use the “regex” mode: ^(gift|gifts|gift)[!.]*$. And remember point 3: the keyword interrupts the current script - this is useful for the "operator" and harmful for da.

6. No input validation

What it looks like. Block “Data collection” on the phone with “No verification” check. In “Contacts” there are telephone numbers “later”, “no”, “why”, “8”.

What’s bad. The manager wastes time on empty cards, and the database contains leads that do not exist. Worse, the script considers the contact to be collected and moves on - the person receives “Thank you, we’ll call you back,” although there is nowhere to call back.

How to fix it in CHBT. In the “Data Collection” block, select a check: “Phone” for a number, “E-mail” for mail, “Number” for a budget or quantity. Fill in the “Text in case of error” specifically - not “Try again”, but “It looks like there are not enough numbers in the number. Write this: +7 900 000-00-00.” Please note how re-asking works: if the format is incorrect, the bot sends “Text on error” and waits again - as many times as specified in the “Attempts” field (three by default); The block does not have a separate branch “after N failures” - the script simply moves on without a saved value. Therefore, let’s give a way out with words directly in the text of the error: “...or write “operator” - we will contact you here.” And keep a separate script with a "Keyword" trigger operator → “Operator”: the keyword also works inside “Data Collection”, so that the person will not get stuck on the question about the phone. Validation will not cut off someone else’s correct number, but will remove “no” and “later” from the database.

7. Text sheets

What it looks like. First message - 12 lines: company history, all services, prices, address and opening hours. Or the answer to a question about the price - a table of 20 positions in one message.

What’s bad. On a phone, such a message takes up two screens; they leaf through it without reading it, and write the question the answer to which was in the third line. Buttons under a long message move off the edge of the screen - a person does not see them and does not press them. In Telegram, long text is also cut into pieces if it exceeds the platform limit.

How to fix it in CHBT. Rule: one message - one thought and no more than 3-5 lines on the phone screen. Instead of listing all services - 4 buttons by groups, instead of a price table - “from what amount” and a “Full price” button leading to a separate block. If there is really a lot of information, break the “Message” into two blocks in a row: the second one will come next. If you want a pause between them, set the “Pause” block for 5–10 seconds: during this time the person will finish reading the first message, and the second will not arrive in a bundle with the first. What should be the first message so that the person does not leave - in the article about bot's first message.

8. Not a single tag

What it looks like. A script of 30 blocks, there is not a single “Add tag” action in it. There are 800 cards in “Contacts”, all the same: name, channel, date.

What’s bad. Three consequences. It’s impossible to understand where people are leaving: in “Analyst” CHBT there are no block counters, and without tags you can’t see the funnel. You can’t do targeted broadcasts—only to everyone at once, which quickly leads to unsubscribes. And it is impossible to distinguish a client from someone who asked the price and disappeared.

How to fix it in CHBT. Add the “Action” → “Add tag” block at five points: start (start), choice of direction (manicure / pedicure), telephone request (asked-phone), assembled telephone (lead), transfer to operator (operator). This is enough for the filter by tag in “Contacts” to show the funnel by numbers, and “Mailouts” - by segments. Tag names - lowercase, without spaces, according to the same scheme; otherwise in a month there will be Lead, lead and LEAD as three different tags. Using the “Remove tag” action, remove asked-phonewhen the number is collected. How to build a tag system for the entire bot - in the article about tags as a segmentation system.

9. Didn’t check the conversation limit

What it looks like. The bot was launched on the Free plan along with advertising. On the 15th, complaints began to pour in: “the bot is not responding.” The script is intact, the channels are connected, the webhook is working.

What’s bad. Free plan - 30 conversations per month per bot. The conversation is counted according to the interlocutor: one person, no matter how much he writes in a calendar month, is one conversation. As soon as 30 different people wrote in a month, the bot responds to each new interlocutor with one phrase about the limit instead of a script, and his message does not end up in “Conversations”; with those who have already written this month, the conversation continues as usual. For an advertising campaign, this means that everyone brought in by the ad after the 15th is greeted by a bot that doesn’t show them anything.

How to fix it in CHBT. Before starting traffic, estimate: how many new people will write in a month? If more than 30, switch to Basic for 650 ₽ before the start of advertising, and not after the first complaint; there the signature “CHBT” in the widget is removed and “Canvas”, broadcasts and AI are opened. If the traffic is small and you remain on Free, keep an eye on the “N out of 30” counter in the plan card on the “Review” page of the bot - there is also a forecast by what date the limit will end at the current pace. The limit is the most common reason for “the bot is silent” among those who have everything technically in order; other reasons are discussed in the checklist “Telegram bot is silent”.

10. Not tested from the phone

What it looks like. The flow was built on a big monitor, run through the editor's test chat and launched. The first people to open it on a phone were clients.

Why it's bad. Everything is different on a phone screen: long button labels wrap onto two or three lines, a ten-button menu with one button per row fills the whole screen in Telegram and MAX, in VK buttons go two per row with no more than ten, and in MAX a three-paragraph message reads like a wall. Deep links copied with a space don't open. The website widget on a phone covers the “Order” button. None of this shows up in the test chat.

How to fix it in CHBT. “Check flow” in the editor is the first stage: it shows the branch logic. The second stage is mandatory: go through the bot on a phone in every connected channel as a client — with /start in Telegram and MAX, from the community in VK, and from the website in incognito mode for the widget. Enter a wrong phone number and make sure you're asked again with your own text. Tap every button in every menu. Keep button labels to 20 characters, no more than 4 buttons per message, two per row in VK. Reach the “Operator” block and check that the notification arrived and that a reply from “Conversations” reached the messenger. After edits, the flow's version history keeps the previous version, so you can roll back in one step.

The ten points above aren't theory; they're what we fix most often in other people's flows. Run your bot through them: it usually takes an hour, and you'll see the result in the tags in “Contacts”. If you don't have a bot yet, start with the “Lead capture” template: its blocks are already in the right order. Open the builder and check your flow →

More on the blog