# Move a client after inactivity

During a conversation with a client, a problem may arise where they either don’t complete the target action or get stuck in the last block of the funnel, and the chatbot doesn’t respond to their actions. To prevent this, you can set up an automatic transfer of the client to another block without creating duplicate movement paths.

## How to automatically move a client through the funnel?

As an example of automatically moving a client through the funnel, we’ll use a simple chatbot flow that asks the user whether they will attend an event:

<figure><img src="/files/Y0PbKb2AHoOMH4ofHs69" alt="" width="223"><figcaption><p>Fig. 1</p></figcaption></figure>

From the example (Fig. 1), you can see that the client moves further down the funnel only if they click the “Yes!” button sent by the penultimate block. (In other cases, the trigger to continue down the funnel can be practically anything, depending on your chatbot flow conditions.)

In this example (Fig. 1), the client Nastya decided not to click the button in the chatbot, so the conversation got stuck in the penultimate block of the funnel:

<figure><img src="/files/ipcb1hLW6euu6OVUizSx" alt="" width="494"><figcaption><p>Fig. 2</p></figcaption></figure>

To solve this issue, you need to take a couple of simple steps in your flowchart: to continue the dialogue with the client or move them through the funnel after a certain amount of time (for example, after *n* minutes), draw an additional arrow from the penultimate block and set the time delay after which the client will automatically proceed to the next block in the funnel.

<figure><img src="/files/mldufF9OYKKFczVf5fkJ" alt=""><figcaption><p>Create a second arrow leading to the block</p></figcaption></figure>

Now, set a timer with the desired time interval in the arrow settings, so that the client automatically moves to the next block:

<figure><img src="/files/PpLxvdMjZZvYaZaujqyr" alt="" width="563"><figcaption><p>Рис. 3</p></figcaption></figure>

Be sure to activate the **“Cancel if block is left”** toggle (Fig. 3) to prevent the message from being sent again after the timer expires if the client has already moved to the next block (for example, by clicking a button).

<figure><img src="/files/uEJVvSokSrUB0ASIXngH" alt="" width="563"><figcaption><p>Example of automatic transition</p></figcaption></figure>

The example above shows that the bot automatically moves the client through the funnel and sends the final message—even if they didn’t click the button. <br>

Now, with the help of the second arrow with the set timer, the client will be moved further along the funnel after a certain period of time.

## How to move a client from the last block to another block?

In the flowchart (Fig. 4), you can see that the penultimate block determines which block your client will enter, depending on the button they press in the block with two branches:

<figure><img src="/files/cPiZtmN5wKjREtXdFSnN" alt="" width="563"><figcaption><p>Fig. 4. Simple chatbot flowchart</p></figcaption></figure>

If the client clicks one of the two buttons, they will stop in the last block and won’t be able, for example, to return to the previous block and choose a different option when needed. The chatbot simply won’t respond to pressing another button because the user has already moved to the last block, which doesn’t allow further movement through the funnel (see the example below).

<figure><img src="/files/fVPr5kbeeliSjSleDt3p" alt="" width="518"><figcaption><p>The client has moved to the last block, and the bot does not respond to repeated button presses.</p></figcaption></figure>

In this case, you can solve the problem in two ways:

1. Using the **“Not State”** block — this function keeps the client in the block with the button choices without moving them to the next blocks.
2. Using **callback buttons** — this function moves the client to the next blocks but still allows them to change their choice if they are not satisfied with the result.

### The “Not State” block

The “Not State” block is a gray block. Unlike the “Dialog State” block, it has no conditions, and clients cannot be moved into it directly.

In our flow, the “Not State” block is perfect because the user won’t leave the penultimate block and can press a different button if they’re unhappy with their first choice.

To set this up, go to the funnel builder and select the block type **“Not State”** (don’t confuse it with **“Not State with condition”**).

<figure><img src="/files/sYsOnJye7O6y7Biw6WWP" alt=""><figcaption><p>Fig.5 "Not State" block</p></figcaption></figure>

Now our flowchart looks like this:

<figure><img src="/files/rEPRyDeNYEu5m1hOKSsS" alt="" width="563"><figcaption><p>Fig. 6</p></figcaption></figure>

To test that the flow works properly, open the bot tester. There, you’ll see that any button can be pressed regardless of the client’s previous choice:

<figure><img src="/files/6NuB6JRQPsnWVabPEb8r" alt="" width="518"><figcaption></figcaption></figure>

### Callback buttons

If you do need the client to move further along the funnel and transition to other blocks, the callback button functionality will help.

To do this, remove the arrows leading to the final blocks in the flowchart and set those blocks’ type to **“Primary condition check”**:

<figure><img src="/files/D9RiwhwVWFRVILLXyCP3" alt="" width="563"><figcaption><p>Fig. 7. Flowchart with “Primary condition check” blocks</p></figcaption></figure>

Let’s go to the button settings within the block:

<figure><img src="/files/9BMO85U1aapwLoPrVpaX" alt=""><figcaption><p>Fig. 8. </p></figcaption></figure>

The settings window for the “Yes!” button will open. Here, do the following:

* Select the button type **“Callback button”**
* In the response message text, enter the words or phrases needed for the condition field in the **“Primary condition check”** block.

<figure><img src="/files/eN4O9xpqmEOdndwdoGt3" alt="" width="563"><figcaption><p>Fig. 9. Changing the button settings</p></figcaption></figure>

Set up the second button in the same way (in our flow, this is the "No" button).

{% hint style="warning" %}
Use different texts/phrases for the **“response message text”** fields in the button settings within the same project to avoid chatbot errors.
{% endhint %}

Next, go to the settings of the **Primary condition check** blocks, where you need to enter the words you typed in the **“response message text”** field, using the match type **“Exact match”**:

<figure><img src="/files/BDsnlk2OLP9mcHbl0bvd" alt="" width="563"><figcaption><p>Fig. 10. Settings of the "Primary condition check" block</p></figcaption></figure>

Set up the second block for the “No” button in the same way.

This way, you’ve learned how to automatically move a client through the funnel using three different methods.

## Video version of the article

{% embed url="<https://youtu.be/vO5Q8aLKkrk>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/how-to-do.../move-a-client-after-inactivity.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
