## Visión general

Además de **actuar** (enviar mensajes, crear negocios, abrir tareas), un flujo ahora puede **leer**
lo que ya existe en la plataforma y decidir a partir de eso. Hay siete nodos de consulta:

| Nodo | Qué lee | Salidas |
|---|---|---|
| **Buscar contacto** | Un contacto por correo, teléfono, identificador o atributo personalizado | Encontrado · No encontrado · Error |
| **Buscar conversaciones** | Las conversaciones del contacto (filtros de estado y bandeja) | Encontrado · Vacío · Error |
| **Consultar CRM** | Los negocios del contacto (filtros de pipeline, etapa y estado) | Encontrado · Vacío · Error |
| **Consultar tareas** | Las tareas vinculadas al contacto o a la conversación | Encontrado · Vacío · Error |
| **Consultar commerce** | El último evento de compra/pago del contacto y su historial | Encontrado · Vacío · Error |
| **Consultar cobros** | Los cobros del contacto por estado (módulo Pagos) | Encontrado · Vacío · Error |
| **Consultar cita** | La próxima o la última cita del contacto (módulo Agenda) | Encontrado · Vacío · Error |

Más una espera inteligente:

- **Esperar hasta**: pausa el flujo hasta que una **condición** (el mismo editor del nodo Condición,
  con grupos) sea verdadera — verificando a intervalos regulares — o hasta agotar el tiempo límite.

Una consulta **nunca tumba el flujo**: cualquier falla sale por la puerta **Error**, que puedes
conectar a un camino alternativo.

## Requisitos previos

- El módulo **Flow Builder** habilitado; **Administrador** para editar y publicar.
- **Consultar cobros** requiere el módulo **Pagos**; **Consultar cita** requiere el módulo
  **Agenda**. Los demás funcionan en cualquier cuenta (CRM/Tareas/Commerce degradan a la salida
  **Vacío** cuando el módulo no está disponible).

## Paso a paso

Ejemplo: deduplicar leads que llegan por webhook.

1. En el disparador **Webhook**, mapea el correo del payload a la variable `lead_email` (usa el botón
   **Mapear campos automáticamente**).
2. Agrega **Buscar contacto** con *Buscar por* = Correo y *Valor* = `{{ vars.lead_email }}`.
   Conecta **No encontrado** al camino que crea el contacto/negocio.
3. Conecta **Encontrado** a un **Consultar CRM** con *Estado del negocio* = Abierto.
4. En la salida **Encontrado** del CRM, termina el flujo (el lead ya tiene un negocio abierto); en
   **Vacío**, crea el negocio.

> Consejo: la galería incluye la plantilla **"Entrada de leads por webhook (dedupe + CRM)"** con este
> flujo listo.

## Configuración y opciones

- **Variable de resultado**: cada consulta guarda lo encontrado en una variable (p. ej.
  `found_contact`, `found_deal`). Las listas añaden compañeras `_count` y `_list` — usa
  `{{ vars.found_deal.title }}`, `{{ vars.found_deal_count }}`, etc.
- **Contacto de referencia**: por defecto es el contacto de la conversación/sesión; elige *Desde una
  variable* para apuntar a otro (un id o el resultado de un Buscar contacto anterior).
- **Usar el contacto encontrado en este flujo** (Buscar contacto): los nodos siguientes — incluido
  `{{ contact.* }}` — leen el contacto encontrado. Cuando la conversación ya fija otro contacto, el
  cambio se ignora con seguridad (la variable sigue disponible).
- **Esperar hasta**: define las condiciones (lista simple o grupos TODAS/CUALQUIERA), el intervalo de
  verificación (mínimo 60 s) y el tiempo límite (obligatorio, hasta 30 días). La salida **Condición
  cumplida** dispara en cuanto la condición pase — incluso de inmediato cuando el contacto responde;
  **Timeout** dispara al agotarse el plazo. Las verificaciones están acotadas (máximo 500 por espera)
  y no consumen el presupuesto de pasos del flujo.

## Casos de uso

- **Dedupe antes de crear**: Buscar contacto + Consultar CRM antes de abrir un negocio (plantilla
  lista).
- **Enrutamiento VIP**: Buscar conversaciones y comparar `{{ vars.found_conversations.count }}` para
  reconocer clientes recurrentes (plantilla "Enrutamiento VIP").
- **Rescate de pago**: Consultar commerce + Esperar hasta `{{ commerce.stage }}` =
  `payment_confirmed` (plantilla "Rescate de pago pendiente").
- **Cobro vencido**: Consultar cobros con estado Vencido y reenviar el enlace (plantilla "Aviso de
  cobro vencido").

## Consejos, límites y buenas prácticas

- Las consultas devuelven como máximo **10 elementos** (los más recientes primero).
- Los datos guardados son **resúmenes seguros** (campos esenciales — nunca el registro completo).
- **Esperar hasta** reevalúa datos EN VIVO cuando la condición usa tokens de contexto
  (p. ej. `{{ commerce.stage }}`); las variables escritas por consultas anteriores son fotografías del
  momento de la consulta.
- Conecta siempre la salida **Error** a un camino de contingencia en flujos críticos.

## Solución de problemas

- **Siempre cae en Vacío**: revisa el contacto de referencia (¿la sesión tiene contacto?) y los
  filtros (estado/pipeline). El rastreo de la sesión muestra `count` y el motivo (`no_contact`).
- **Consultar cobros/cita cae en Vacío como "no disponible"**: el módulo correspondiente está
  deshabilitado para la cuenta.
- **Esperar hasta nunca dispara**: revisa el intervalo/tiempo límite y si la condición usa un token
  que realmente cambia (una variable estática nunca cambiará sola).

## Ver también

- [Flow Builder: datos del disparador, mapeo y transformación](/hc/ajuda/articles/automation-flows-flow-builder-dados-e-mapeamento-es)
- [Flow Builder: construir flujos conversacionales visualmente](/hc/ajuda/articles/automation-flows-flow-builder-es)
- [Flow Builder: acciones nativas y el nodo de acción de contacto](/hc/ajuda/articles/automation-flows-flow-builder-acoes-nativas-es)