# Affaires dans le système CRM

Les transactions dans le CRM sont affichées sous forme de cartes avec des informations sur le client, le nom de la transaction, la description et le montant.

<div data-with-frame="true"><figure><img src="/files/179d7bcbf1767dd6ccb67eeb62242d8f3c8afa50" alt="" width="563"><figcaption></figcaption></figure></div>

Vous pouvez ajouter d’autres champs, si nécessaire (voir fig. 8-12).

## Bouton « Créer une transaction »

<div data-with-frame="true"><figure><img src="/files/a82f0690e605e3ed7079b2d601c8170d730a10ee" alt="" width="563"><figcaption></figcaption></figure></div>

Le **Créer un deal** la fenêtre vous permet de configurer et d’enregistrer rapidement une nouvelle transaction.

<div data-with-frame="true"><figure><img src="/files/33f0d7250ffde64261fc08a6480568b50bd050c3" alt="" width="563"><figcaption></figcaption></figure></div>

Remplissez le formulaire pour créer un client. Si le client existe, MaviBot vous invitera à le sélectionner dans la base de données.

<div data-with-frame="true"><figure><img src="/files/89a21a3fc5a833e910d6e469a1d44a9a76484841" alt="" width="563"><figcaption></figcaption></figure></div>

1. Si le client n’est pas trouvé, connectez un bot WhatsApp ou email au projet.
2. Envoyez un message au client via le canal connecté — cela créera automatiquement son profil.
3. Sélectionnez l’étape de l’entonnoir où la transaction doit être placée.

<div data-with-frame="true"><figure><img src="/files/9b1c6f8cbaa817599d4b361141b4face06f168d2" alt="" width="563"><figcaption></figcaption></figure></div>

Les variables de la transaction peuvent également être ajoutées dans la fenêtre modale :

<div data-with-frame="true"><figure><img src="/files/3a8644b74753a99d5b34d5ef6f2c08b3fc8e1b31" alt="" width="563"><figcaption></figcaption></figure></div>

Ensuite, cliquez sur **« Créer »** pour ajouter la transaction au système.

## Le bouton « Ajouter rapidement »

Ce bouton peut également aider à ajouter manuellement un nouveau client au CRM.

<div data-with-frame="true"><figure><img src="/files/e5ec7839c09b000ae75fb5d48c4e8330d3589f32" alt="" width="308"><figcaption></figcaption></figure></div>

Cliquez sur le bouton pour ouvrir une fenêtre dans laquelle vous pouvez saisir les coordonnées du client.

<div data-with-frame="true"><figure><img src="/files/543d74d2a755c5f2e31d709f37ebe39e6edfd622" alt="" width="308"><figcaption></figcaption></figure></div>

Fig. 26 Fenêtre de création rapide de transaction (Remarque : toutes les données sont fictives ; toute ressemblance est purement fortuite.)

Ainsi, la transaction sera créée dans l’étape **« Intéressé »** .

{% hint style="success" %}
Terminé !&#x20;

Maintenant, vous savez comment créer des transactions.
{% endhint %}

## Comment créer une transaction depuis le chatbot

Exemple de flux de chatbot pour créer une transaction via une fonction

Aperçu du processus :

1. Créez un bloc Début

<div data-with-frame="true"><figure><img src="/files/ea1b45a0ca3eefb7fc0c5cfd0cac012291e6379b" alt=""><figcaption></figcaption></figure></div>

2. Créez deux blocs de boutons.

<div data-with-frame="true"><figure><img src="/files/4da8aca2b7acac08636577fd4d8264d7686ccb8d" alt=""><figcaption></figcaption></figure></div>

3. Allez dans les paramètres de connexion, activez l’option « L’utilisateur saisit des données » et spécifiez le nom du service que l’utilisateur saisira.

<div data-with-frame="true"><figure><img src="/files/9b9eb395471c8bcb5e1e7de83d2972dd4c5b6356" alt=""><figcaption></figcaption></figure></div>

4. Ensuite, ajoutez la question « Quel est votre nom ? » dans un bloc blanc. Créez un nouveau bloc en dessous et activez **« L'utilisateur saisit des données »** dans ses paramètres de flèche.

<div data-with-frame="true"><figure><img src="/files/7c77d85d1c8d53f878dca6b062fe08a70602621b" alt=""><figcaption></figcaption></figure></div>

Le paramètre « L’utilisateur saisit des données » avec la variable `name` est activé dans chaque connexion menant au bloc « Entrez votre numéro de téléphone ».

5. Maintenant, créez deux blocs — « Chat » et « Fallback » — à partir du bloc « Entrez votre numéro de téléphone ».

<div data-with-frame="true"><figure><img src="/files/326f8a81d12503a22906ebbc0243d1d3df332995" alt=""><figcaption></figcaption></figure></div>

1. Sélectionnez le **« RegEx math »** dans les paramètres de connexion.
2. Activez le paramètre « L’utilisateur saisit des données ».
3. Saisissez le nom de la variable : `phone`.

<div data-with-frame="true"><figure><img src="/files/fbe5fd9e3c13b539fae51269d45502ca04304b5c" alt=""><figcaption></figcaption></figure></div>

Maintenant, dans le bloc Fallback, écrivez le message : **« C’est incorrect ! Réessayez. »**

Cette configuration fonctionnera comme suit : si votre client saisit un numéro de téléphone incorrect, il recevra le message du bloc Fallback. Le message Fallback continuera d’être envoyé jusqu’à ce que le client saisisse un numéro de téléphone correct.

6. Ensuite, demandez au client quel est son budget et créez immédiatement un nouveau bloc en dessous.

<div data-with-frame="true"><figure><img src="/files/fb433109c1374ad279310fc6821af65c482b59ed" alt=""><figcaption></figcaption></figure></div>

7. Activez le bouton **« L'utilisateur saisit des données »** paramètre dans la connexion et saisissez le nom de la variable : `budget`.

<div data-with-frame="true"><figure><img src="/files/38d814d88557198fd04c71c25afa087d8fa63cc1" alt=""><figcaption></figcaption></figure></div>

Activez la **« L'utilisateur saisit des données »** case à cocher sur la connexion et spécifiez la variable de téléphone client\_name.

8. Vous pouvez soit changer le type du dernier bloc en « Leads », soit utiliser `create_order` fonction.

   Voici l’option avec le bloc rouge « Leads ».

<div data-with-frame="true"><figure><img src="/files/93c1222deb2c79e0bcdf04d52ea1fda682da4a06" alt=""><figcaption></figcaption></figure></div>

Exemple.

<div data-with-frame="true"><figure><img src="/files/a6b7255931c429d8d5d12f4ac2dc752da5b5d1c8" alt=""><figcaption></figcaption></figure></div>

La fonction create\_order(name, budget, description, client\_name, phone, email, state\_id) est utilisée pour créer une transaction depuis le chatbot dans le CRM.

<details>

<summary>Paramètres</summary>

La transaction active actuelle dans l’entonnoir, ainsi que les variables, ne seront disponibles que dans les fonctions de gestion des transactions et du CRM.

<table><thead><tr><th width="303.3046875">Paramètres</th><th>Signification</th></tr></thead><tbody><tr><td><strong>name</strong></td><td><p>Nom de la transaction.</p><p>Paramètre facultatif ; s’il n’est pas transmis, il s’appliquera à la transaction active actuelle du client</p></td></tr><tr><td><strong>budget</strong></td><td>Valeur de la transaction (nombre). Paramètre facultatif ; s’il n’est pas transmis, il sera appliqué à la transaction active actuelle du client. Si vous transmettez une valeur non numérique dans le <strong>budget</strong> paramètre, la fonction renvoie la réponse : <strong>'budget must be a number'</strong></td></tr><tr><td><strong>description</strong> </td><td>Description de la transaction. Paramètre facultatif ;</td></tr><tr><td><strong>client_name</strong></td><td>(paramètre facultatif) chaîne, nom d’un nouveau client</td></tr><tr><td><strong>phone</strong></td><td>(paramètre facultatif) chaîne, numéro de téléphone d’un nouveau client</td></tr><tr><td><strong>e-mail</strong></td><td>(paramètre facultatif) chaîne, email d’un nouveau client</td></tr><tr><td><strong>state_id</strong> </td><td>le nombre vous permet de spécifier l’état dans lequel se trouvera la transaction après sa création (paramètre facultatif)</td></tr></tbody></table>

{% hint style="info" %}
Pour créer un client, la variable téléphone ou email doit être spécifiée. Si le téléphone est spécifié et qu’il n’existe aucun client avec ce numéro dans le projet, un nouveau sera créé.

Si la variable email est spécifiée sans la variable téléphone, et qu’il n’existe aucun client dans le projet avec cette adresse, un nouveau sera créé.
{% endhint %}

</details>

Dans le flux, nous avons collecté les données suivantes par étapes :

* Nom - nom de la transaction (dans l’exemple, I need a website et I need a landing) ;
* Budget — coût de la transaction, annoncé dans les blocs après que le client a sélectionné le type de site web ;
* Téléphone — numéro de téléphone du client
* Client\_name — nom du client

Si vous devez créer une transaction dans un état de transaction spécifique, transmettez le paramètre state\_id.

{% hint style="info" %}
Important !&#x20;

Si vous ne transmettez aucun paramètre, alors transmettez none à la place du paramètre (comme dans la fig. 36, où none est spécifié à la place du paramètre email).
{% endhint %}

Où trouver l’identifiant de l’état (paramètre state\_id)

<div data-with-frame="true"><figure><img src="/files/d46eae82720c097b479acdabfee727d4a2275ce8" alt="" width="316"><figcaption></figcaption></figure></div>

ID de l’étape :

<div data-with-frame="true"><figure><img src="/files/30ab0d448be88816ed18395e14a756371708beaf" alt="" width="375"><figcaption></figcaption></figure></div>

## Autres paramètres

La barre de recherche permet de rechercher une transaction par le nom du client.

<div data-with-frame="true"><figure><img src="/files/ed04cb408ac7222d9f4b4d279769fc45b2323c9d" alt="" width="375"><figcaption></figcaption></figure></div>

Filtre : permet de filtrer les transactions selon divers paramètres. Vous pouvez également enregistrer le filtre créé si vous l’utilisez fréquemment.

<div data-with-frame="true"><figure><img src="/files/a81709a4afad099405b932c4d93f0daac59474b1" alt=""><figcaption></figcaption></figure></div>

## Comment déclencher un bot lorsqu’une transaction passe à une nouvelle étape de l’entonnoir

Pour déclencher un bot lors du changement d’étape d’une transaction dans l’entonnoir CRM :

1. Allez dans les paramètres du projet.
2. Ouvrez les **« Callbacks »** section.

<div data-with-frame="true"><figure><img src="/files/b203b404ef00efc78286b880722d5f86884eaac3" alt=""><figcaption></figcaption></figure></div>

Cliquez sur **« Paramètres du callback de transition d’étape CRM »**:

<div data-with-frame="true"><figure><img src="/files/7fb0b71d618807f5e59556319d96839b81b16dcf" alt=""><figcaption></figcaption></figure></div>

Après cela, vous verrez une fenêtre modale avec tous les entonnoirs du projet. Vous pouvez choisir soit l’entonnoir entier, soit une étape spécifique.

<div data-with-frame="true"><figure><img src="/files/aa8589663a6afdd23391570b119fd40accb92064" alt="" width="563"><figcaption></figcaption></figure></div>

Puis enregistrez les paramètres.&#x20;

Maintenant, lorsque l’état de la transaction change — automatiquement ou manuellement — une notification est générée depuis n’importe quel endroit du site, ce qui peut être utilisé pour déclencher une réponse du bot.

{% hint style="info" %}
La notification ressemble à ceci : **crm\_state\_changed Nom de l’entonnoir : Nom de l’étape**
{% endhint %}

La variable callback\_query\_id apparaîtra également dans la carte du client, stockant l’identifiant de la transaction pour laquelle la notification a été envoyée.

<div data-with-frame="true"><figure><img src="/files/f08cdaae90a41f40bbb8f24c57e8b590018834f4" alt="" width="563"><figcaption></figcaption></figure></div>

Pour déclencher votre bot en réponse à cet événement, saisissez le texte du callback dans le champ de déclenchement d’une connexion ou d’un bloc basé sur un déclencheur (comme un bloc Début ou Trigger).

<div data-with-frame="true"><figure><img src="/files/2663d1083acb20a5e81550e5a358563cd7cc83e4" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="info" %}
Si vous souhaitez conserver le client dans le flux principal du chatbot, utilisez le bloc « Chat ». Ce bloc ne permet pas d’y accéder par transition ; ainsi, après avoir réagi au callback, le client reste dans l’entonnoir principal tout en recevant le message.

Si vous devez poursuivre l’entonnoir après un changement d’état, utilisez le bloc « Début ». Le client sera redirigé vers le bloc « Début » en réponse au callback, ce qui permettra à l’entonnoir de continuer à partir de là.
{% endhint %}

### Comment déplacer une transaction

Pour déplacer une transaction vers n’importe quelle étape de l’entonnoir, cliquez simplement dessus et faites-la glisser avec le bouton gauche de la souris vers l’étape souhaitée.

<div data-with-frame="true"><figure><img src="/files/3bdcdc4ecba462c7b6cafe91e9f26025a46ad9b4" alt="" width="563"><figcaption></figcaption></figure></div>

Lorsqu’une transaction est déplacée vers **« Échec »** ou **« Archivé, »** une fenêtre modale apparaît pour vous inviter à spécifier la raison. Cette action crée une variable de transaction correspondante : `failed_reason` ou `archived_reason`.

La raison fournie est enregistrée dans la variable correspondante. Si la transaction est ensuite restaurée, la variable `restored_from_failed` ou `restored_from_archived` est ajoutée avec la valeur `« true »`.

## Comment empêcher le déplacement d’une transaction vers l’étape spécifiée

Si vous devez restreindre les étapes vers lesquelles les transactions peuvent être déplacées manuellement, configurez la restriction dans les paramètres d’état.

Ouvrez l’entonnoir et accédez aux paramètres de l’étape.

<div data-with-frame="true"><figure><img src="/files/d46eae82720c097b479acdabfee727d4a2275ce8" alt="" width="316"><figcaption></figcaption></figure></div>

Utilisez les paramètres de l’étape pour restreindre le déplacement des transactions vers des étapes spécifiques. Sélectionnez les étapes souhaitées dans la liste de contrôle (sélections multiples autorisées) et enregistrez les modifications.

<div data-with-frame="true"><figure><img src="/files/05c2f415cd48dfe8805cedad5f2880debf99fb77" alt="" width="563"><figcaption></figcaption></figure></div>

Après l’enregistrement, les étapes restreintes seront mises en évidence visuellement dans MaviBot CRM. Elles apparaîtront plus sombres, et le déplacement des transactions vers elles sera désactivé. Si des restrictions de déplacement d’étape sont appliquées, ces étapes seront également masquées dans l’interface de discussion client.

## Réaction à la suppression d’une transaction dans le CRM

Lorsqu’une transaction est supprimée dans le CRM, le bot reçoit un callback nommé **`crm_lead_removed`** pour avertir le client.

<div data-with-frame="true"><figure><img src="/files/84343aea9a7580de44a78191ffdf04ee13c0f2dd" alt="" width="465"><figcaption></figcaption></figure></div>

## Comment changer les transactions

Lorsque des actions sont effectuées sur les transactions directement dans la page CRM, les callbacks suivants sont déclenchés :

* `change_responsible_order` — le responsable attribué à la transaction a changé.
* `crm_state_changed` — la transaction a été déplacée vers une autre étape de l’entonnoir.
* `crm_system_state_changed` — la transaction a été déplacée vers **Perdu**, **Gagné**, ou **Archivé**.
* `crm_lead_removed` — la transaction a été supprimée.

De plus, les variables du client incluront `callback_order_id`, qui contient l’ID de la transaction concernée par l’action CRM.

Lors du traitement de l’un de ces callbacks, la transaction correspondante devient temporairement active dans le bloc de traitement, ce qui vous permet d’accéder directement à ses variables.

Une fois que le flux passe au bloc suivant, la logique standard de MaviBot reprend — tout accès ultérieur aux variables de la transaction renverra les valeurs de la transaction active la plus récente du client.

### Comment passer une transaction à un état actif dans le bot

Le `switch_order(order_id)` la fonction vous permet de rendre active une transaction spécifique afin d’accéder à ses variables.

* `order_id` — paramètre facultatif pour l’ID de transaction spécifique. S’il est omis, la transaction la plus récente du client devient active.
* Pour activer une transaction particulière, transmettez son ID à la `switch_order(order_id)` fonction.
* Si vous appelez cette fonction dans un bloc calculateur et fournissez l’ID d’une transaction cible, vous pourrez accéder aux variables de cette transaction dans tous les blocs suivants.

<div data-with-frame="true"><figure><img src="/files/1e290bf3a333e1b44f9d16949d889f51b5e88e53" alt="" width="563"><figcaption></figcaption></figure></div>

Si le `switch_order` si la fonction est appelée avec l’ID d’une transaction supprimée ou inexistante, aucun changement n’aura lieu. Dans ce cas, la fonction renverra l’ID de la transaction actuellement active pour le client (ou `None` si le client n’a aucune transaction active).

Vous pouvez donc vérifier si le changement a réussi en comparant le `order_id` transmis à la fonction avec la valeur qu’elle renvoie :

`switch_result = switch_order(order_id)`

`result = if(switch_result == order_id, value_if_true, value_if_false)`

<div data-with-frame="true"><figure><img src="/files/a50edf83025a14cfb0696ba022830eda8e6dfaa9" alt="" width="563"><figcaption></figcaption></figure></div>

Si aucun argument n’est transmis à la `switch_order()` la fonction activera la transaction la plus récente du client. Cela vous permet de rétablir ou de réinitialiser la transaction active — par exemple, après avoir effectué des opérations avec une autre transaction, ou lorsque vous n’avez pas besoin de conserver activée temporairement une transaction déclenchée par un callback CRM.


---

# 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/doc/fr/crm/setting/deals.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.
