> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shimli.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Catálogo de nodos

> Los 73 pasos del Flow Builder de Shimli, agrupados por familia — qué hace cada uno y cuándo usarlo.

Todos los pasos disponibles en el canvas, por familia. Si buscas cómo se conectan entre sí, empieza por [Qué es el Flow Builder](/flows/introduction).

## Nodos de inicio

Todo flujo arranca en uno. El tipo que elijas define **cuándo se dispara** y qué información trae.

| Paso                              | Cuándo arranca                                                                                                         |
| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **General**                       | Alguien escribe y ningún otro flujo reclama ese mensaje. Es el punto de entrada por defecto.                           |
| **Webhook**                       | Un sistema externo llama a una dirección que Shimli genera. Lo que envíen queda disponible dentro del flujo.           |
| **Desde campaña**                 | Una campaña le envía a ese contacto.                                                                                   |
| **Al cerrar conversación**        | Un agente cierra la conversación en el inbox. Trae el caso con el que la cerró — ideal para encuestas de satisfacción. |
| **Cambio de proceso**             | El contacto se mueve a otra etapa de un proceso.                                                                       |
| **Mensaje del cliente en ticket** | El cliente escribe mientras un agente humano ya tiene la conversación.                                                 |
| **Mensaje del agente en ticket**  | El agente escribe dentro de un ticket abierto.                                                                         |
| **Subflujo**                      | Solo arranca cuando otro flujo lo llama. Nunca por sí solo.                                                            |

<Callout type="info">
  El nodo de inicio **no se puede eliminar** y sin él no hay flujo.
</Callout>

<Callout type="info">
  Los **webhooks** vienen con seguridad incorporada: puedes exigir un token de autenticación y declarar qué datos son obligatorios, de modo que solo tus sistemas autorizados disparen el flujo y siempre llegue con la información completa.
</Callout>

## Mensajería

Lo que el cliente ve. La mayor parte de un flujo son estos pasos.

| Paso                       | Qué hace                                                                                                                          |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **Texto**                  | Envía un mensaje de texto. El caballo de batalla.                                                                                 |
| **Imagen**                 | Envía una foto, con texto debajo si quieres.                                                                                      |
| **Video**                  | Envía un video, con texto opcional.                                                                                               |
| **Documento**              | Envía un archivo descargable — PDF, hoja de cálculo, factura.                                                                     |
| **Botones**                | Mensaje con botones para tocar. Puede quedarse esperando a que elijan una opción.                                                 |
| **Listas**                 | Un menú desplegable agrupado en secciones, para más opciones de las que caben en botones.                                         |
| **Carrusel**               | Varias tarjetas lado a lado, cada una con su imagen y sus botones.                                                                |
| **Respuestas rápidas**     | Sugerencias cortas que desaparecen cuando tocan una.                                                                              |
| **Sugerencias**            | Sugerencias que la persona puede tocar o ignorar mientras escribe libremente.                                                     |
| **Encuesta**               | Envía una encuesta y recoge los votos.                                                                                            |
| **Formulario de WhatsApp** | Envía un [formulario nativo](/guides/whatsapp-flows) que la persona llena dentro de WhatsApp.                                     |
| **Ubicación**              | Envía un punto en el mapa que tú configuras.                                                                                      |
| **Pedir ubicación**        | Le pide a la persona que comparta **su** ubicación y espera.                                                                      |
| **Contacto**               | Envía una tarjeta de contacto que se guarda en un toque.                                                                          |
| **Plantilla**              | Envía una [plantilla aprobada](/guides/templates). Lo único que puede iniciar una conversación o responder fuera de las 24 horas. |
| **Correo**                 | Envía un email. Sale del canal de la conversación.                                                                                |

### Botones: la opción que cambia el flujo

Los botones se comportan distinto según actives o no la **espera de respuesta**:

* **Sin espera**: el mensaje sale y el flujo sigue de largo. Una sola salida.
* **Con espera**: el flujo se detiene y **cada botón tiene su propia salida**. Puedes agregar además una salida para cuando responden algo que no es ninguno de los botones, y otra para cuando se vence el tiempo.

<Callout type="info">
  Activa primero la espera de respuesta y conecta los botones después: así cada botón nace con su propio camino y el flujo queda cableado de una sola pasada.
</Callout>

### Repetir un mensaje sobre una lista

Algunos pasos pueden repetirse sobre una variable o una base de datos: en vez de armar diez mensajes, armas uno y se envía por cada elemento.

Puedes usar cualquier campo del elemento dentro del mensaje — incluso como destinatario, para enviarle a cada persona de una lista.

## Esperar y capturar respuestas

| Paso                    | Qué hace                                                                                                             |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------- |
| **Esperar respuesta**   | Detiene el flujo hasta que la persona conteste, con un tiempo límite. **Este es el paso que captura una respuesta.** |
| **Guardar respuesta**   | Guarda en una variable lo último que dijo la persona. **No espera nada.**                                            |
| **Guardar archivo**     | Guarda el archivo que enviaron y conserva su enlace.                                                                 |
| **Formulario por chat** | Pregunta uno por uno los campos de una base de datos y guarda el registro completo.                                  |
| **Esperar**             | Pausa antes del siguiente paso.                                                                                      |

<Callout type="info">
  **Esperar** es una pausa con reflejos: si la persona escribe antes de que se cumpla el tiempo, el flujo retoma de inmediato en vez de dejarla esperando. Cuando lo que necesitas es una respuesta concreta para seguir, usa **Esperar respuesta**.
</Callout>

<Callout type="info">
  En **Esperar respuesta**, elige la variable donde guardar lo que conteste la persona. Ese dato queda disponible para el resto del flujo: para saludarla por su nombre, buscar su pedido o pasárselo a tu equipo con el contexto ya listo.
</Callout>

### Formulario por chat

Es la forma de pedir varios datos sin armar un mensaje por cada pregunta. Eliges una base de datos, se cargan sus campos y por cada uno defines:

* **La pregunta** que se le envía a la persona.
* **El tipo de dato**: texto corto, botón, opciones, fecha, hora, número, correo, enlace, imagen, video — o marcarlo como no obligatorio, ponerle un valor por defecto, o validarlo con una regla propia.
* **El mensaje de reintento** cuando la persona responde otra cosa: *"para continuar, elige una de las opciones"*.

<Callout type="info">
  El tipo valida solo. Si un campo es de tipo imagen, el paso verifica que la respuesta sea realmente una imagen antes de aceptarla.
</Callout>

## Decidir el camino

| Paso                    | Qué hace                                                                            |
| ----------------------- | ----------------------------------------------------------------------------------- |
| **Condición**           | Ramifica según lo que dijo la persona, un dato del contacto o una expresión propia. |
| **Horario de atención** | Ramifica según el día de la semana y la hora.                                       |
| **Ir a un nodo**        | Continúa en otro punto **del mismo flujo**.                                         |
| **Ir a otro flujo**     | Entrega la conversación a **otro flujo** y no vuelve.                               |
| **Fin**                 | Cierra la ejecución. Toda ruta debe llegar aquí.                                    |

### Condición

Se evalúan en orden y **gana la primera que coincida**. Tres formas de usarla:

1. **Sin IA** — comparación directa contra un dato.
2. **Con IA, positivo o negativo** — la IA interpreta la respuesta y produce dos caminos.
3. **Con IA, por opciones** — tantos caminos como opciones definas.

Comparadores disponibles: igual, distinto, empieza con, contiene, existe, no existe y expresión regular. Para listas: cantidad, primer elemento, último elemento.

<Callout type="info">
  Las condiciones trabajan sobre texto y sobre lo que la persona dijo. Para decidir sobre cantidades —montos, plazos, unidades— apóyate en **Transformar con IA**: interpreta el número y devuelve el resultado listo para ramificar.
</Callout>

<Callout type="info">
  Ramifica sobre datos que existen en el canal donde corre el flujo. Los datos de contacto de negocio, por ejemplo, los aporta WhatsApp. Elegir el dato correcto para cada canal es lo que hace que cada rama reciba exactamente el tráfico que le toca.
</Callout>

<Callout type="info">
  Define el modo de la condición —manual o con IA— antes de cablear sus ramas: al cambiar de modo, las ramas se regeneran con el nuevo criterio de decisión.
</Callout>

### Horario de atención

Ramifica por día y hora: una salida por cada rango que definas, más la de "fuera de horario".

Cuatro detalles para configurarlo con precisión:

| Detalle                                          | Cómo se configura                                    |
| ------------------------------------------------ | ---------------------------------------------------- |
| **La hora de fin no se incluye**                 | Para cubrir hasta las 22:00 en punto, escribe 22:59  |
| **Un rango no puede cruzar la medianoche**       | Para 22:00 → 06:00 crea dos rangos                   |
| **Las horas van con cero adelante**              | 09:00, nunca 9:00                                    |
| **La zona horaria que manda es la de la cuenta** | No la del nodo. Configúrala en los ajustes generales |

### Ir a un nodo vs. ir a otro flujo

Se parecen pero no son lo mismo:

|                           | Ir a un nodo                          | Ir a otro flujo                                     |
| ------------------------- | ------------------------------------- | --------------------------------------------------- |
| **A dónde va**            | Otro punto del mismo flujo            | Un flujo distinto                                   |
| **¿Vuelve?**              | Sigue en el mismo flujo               | No. Es un traspaso, no una llamada                  |
| **Las variables**         | Se conservan                          | **No viajan** — solo lo que declares explícitamente |
| **Requisito del destino** | Que ya tenga alguna conexión entrante | Que empiece con un nodo de inicio tipo subflujo     |

<Callout type="info">
  **Ir a un nodo** es lo que te permite armar menús a los que la persona puede volver las veces que quiera. Cuando saltes hacia atrás, haz que el destino ofrezca siempre una salida —terminar o hablar con una persona— para que la conversación pueda avanzar cuando el cliente ya resolvió lo suyo.
</Callout>

## CRM

Los pasos que conectan la automatización con tu equipo humano.

| Paso                  | Qué hace                                                                               |
| --------------------- | -------------------------------------------------------------------------------------- |
| **Abrir ticket**      | Abre la conversación en el inbox. **Este es el paso que entrega el chat a un humano.** |
| **Asignar área**      | Manda un ticket ya abierto a un área.                                                  |
| **Asignar agente**    | Manda un ticket a una persona específica.                                              |
| **Agregar nota**      | Escribe una nota interna en el ticket. El cliente nunca la ve.                         |
| **Agregar a proceso** | Mete al contacto en un proceso, en la etapa que elijas.                                |
| **Agregar etiqueta**  | Etiqueta al contacto.                                                                  |
| **Cambiar estado**    | Cambia el estado del ticket.                                                           |

Reglas de enrutamiento:

* **No puedes asignar un agente sin indicar también el área.**
* **No puedes asignar un agente que no pertenece a esa área.**
* Si indicas solo el área y tu cuenta tiene [asignación automática o balanceada](/guides/crm-configuration), Shimli elige al agente.

<Callout type="info">
  Estos pasos también pueden funcionar **con IA**: en vez de que tú definas el área, el agente o las etiquetas, la IA los decide leyendo la conversación. Incluso puede decidir *si* hace falta abrir un ticket.
</Callout>

## Base de datos

| Paso           | Qué hace                                                                              |
| -------------- | ------------------------------------------------------------------------------------- |
| **Insertar**   | Guarda un registro nuevo en una de tus [bases de datos](/guides/databases).           |
| **Buscar**     | Busca con filtros y deja el resultado en una variable.                                |
| **Actualizar** | Cambia campos de los registros que coincidan. Un valor vacío deja el campo como está. |
| **Eliminar**   | Borra los registros que coincidan con los filtros.                                    |

Filtros disponibles: igual, distinto, empieza con, contiene, mayor y menor.

## Tienda

| Paso                  | Qué hace                                                                                  |
| --------------------- | ----------------------------------------------------------------------------------------- |
| **Buscar productos**  | Busca en el catálogo y deja los resultados en una variable.                               |
| **Obtener producto**  | Trae un producto por su identificador.                                                    |
| **Crear pedido**      | Crea un pedido.                                                                           |
| **Actualizar pedido** | Modifica un pedido existente.                                                             |
| **Consultar pedido**  | Trae un pedido por su identificador — para el clásico "¿dónde está mi pedido?".           |
| **Agente de tienda**  | Entrega la conversación a un agente que vende y responde sobre el catálogo por su cuenta. |

El **agente de tienda** se configura por sector: comercio electrónico, agendamiento o base de conocimiento. Puede trabajar sobre tu [catálogo de Shimli](/guides/shop-catalog) o sobre un sistema externo, y le defines moneda, horarios, instrucciones y a los cuántos minutos considera abandonado un carrito.

## Inteligencia artificial

| Paso                       | Qué hace                                                                                                        |
| -------------------------- | --------------------------------------------------------------------------------------------------------------- |
| **Agente de IA**           | Sostiene la conversación completa, con instrucciones, límites y acciones. Ve a [Agente de IA](/flows/ai-agent). |
| **Transformar con IA**     | Una transformación puntual sobre un texto: resumir, traducir, extraer datos, clasificar. No conversa.           |
| **Audio o imagen a texto** | Transcribe una nota de voz o describe una imagen que envió la persona.                                          |
| **Leer documento**         | Extrae el texto de un documento.                                                                                |
| **Detectar rostro**        | Detecta si hay caras en una imagen.                                                                             |
| **Comparar rostros**       | Compara dos imágenes y dice si son la misma persona, con un porcentaje de similitud que tú defines.             |

### Transformar con IA

Es una llamada puntual al modelo con una forma de respuesta definida. Lo útil es que puedes pedirle el resultado **estructurado**:

```
{"nombre": "NOMBRE DEL CLIENTE", "productos": ["TODOS LOS QUE LE INTERESAN"]}
```

Puede trabajar sobre un dato específico que le señales, o sobre los últimos 20 mensajes de la conversación.

## Conectar con otros sistemas

| Paso                | Qué hace                                                        |
| ------------------- | --------------------------------------------------------------- |
| **Llamada a API**   | Llama a un servicio externo y guarda la respuesta en variables. |
| **Ejecutar código** | Corre código Python y devuelve el resultado.                    |

<Callout type="info">
  La **llamada a API** trae dos salidas —respondió y no respondió— para que decidas qué hacer en cada caso. Conecta ambas: la primera sigue con el dato ya traído de tu sistema y la segunda te deja ofrecer una alternativa, como intentar de nuevo o pasar la conversación a tu equipo.
</Callout>

## Tareas programadas

| Paso                 | Qué hace                                                          |
| -------------------- | ----------------------------------------------------------------- |
| **Programar evento** | Agenda algo para después, aunque la persona no vuelva a escribir. |
| **Cancelar evento**  | Cancela un evento programado antes de que se dispare.             |

Sirve para el seguimiento: recordar un carrito abandonado, reactivar a alguien que no contestó, mandar un recordatorio el día antes.

Tres formas de programarlo: una fecha y hora exactas, un intervalo (*"en dos días"*), o unos horarios fijos.

<Callout type="info">
  Puedes activar que el flujo **siga de largo** mientras el evento queda agendado. Así continúas la conversación ahora y el recordatorio se dispara después por otro camino.
</Callout>

<Callout type="info">
  El paso de **cancelar** mantiene el seguimiento fino: si la persona ya resolvió su asunto, el recordatorio programado se retira y no le llega de más. Puedes cancelar solo los eventos de este flujo, o todos los de esa persona.
</Callout>

## Utilidades

| Paso                 | Qué hace                          |
| -------------------- | --------------------------------- |
| **Asignar variable** | Escribe un valor en una variable. |

<Callout type="info">
  **Asignar variable** puede acumular sobre sí misma, que es su uso más útil:

  ```
  nombreCompleto = {{respuesta}}
  nombreCompleto = {{nombreCompleto}} {{respuesta}}
  ```

  Primero el nombre, después le agregas el apellido.
</Callout>

## SMS y llamadas

| Paso                               | Qué hace                                                                        |
| ---------------------------------- | ------------------------------------------------------------------------------- |
| **Enviar SMS**                     | Envía un mensaje de texto, fuera de cualquier canal de chat.                    |
| **Llamar y leer texto**            | Llama y lee un texto con voz sintética.                                         |
| **Llamar y reproducir audio**      | Llama y reproduce un audio grabado.                                             |
| **Decir algo en la llamada**       | Habla durante una llamada en curso.                                             |
| **Reproducir audio en la llamada** | Reproduce un audio durante una llamada en curso.                                |
| **Esperar dígitos**                | Espera a que marquen números en el teclado — el clásico "marque 1 para ventas". |
| **Esperar voz**                    | Espera a que la persona hable y captura el audio.                               |
| **Transferir a un agente**         | Pasa la llamada a un humano. Tiene dos salidas: contestaron y no contestaron.   |

En los pasos de voz sintética puedes elegir la voz y ajustar su estabilidad, similitud y estilo.
