Chatbot builder
New to MaviBot? Start with our guide.
Please note!
YOUR PROJECTS ARE NEVER DELETED and remain on the platform indefinitely.
Upon subscription expiry, the following data will be removed:
Messenger connections: disabled after 3 weeks.
Long messages: those over 800 characters are deleted after 3 months.
Conversations: all chats are stored for 2 to 6 months.
Clients: removed after 1 year.
Additional info:
Undelivered messages are kept for 2 weeks.
Messenger access: revoked 3 weeks post-expiry if no payment is made.
System limits:
Scheduled messages: Max 32 per client.
Test bots: Limited to 1,000 messages/day (including test account messages).
How to create the first block in a funnel
Every chatbot built in MaviBot is made up of blocks.

A block is a set of chatbot commands and settings, configured by you or our developers for your project.
Each block provides the bot with instructions on how to respond or act, and determines where the client should go next in the funnel.
Creating a block is simple: double-click any empty space in the workspace to get started.
You can move a block (or multiple blocks) anywhere within the builder canvas to optimize the layout and give your funnel a cleaner, more organized appearance.
To make it easier to understand, we’ll walk through a sample funnel diagram and explain how the editor works using that example.

You’re looking at a chatbot flow. The flow consists of blocks and connections.
Start block (Green): This is where every conversation begins.
Trigger blocks (Dark Gray): These blocks activate specific flows based on user actions.
When a user sends a message or clicks a button, they can move from one block to another — but only if the transition condition is met. Conditions can be set on both blocks and Connectors.

To make the bot launch when a user clicks the "Start" button in Telegram (or any other messenger), you need to specify a trigger word in the green block.
Trigger blocks come in two colors: green and gray.

There are four types of condition blocks:
Start
Trigger
The "Start" block has the highest priority among all condition blocks — meaning it will be triggered first if its condition matches any of the client’s actions.
Step 1: Create a "Chat" block
To do this, click anywhere on the empty canvas in the flow builder.

Good to know!
What is the #{none} construction?
The #{none} construction, which appears by default in the response field, is a special placeholder used to handle unspecified or general input.
This means, for example, that a condition block with #{none} will be triggered when a client sends any message (if no specific keyword or trigger is defined).
If you leave #{none} in the message field, it allows you to route clients into a specific funnel block, regardless of the content of their message.
To create a block that doesn’t send a message, enter #{none} in the response field (this is set by default).
Then click on the block and select its type — "Start".

Select the "Start" block type. This will open the condition settings panel.
For this first test in MaviBot's internal mode, set a simple trigger word like "Hello".

Now, set up the bot's response for when the trigger is activated. For example, enter the message: "Hello! How can I help you?"

Then be sure to click "Save" so all settings are applied to the block:

Step 2: Create the next block
To create a new block and connect it to the previous one, open the block's additional settings menu.

To build a seamless conversation flow, your blocks need to be connected. Here’s how to do it quickly:
Locate and open the additional settings menu for the block you want to connect from (e.g., your "Start" block).
Find and click the button labeled "Create a block below."

Now your funnel contains two blocks which are connected.
Please note!
What does this mean in practice?
If your bot has two separate conversation flows, a user cannot go through both simultaneously. They will follow one flow or the other, but never both at the same time.
Need to send a message without interrupting their current flow?
Use gray blocks — either "Fallback" or "Trigger" — to send separate messages without disrupting the user's active conversation.
Connectors between blocksguide the client through the funnel flow.
You can also set conditions directly on the connectors. This allows you to control the flow, for instance, by making a button click or a successful payment a requirement to move forward.
Let’s create a button in the “Chat” block so the client can move to the next block.
Step 3. Create a button
Click on the “Start” block. You’ll see a “Buttons” tab:

Click on the tab — this will open the button settings menu.

Click “+ Add Button”, and a button settings menu will appear.

In the button text field, enter any label you like — for example, “GO”.

Click “Add”, and the button will appear in the block settings.

Buttons can be displayed in two ways: in the message keyboard or directly within the message text.
Note that some button types may not be supported in certain messengers (like WhatsApp).
For optimal compatibility, use the "Auto" option. This will automatically display the button in the format best supported by each specific messenger.

And don’t forget to save the block settings.

All done! You’ve created your first trigger block with a button! 🎉
Step 4. Set up the connection
Let's configure the connector so that when a client clicks the button, they move to the next block.
Here's how:
Locate the arrow (connector) leading from your button block.
Hover your cursor over the arrow.
Click the gear icon that appears to open its settings.

The connection settings will be opened, where you need to choose your created button.

Then you need to choose "Exact match" in the "Match type":

And click "Save".

Once you save the connection settings, the condition will be displayed directly on the connector. This gives you a clear visual reference for what triggers the transition between blocks.

Connection can be curved:

This allows you to clearly see connections that overlap. To do this, grab the arrow with your mouse at the point you want to bend it and drag it to the desired location. There’s no limit to the number of bends you can make.
To delete unnecessary bends from a connector, simply double-click the desired node with the left mouse button.
Step 5. “Chat” block
By default, when you clicked on the canvas earlier, a white “Chat” block was created — this is the most commonly used block when building chatbot flows.
You can configure almost anything inside a “Chat” block (except for conditions). In fact, the majority of your chatbot will likely consist of “Chat” blocks.

Unlike condition blocks, a “Chat” block can only be accessed if:
It is connected by an connection from a previous block, or
You’ve sent a mailing that directs users to it.
If you want the client to enter the “State” block based on a condition, the condition must be set either:
In the connection (as shown in Step 4), or
Using a timer.
In the "Chat" block: enter the message that the bot will send to the client (when they click on the button in the "Start" block).

Be sure to click “Save” in the “Chat” block settings.
You’ve now created your first chatbot!
Chatbot testing
After creating — or even while building — any chatbot, it’s important to test the bot to ensure your flows work correctly and the settings are configured properly.
You can connect the bot to a project and test it there. However, if you create a bot for WhatsApp, keep in mind that you can’t send messages to yourself.
That’s why there’s another way: you can open an online chat with the bot and interact with it directly.
To do this, click the button in the lower-left corner of the builder:

When you click the “Test chatbot” button, a test window will open.

The left area of the test window displays the blocks you’ve created for the chatbot.

On the right side, you’ll see the test client data — that is, your own simulated user profile.

In the center of the screen, you’ll see the online chat where you can test the bot. To do this, type the trigger phrase from the “Start” block.

Here’s how the bot works:

Congratulations! 🎉 You've successfully built a functional chatbot that includes:
Trigger configuration in both blocks and connectors
A fully operational button
Real-time testing that let you see exactly how your chatbot works
About the "Testing" tab
After creating the chatbot flow in test mode, you will see all the panels with information about the blocks on the left.

Each panel on the left side of the screen displays the block number, its type, and its content.

You can filter and display blocks by their type using the corresponding "Filter" button.

To test the execution of a single block from the flow, you can select the corresponding block by clicking on it and then click "Send block."

The selected block will be sent on behalf of the chatbot in the middle section of the screen — the testing window.
In this same area, you can test the entire block flow starting from the very first block in the diagram.
On the right side of the screen, you’ll find the test client view.

In this same client window, the following features are available:
– Assign or add tags/lists to the client; – Add variables; – View the variables assigned to the client through the chatbot flow execution.
This way, you can fully test the chatbot flow (or any part of it) and immediately view the client card and their data.
Response options in the bot
Now let’s add a question with multiple response options to our starter flow. Response options are represented by connectors coming out of the block. One connector will have the condition “Yes,” and the other — “No.”
To do this, click on the second block labeled “Chat” and create two blocks below it using the additional settings menu.

Now that we've added two blocks to our flow, the next step is to configure the trigger on their connection.
Here's how:
Hover over the connector (arrow) leading to the second block.
In the trigger field that appears, enter the user response that should activate this path, for example, "Yes".

Then make sure to save it. After that, specify the other response option in the settings of the second arrow as well.

In the previous block, from which the two arrows with response options originate, enter any question.

Now, in the "Chat" blocks that the connection with response options lead to, enter the bot’s response message.

Now the final flow looks as follows:

Here’s how this flow works:
The user types “Hello” and enters the green block.
Then, the user clicks a button and moves to the second block;
The user types “Yes” or “No” and proceeds to one of the states depending on the answer.
But what if the user types something else — neither “Yes” nor “No”? The conversation won’t move to any of the following states and will remain stuck in the current one. The dialogue will stall.
How to create a loop
To prevent the bot from falling silent when a user sends a message that doesn't match any of the triggers on the connectors, we’ll add a loop.
To do this, loop the question by adding an arrow without any trigger that points back to the same block.
To create a loop, click on the block where you ask the client a question. In the settings form that opens, click the three dots in the upper right corner, then select “Create a loop.”

This will create a loop in the flow.

Now, if the client sends a message to the bot that differs from “Yes” or “No,” the message from the second block will be sent again.
What if the client doesn't respond to the bot’s message?
You can send follow-up messages using a timer to remind the client that a response is needed.
So, when the user enters the block with the question “Are you happy?”, and doesn’t answer with “Yes” or “No”, we want to send a message like:“You didn’t answer the question :(” and then ask the question again.
To do this, we’ll use a timer.
How to create a message with a timer
Let’s create a new block that the arrow from the "Are you happy?" block will lead to, and also remove the loop. To do this, hover over the loop and click the cross icon to delete it.

Now, go to the settings of the arrow that leads to the new block from the question block.

In the arrow settings, there is a panel called “Delay before response” — this is a timer that sets the amount of time after which the flow will automatically proceed to the next block.

You should also activate the checkbox “Cancel if left the block” so that the message won't be sent if the client does respond to the question.

Now, let’s enter the message in the new block:

And from the new block, draw an connection back to the question block.
To do this, hover over the block — you’ll see a dot appear that allows you to create an connection:

Step 1. Click the button and drag the connector to the block with the question.
Step 2. The two connectors will overlap, so you'll need to drag one of them higher. To do this, hover your mouse over the connectors and look for the elongated handle — use it to adjust the curve and separate the connection.
Step 3. Then, click and hold the connector and drag it upward.
Now go to the settings of the newly created arrow and set a 1-second timer, so that the client is redirected back to the question block.
The final flow looks as follows:

You’ve successfully created your first chatbot — complete with buttons, connectors, response options, loops, and timed redirect arrows!
How to add funnel stages (lists)
Using funnel stages (lists), you can organize your bot in a way that’s most convenient for you. It’s still one large workspace where all branches of the bot are located, but visually it’s divided into separate pages. The bot itself continues to operate as a single flow.
When flow chains are broken across lists, linking blocks are created automatically.
To add a new list, click the plus icon in the bottom right corner of the workspace and enter the name of the new list.

To continue the current flow on a new list, click on a block or select multiple blocks, then click the arrow↪️ with the tooltip “Click to move selected items to another list.”
When the warning about moving blocks appears, choose the desired list from the dropdown at the bottom near the plus icon.

In the window that opens, you’ll see instructions on what needs to be done to complete the transfer.
How to connect messengers
After testing, you can connect the flow to messengers. To do this, go to the Messengers section in the main menu.

Next, you need to click on the button for the desired messenger.
Read how to connect bots in different messengers in the “Messengers” article.
Last updated