# Negocios en el sistema CRM

Los deals en el CRM se muestran como tarjetas con información sobre el cliente, el nombre del deal, la descripción y el importe.

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

Puedes añadir otros campos, si es necesario (ver fig. 8-12).

## Botón "Crear un deal"

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

El **Crear un negocio** ventana te permite configurar y guardar rápidamente un nuevo deal.

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

Rellena el formulario para crear un cliente. Si el cliente existe, MaviBot te pedirá que lo selecciones de la base de datos.

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

1. Si no se encuentra al cliente, conecta un bot de WhatsApp o de correo electrónico al proyecto.
2. Envía un mensaje al cliente a través del canal conectado; esto creará automáticamente su perfil.
3. Selecciona la etapa del embudo donde debe colocarse el deal.

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

Las variables del deal también se pueden añadir en el formulario modal:

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

A continuación, haz clic en **"Crear"** para añadir el deal al sistema.

## El botón "Añadir rápidamente"

Este botón también puede ayudar a añadir manualmente un nuevo cliente al CRM.

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

Haz clic en el botón para abrir una ventana donde puedes introducir los datos del cliente.

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

Fig. 26 Ventana de creación rápida de deal (Nota: Todos los datos son ficticios; cualquier semejanza es pura coincidencia.)

Así, el deal se creará en la **"Interesado"** etapa.

{% hint style="success" %}
¡Listo!&#x20;

Ahora ya sabes cómo crear deals.
{% endhint %}

## Cómo crear un deal desde el chatbot

Ejemplo de flujo del chatbot para crear un deal mediante una función

Resumen del proceso:

1. Crea un bloque de Inicio

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

2. Crea dos bloques de botón.

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

3. Ve a la configuración de la conexión, activa la opción "El usuario introduce datos" y especifica el nombre del servicio que el usuario introducirá.

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

4. Luego, añade la pregunta "¿Cómo te llamas?" en un bloque blanco. Crea un nuevo bloque debajo de él y activa **"El usuario introduce datos"** en la configuración de su flecha.

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

La configuración "El usuario introduce datos" con la variable `name` está activada en cada conexión que conduce al bloque "Introduce tu número de teléfono".

5. Ahora, crea dos bloques — "Chat" y "Fallback" — a partir del bloque "Introduce tu número de teléfono".

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

1. Selecciona el **"RegEx math"** tipo en la configuración de la conexión.
2. Activa la configuración "El usuario introduce datos".
3. Introduce el nombre de la variable: `phone`.

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

Ahora, en el bloque Fallback, escribe el mensaje: **"¡Esto es incorrecto! Inténtalo de nuevo."**

Esta configuración funcionará así: si tu cliente introduce un número de teléfono incorrecto, recibirá el mensaje del bloque Fallback. El mensaje Fallback seguirá enviándose hasta que el cliente introduzca un número de teléfono correcto.

6. Luego, pregunta al cliente por su presupuesto e inmediatamente crea un nuevo bloque debajo de él.

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

7. Activa el interruptor de **"El usuario introduce datos"** configuración en la conexión e introduce el nombre de la variable: `budget`.

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

Activa la **"El usuario introduce datos"** casilla en la conexión y especifica la variable de teléfono client\_name.

8. Puedes cambiar el tipo del último bloque a "Leads" o usar `create_order` función.

   Aquí está la opción con el bloque rojo "Leads".

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

Ejemplo.

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

La función create\_order(name, budget, description, client\_name, phone, email, state\_id) se utiliza para crear un deal desde el chatbot en el CRM.

<details>

<summary>Parámetros</summary>

El deal activo actual en el embudo, junto con las variables, estará disponible solo en las funciones de gestión de deals y CRM.

<table><thead><tr><th width="303.3046875">Parámetros</th><th>Significado</th></tr></thead><tbody><tr><td><strong>name</strong></td><td><p>Nombre del deal.</p><p>Parámetro opcional; si no se pasa, se aplicará al deal activo actual del cliente</p></td></tr><tr><td><strong>budget</strong></td><td>Valor del deal (número). Parámetro opcional; si no se pasa, se aplicará al deal activo actual del cliente. Si pasas un valor que no sea numérico en el <strong>budget</strong> parámetro, la función devuelve la respuesta: <strong>'budget must be a number'</strong></td></tr><tr><td><strong>description</strong> </td><td>Descripción del deal. Parámetro opcional;</td></tr><tr><td><strong>client_name</strong></td><td>(parámetro opcional) cadena, nombre de un nuevo cliente</td></tr><tr><td><strong>phone</strong></td><td>(parámetro opcional) cadena, número de teléfono de un nuevo cliente</td></tr><tr><td><strong>correo electrónico</strong></td><td>(parámetro opcional) cadena, correo electrónico de un nuevo cliente</td></tr><tr><td><strong>state_id</strong> </td><td>el número te permite especificar el estado en el que estará el deal después de su creación (un parámetro opcional)</td></tr></tbody></table>

{% hint style="info" %}
Para crear un cliente, debe especificarse la variable de teléfono o correo electrónico. Si se especifica el teléfono y no hay ningún cliente con ese teléfono en el proyecto, se creará uno nuevo.

Si la variable de correo electrónico se especifica sin la variable de teléfono, y no hay ningún cliente en el proyecto con esta dirección, se creará uno nuevo.
{% endhint %}

</details>

En el flujo, hemos recopilado los siguientes datos por etapas:

* Nombre - nombre del deal (en el ejemplo, I need a website e I need a landing);
* Presupuesto — coste del deal, que se anunció en bloques después de que el cliente seleccionó el tipo de sitio web;
* Teléfono — el número de teléfono del cliente
* Client\_name — el nombre del cliente

Si necesitas crear un deal en un estado de transacción específico, pasa el parámetro state\_id.

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

Si no pasas ningún parámetro, entonces pasa none en lugar del parámetro (como en la Fig. 36, donde se especifica none en lugar del parámetro email).
{% endhint %}

Dónde encontrar el id del estado (parámetro state\_id)

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

ID de la etapa:

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

## Otras configuraciones

La barra de búsqueda sirve para buscar un deal por el nombre del cliente.

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

Filtro: te permite filtrar deals con varios parámetros. También puedes guardar el filtro creado si lo usas con frecuencia.

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

## Cómo activar un bot cuando un deal pasa a una nueva etapa del embudo

Para activar un bot cuando cambia la etapa de un deal en el embudo del CRM:

1. Ve a la configuración del proyecto.
2. Abre **"Callbacks"** sección.

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

Haz clic en **"Configuración de callback de transición de etapa del CRM"**:

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

Después de eso, verás una ventana modal con todos los embudos del proyecto. Puedes elegir todo el embudo o una etapa específica.

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

Luego guarda los ajustes.&#x20;

Ahora, cuando el estado del deal cambia —ya sea automáticamente o manualmente—, se genera una notificación desde cualquier parte del sitio, que puede usarse para activar una respuesta del bot.

{% hint style="info" %}
La notificación se ve así: **crm\_state\_changed Nombre del embudo:Nombre de la etapa**
{% endhint %}

La variable callback\_query\_id también aparecerá en la tarjeta del cliente, almacenando el identificador del deal para el que se envió la notificación.

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

Para activar tu bot en respuesta a este evento, introduce el texto del callback en el campo de disparador de una conexión o de un bloque basado en disparadores (como un bloque Start o Trigger).

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

{% hint style="info" %}
Si quieres mantener al cliente en el flujo principal del chatbot, usa el bloque "Chat". No se puede pasar a este bloque, así que después de reaccionar al callback, el cliente permanece en el embudo principal mientras sigue recibiendo el mensaje.

Si necesitas continuar el embudo después de un cambio de estado, usa el bloque "Start". El cliente será redirigido al bloque "Start" en respuesta al callback, lo que permitirá que el embudo continúe desde allí.
{% endhint %}

### Cómo mover un deal

Para mover un deal a cualquier etapa del embudo, simplemente haz clic y arrástralo con el botón izquierdo del ratón hasta la etapa deseada.

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

Cuando un deal se mueve a **"Failed"** o **"Archived,"** aparece una ventana modal que te pide especificar el motivo. Esta acción crea una variable de deal correspondiente: `failed_reason` o `archived_reason`.

El motivo proporcionado se guarda en la variable correspondiente. Si el deal se restaura más tarde, la variable `restored_from_failed` o `restored_from_archived` se añade con el valor `"true"`.

## Cómo impedir mover un deal a la etapa especificada

Si necesitas restringir las etapas a las que se pueden mover manualmente los deals, configura la restricción en los ajustes de estado.

Abre el embudo y ve a la configuración de la etapa.

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

Usa la configuración de la etapa para restringir el movimiento de deals a etapas específicas. Selecciona las etapas deseadas en la lista de verificación (se permiten varias selecciones) y guarda los cambios.

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

Después de guardar, las etapas restringidas se resaltarán visualmente en MaviBot CRM. Aparecerán más oscuras y mover los deals a ellas estará deshabilitado. Si se aplican restricciones de movimiento de etapas, esas etapas también se ocultarán en la interfaz de chat del cliente.

## Reacción a la eliminación de un deal en CRM

Cuando se elimina un deal en el CRM, el bot recibe un callback llamado **`crm_lead_removed`** para notificar al cliente.

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

## Cómo cambiar de deal

Cuando se realizan acciones sobre deals directamente en la página del CRM, se activan los siguientes callbacks:

* `change_responsible_order` — ha cambiado el gestor asignado al deal.
* `crm_state_changed` — el deal se movió a una etapa diferente del embudo.
* `crm_system_state_changed` — el deal se movió a **Lost**, **Won**, o **Archived**.
* `crm_lead_removed` — el deal fue eliminado.

Además, las variables del cliente incluirán `callback_order_id`, que contiene el ID del deal específico afectado por la acción del CRM.

Al procesar uno de estos callbacks, el deal correspondiente se vuelve temporalmente activo dentro del bloque de procesamiento, lo que te permite acceder directamente a sus variables.

Una vez que el flujo pasa al siguiente bloque, se reanuda la lógica estándar de MaviBot: cualquier acceso posterior a las variables del deal devolverá los valores del deal activo más reciente del cliente.

### Cómo cambiar un deal a un estado activo en el bot

El `switch_order(order_id)` la función te permite hacer activo un deal específico para acceder a sus variables.

* `order_id` — parámetro opcional para el ID del deal específico. Si se omite, el deal más reciente del cliente se vuelve activo.
* Para activar un deal concreto, pasa su ID a la `switch_order(order_id)` función.
* Si llamas a esta función dentro de un bloque de calculadora y proporcionas un ID de deal de destino, podrás acceder a las variables de ese deal en todos los bloques siguientes.

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

Si el `switch_order` Si la función se llama con el ID de un deal eliminado o inexistente, no se producirá ningún cambio. En este caso, la función devolverá el ID del deal actualmente activo para el cliente (o `None` si el cliente no tiene ningún deal activo).

Por tanto, puedes verificar si el cambio fue exitoso comparando el `order_id` pasado a la función con el valor que devuelve:

`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/a3df7b12fb8b45090c7cb0a7f956a504b5d77926" alt="" width="563"><figcaption></figcaption></figure></div>

Si no se pasa ningún argumento a la `switch_order()` función, activará el deal más reciente del cliente. Esto te permite revertir o restablecer el deal activo; por ejemplo, después de realizar operaciones con otro deal, o cuando no necesitas mantener temporalmente activo un deal activado por un callback del 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/es/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.
