Home · Blog · Service notifications via MAX bot: the “he wrote first” rule
Service notifications via MAX bot: the “he wrote first” rule
The bot in MAX can send the client what they usually call him for: “the order has been collected”, “we remind you about the appointment tomorrow at 14:00”, “question accepted, we will answer within an hour”. But the messenger has a strict rule: the bot does not start a conversation on its own. Until a person writes to the bot first, a notification cannot be sent to him - neither from his account, nor by mailing, nor via a loaded phone database. Below is how to live with this rule (collect a database so that clients themselves come to the bot), what notifications are collected in CHBT by the “Pause”, “Condition” and “HTTP request” blocks, and where the boundaries are: what the MAX channel in CHBT does not do.
MAX rule: bot responds, not starts
The MAX platform sends an event to the bot when a person opens a conversation or writes a message. Only after this does the bot have an addressee to whom you can send the text. It is technically impossible to download a list of telephone numbers and “ring” its messages: the telephone number is not a conversation identifier, and the conversation does not exist until the client writes. The same limitation works in Telegram - there it manifests itself as an error, which we wrote about in the analysis PEER_ID_INVALID and “bot cannot write first”.
Three practical conclusions follow from this.
- The notification base is equal to the list of those who wrote to the bot at least once. In CHBT, such people appear in the “Contacts” section automatically, with the mark of the MAX channel - there is no need to separately “collect a database”, you need to give them a reason to write.
- Notifications cannot be launched “for later” without a bot today. If alerts are needed for the December sale, the link to the bot should be in letters and checks already in October.
- Blocked - fell out. If the client has blocked the bot, messages do not reach him; in the mailing statistics this will be the “error” line. There is no need to clean the base by hand.
The rule is the same for any designer and for your own development - you cannot bypass it, you can only build the process so that the client comes to the bot himself and in advance.
What notifications make sense in MAX and how they are triggered in CHBT
Before building a script, it is useful to sort notifications by launch type: some are sent by the script itself in response to the client’s actions, others are sent by you from your account, and others are intended not for the client, but for you.
| Notice | What is launched in CHBT | What you need in advance |
|---|---|---|
| “Application accepted, we will respond before 18:00” | The “Message” block immediately after “Data collection” | Nothing |
| Appointment reminder | Block "Pause" after confirmation of recording | The client signed up via a bot |
| Order status upon request | Keyword or button → "HTTP request" to your system or "Operator" | Order number; your API or shift operator |
| Change of schedule, delivery has arrived | “Mailouts” section by tag (Basic and higher) | Tags on contacts |
| Event for you: client asks to reschedule an appointment | “Notify operator” action, letter, Web Push | Enabled notifications in your account |
What is not in this table: “an external system sent an event - a specific client received a message in MAX” without modification on your part. This is only possible through the public API and only to those who have already written to the bot - details in the section below. If you immediately promise your clients “a push every time the status changes from our CRM,” you will have to explain later.
Step 1. Give the client a reason to write to the bot
The shortest path is a template "Notifications": the bot takes the contact and explains that the status of the order or record will be sent here. Open it in the “Scripts” section through the “Use Template” button and adapt the texts to your service. Connecting the MAX channel itself takes a few minutes: the token from the MAX account for business is inserted into “Channels” → “Connect MAX”, details are on the page of the bot MAX.
Next, place a link to the bot at all points where the client already comes into contact with you:
- letter or SMS with order confirmation: “Order statuses - in MAX: link”;
- receipt or package insert - QR code;
- manager’s signature in correspondence and on a business card;
- “Thank you for your order” page on the website;
- sign at the reception: “A reminder about your appointment will be sent to MAX - scan.”
Deeplink. The link to the bot from the MAX account for business supports a start parameter: when a client opens the bot using such a link, MAX sends a start event with this parameter, and the “Deep Link” trigger with the specified payload is fired in CHBT. Create different payloads for different entry points - order for writing, kassa for a check, site for the thank you page - and in each thread add your tag using the “Add tag” action. In a month, “Contacts” will show where people actually come from.
QR. The “QR campaigns” section in CHBT is now building a QR code with a link to the project’s Telegram bot. For MAX, take a bot link with a parameter and generate a QR with any external generator - the script on the CHBT side does not change.
The minimum entry flow looks like this: “Deeplink” trigger (order) → “Message”: “Hello! Your order status will appear here. Write its number from the letter" → "Data collection" (Your field "Order number", check "Number", into the variable order_id) → “Action”: tag waiting-status → “Message”: “Accepted.” As soon as something changes according to order {{order_id}}, we will write here.” From this moment on, the client is in the database, and any further notifications are allowed to him.
Step 2. Recording reminder: “Pause”, “Condition”, “Message”
Making an appointment through a bot in CHBT is done without a calendar: the client selects a service with a button, writes a convenient time in text, leaves his phone number, and you receive a notification and confirm. How it was collected - on the page customer records in MAX. There are no slots or busy checks, and this affects reminders: the script does not know the visit date as a date, it only knows the text “tomorrow at 14:00” in the variable.
Therefore, a reminder is constructed in one of two ways.
Fixed pause - for recording “for tomorrow”. After the confirmation block, set “Pause” for 18–20 hours, then “Message”: “We remind you: you are registered on {{visit_time}}. Is everything okay? with the “Yes” and “Transfer” buttons. The “Move” branch leads to “Action” → “Notify operator” (“{{name}} asks to move the entry to {{visit_time}}”) and then to the “Operator” block - the administrator agrees on a new time from the “Conversations” section. Variable visit_time is filled in the “Data collection” block through the “To variable” field.
Manually from “Conversations” - for recording for other dates. The administrator opens the client's dialog and writes a reminder himself. This is also a message from a bot in MAX, the “he wrote first” rule is followed, and it takes less time than a call. For standard texts, there are quick response templates in the inbox.
Night protection. To prevent the pause from working at three o’clock in the morning, put “Condition” → “Time” before the message: if the hour is less than 9 - another “Pause” for several hours, otherwise - immediately a message. The condition by day of the week works the same way and is useful if you are closed on Sundays.
If you want a more complex chain - “a day in advance, then two hours in advance, then a request for feedback after the visit” - the mechanics are the same: alternating “Pause” → “Condition” → “Message” and tags at each step. It is discussed in detail in the article about trigger chains in the bot.
Step 3. Order status according to customer request
“Where is my order” is constantly written to the store, but the bot itself has no data about orders. He will be able to answer without an operator if he asks the status of your accounting system: the client writes and receives an answer immediately, without waiting for you to “send something.” This is assembled from four blocks.
- Login The “Keyword” trigger in the “contains” mode for the words “status”, “where is the order”, “delivery” - or the “Where is my order” button in the start menu (the “Button Press” trigger).
- Order number. “Data collection”: Custom field, “Number” check, two attempts, error text: “Order number is the numbers from the confirmation letter, for example 48213.” The answer is in a variable
order_id. - Data request. The order status from Ozon and Wildberries by number CHBT is not received - send such questions to the operator in the “Operator” block. If orders live in your system - “Action” → “HTTP request”: the bot will send a POST to your address with variables and contact data, and the server response (as text) will be saved in a variable that you specify in the “to variable” field, for example
order_status. - Answer. “Message”: “By order {{order_id}}: {{order_status}}. If you have any questions, write to us and the operator will connect.”
An important note about the HTTP request: CHBT will insert your server's response as is into the message. The designer cannot parse JSON and extract a field from it, so the server must respond with a ready-made human line: “Collected, transferred to SDEK, wait 2-3 days.” You can configure such a response in Make, n8n, or in two lines on your backend. The outgoing request format is described in webhook help.
And definitely - the “not found” branch: if the server returned an empty response, “Condition” → variable “set” - otherwise the “Operator” block. A live person is better in five minutes than a bot that cheerfully says “{{order_status}}” in empty text.
Step 4. External events: what an incoming webhook can and cannot do
CHBT has an “Incoming webhook” trigger: the script receives an address like https://app.chbt.io/webhook/inbound/<проект>/<путь>?token=…, the secret is generated by a button in the trigger settings, and any external system can launch the script with a regular POST request. This is convenient for internal tasks: CRM reported “payment has been completed” - the script created a deal using the “Transaction in CRM” action and clicked “Notify operator”.
But there is a limitation that needs to be stated directly: incoming webhook is not tied to a specific client dialog in MAX. It runs the script as a separate event, rather than continuing the correspondence with the person who wrote to the bot yesterday. The scheme “our system learned about the shipment → client Ivanov received a message in MAX” is not going to be used in CHBT through this trigger, and it is not worth promising it to clients.
What works instead:
- The client asks himself - step 3 above. Often this is enough: a person checks the status when he needs it, and not when the system wants to write.
- Newsletter by tag for events that concern a group and not one person: “delivery of size M has arrived” - everyone with the tag
waiting-M; “on Friday we work until 16:00” - everyone with the tagclient. The “Mailouts” section is available on the Basic plan and higher: text with {{name}}, audience by tags, delayed launch by date and time, sent/error statistics. Sending is done in a queue with a speed limit, so a thousand messages are not sent instantly - this is normal. How to mark up the database so that such broadcasts are accurate is discussed in the article about tags as a segmentation system; channel features - on the page broadcasts in MAX. - The operator writes by hand from “Conversations” - for isolated cases like “your order will be delayed by a day.” There is already a conversation, which means the message will get through.
- Your system writes via a public API — if the client has already written to the bot. The webhook about a new message transmits the conversation id, your system stores it next to the order and sends the text request upon shipment
POST /api/v1/conversations/:id/messages. The message goes to MAX as the operator’s response, the conversation goes to the person. Needs improvement: your script or the script in Make or n8n. Details - in API Help.
If targeted notifications for an external event are critical for your process, include this improvement in your launch plan.
What the bot tells the team: push, letter, “Operator” block
The notification script has a second recipient - an administrator or manager. The client clicked “Transfer”, left an order number that is not in the system, wrote “urgent” - the office should say all this right away, and not when someone opens “Conversations” after lunch. CHBT has three mechanisms for this, and all of them work without external integrations.
- Action "Notify operator" in the “Action” block. Text with variables - “{{name}} requests to transfer the record to {{visit_time}}” - appears in the account and goes Web Push to all project operators, even if the tab is closed. Push is turned on by the bell in “Conversations” and in “Account → Notifications”.
- Letter by e-mail about a new conversation and about a new lead - according to your account settings. Suitable if the office is not open all the time.
- Block "Operator" — the conversation is marked in “Conversations” as waiting for a person, the bot becomes silent. This is not a notification in its pure form, but it is what ensures that the request will not get lost among the bot’s responses.
What is not: CHBT does not send notifications to the owner in his personal MAX or Telegram. Notification channels for the team - office, push and mail. If you want to receive them on your phone, install the app.chbt.io account as an application (PWA): on Android - with the “Install” button, on iPhone - “Share” → “To Home screen”. Push come there too.
MAX channel boundaries in CHBT, which are better to know about before launch
The list is short, but each item came as a surprise to someone at some point.
- Only text and buttons. Photos, PDFs and videos cannot be sent to the MAX bot via CHBT. Please provide a link to the receipt, instructions or directions in the text of the message.
- Buttons are only under the script message. Each button is either a link or a transition to a thread, and it lives at the message to which it is attached. Therefore, at the end of each thread, repeat the menu with a separate “Message” with the buttons “Order Status”, “Transfer Entry”, “Operator” - otherwise the client will be left with the text without exit.
- The “prints” indicator is only available in the Telegram channel. In MAX the response appears without it; This is noticeable on long texts, so cut your messages into 2-3 short ones.
- Free plan - 30 conversations per month. Reminders after the “Pause” do not use up the limit: only people who wrote to the bot this month are counted. But when there are 30 of them, each next one, instead of a response according to the script, will receive a phrase about the limit, including a regular client, if he has not written to the bot this month - this is the most common reason why “the MAX bot is silent.” Mailings - only on Basic (650 ₽ per bot per month) and higher.
- There are no buttons or media in the broadcasts. Buttons and threads - only in script messages. If you want a reaction to the newsletter, write in the text: “answer “yes” and we will book” - the word “yes” is caught by the “Keyword” trigger.
- There are no counters for script blocks. Count how many people reached the reminder and clicked “Yes” as tags: put “Add tag” on the required branches and filter “Contacts”.
If some of your clients are on Telegram, the same notification flow works there too: channels are added to one project, and we have compiled the differences between platforms in comparison MAX or Telegram for bot. How to build an answering machine for incoming questions in MAX - a separate article about of the answering bot in MAX.
Checklist before launching notifications
- The link to the bot is at least two points where the client already communicates with you: a letter after the order and a receipt or a “thank you” page.
- Each entry point has its own payload and its own tag - otherwise in a month you won’t understand what worked.
- Go through the script from your phone through “Check Script” and through the real MAX: make sure that the reminder came after a pause and that the “Transfer” button called the operator.
- Check the “Condition” by time: artificially set the hour less than 9 and make sure that the message went to the morning thread.
- If you have configured an “HTTP request”, send a test order number and see that the bot substituted readable text in {{order_status}}, and not JSON.
- Make sure that the lead email and Web Push are enabled for someone who will actually respond, and not for the account owner who checks in once a week.
- Count the conversations: if there are more than 30 clients per month, the Basic plan is needed from the first day, otherwise some people will end up with a silent bot.
Notifications in MAX are not a separate module, but a regular flow plus the “link to bot everywhere” discipline. The first version - the “Notifications” template and one reminder with a pause - can be assembled in an evening on the Free plan. Create a MAX bot for notifications →
Notifications templateChatbot MAX for businessMailing by bot MAXHelp: webhooksTrigger chains in the bot