Skip to main content

Construyendo flujos

Descripción general

ZappFlux Flow Editor es un generador visual de arrastrar y soltar que le permite crear interacciones complejas de chatbot multicanal y secuencias de automatización sin escribir código. Los flujos se componen de Bloques (unidades individuales de lógica, contenido o acción) conectados entre sí para formar una ruta de conversación. Arquitectura: CÓDIGO_BLOQUE_0 Qué puedes construir con flujos:
  • Chatbots con tecnología de inteligencia artificial para WhatsApp, Web, Instagram y más
  • Formularios de captura de clientes potenciales con ramificación condicional.
  • Sistemas de clasificación de atención al cliente con transferencia humana.
  • Flujos de trabajo de reserva y programación de citas.
  • Asistentes de comercio electrónico con cobro de pagos.
  • Secuencias de incorporación y encuestas interactivas.

Empezando

Creando un nuevo flujo

  1. Navigate to Dashboard → Tools → ZappFlux → Flows
  2. Click New Flow (or the + button)
  3. Give your flow a name
  4. Choose a starting template or start from blank
  5. The flow editor opens automatically

Diseño del editor

  • Pan: haga clic y arrastre en el espacio vacío del lienzo
  • Zoom: rueda de desplazamiento o gesto de pellizcar (trackpad)
  • Seleccionar bloque: haga clic en un bloque
  • Mover bloque: haz clic y arrastra un bloque para reposicionarlo
  • Conectar bloques: arrastre desde el controlador de salida (lado derecho) de un bloque al controlador de entrada (lado izquierdo) de otro.
  • Eliminar conexión: haga clic en la flecha entre bloques y presione Eliminar

Tipos de bloques

Los bloques se organizan en cuatro categorías: Burbujas, Entradas, Lógica e Integraciones.

💬 Burbujas: envío de contenido a los usuarios

Los bloques de burbujas envían contenido al usuario. El flujo no se detiene en estos bloques: se ejecutan y pasan inmediatamente al siguiente bloque.

Texto

Envía un mensaje de texto sin formato o formateado al usuario. Propiedades:
  • Contenido del mensaje (admite el formato Markdown)
  • Interpolación de variables usando {{variable_name}}
  • Retraso de escritura opcional (simula un tiempo de respuesta realista)
Ejemplo: CÓDIGO_BLOQUE_1

Imagen

Muestra una imagen al usuario dentro de la conversación. Propiedades:
  • Fuente de la imagen: Sube un archivo (PNG, JPG, GIF, WebP) o ingresa una URL pública
  • Texto alternativo para accesibilidad
  • Título opcional debajo de la imagen.

Video

Inserta un vídeo en el flujo de conversación. Propiedades:
  • Fuentes admitidas: YouTube, Vimeo o URL directa del archivo de vídeo
  • Opción de reproducción automática
  • Título/título del vídeo

Audio

Reproduce un mensaje de audio o un clip en la conversación. Propiedades:
  • Fuente de audio: cargue un archivo (MP3, WAV, OGG) o ingrese una URL
  • Se muestra como un widget de reproductor de audio estándar.

Insertar

Incorpora contenido web externo mediante un iframe directamente dentro del flujo. Propiedades:
  • URL para incrustar (debe admitir la incrustación de iframe)
  • Dimensiones (ancho y alto)
  • Útil para incrustar calendarios, mapas o páginas de productos

📥 Entradas: recopilación de información de los usuarios

Los bloques de entrada pausan el flujo y esperan a que el usuario responda antes de continuar. La respuesta se almacena automáticamente en una variable para usarla más adelante en el flujo.

Entrada de texto

Captura texto de formato libre del usuario. Propiedades:
  • Texto de marcador de posición que se muestra en el campo de entrada
  • Variable para almacenar la respuesta.
  • Límite de caracteres opcional
  • Etiqueta del botón (“Enviar”, “Enviar” o texto personalizado)

Número

Captura un valor numérico con validación opcional. Propiedades:
  • Restricciones de valor mínimo y máximo
  • Se muestra un mensaje de error si falla la validación.
  • Variable para almacenar la respuesta.

Correo electrónico

Captura una dirección de correo electrónico con validación automática de formato. Propiedades:
  • Validación de formato de correo electrónico incorporada (rechaza entradas con formato incorrecto)
  • Mensaje de error personalizado para entrada no válida
  • Variable para almacenar la respuesta.

Teléfono

Captura un número de teléfono con selección de código de país. Propiedades:
  • Selector de código de país (opcional; se puede bloquear para un país específico)
  • Validación de formato
  • Variable para almacenar la respuesta.

Fecha/Hora

Muestra un calendario o selector de hora para que el usuario seleccione una fecha y/u hora. Propiedades:
  • Modo: Sólo fecha, Sólo hora o Fecha + Hora
  • Restricciones de fecha mínima y máxima
  • Variable para almacenar el valor seleccionado.

Botones

Presenta un conjunto de opciones predefinidas para que el usuario elija. Este es uno de los bloques de entrada más utilizados para la navegación por menús y los árboles de decisión. Propiedades:
  • Hasta 10 opciones de botones
  • Cada botón tiene una etiqueta y un valor opcional (puede diferir de la etiqueta de visualización)
  • Modo de elección múltiple o única
  • Variable para almacenar las opciones seleccionadas.
Consejos:
  • Mantenga las etiquetas de los botones cortas (menos de 40 caracteres) para una representación consistente en todos los canales
  • Utilice botones en lugar de entradas de texto libre siempre que sea posible para mejorar la calidad de los datos y reducir las respuestas ambiguas.

Elección de imagen

Una versión visual de Botones: los usuarios seleccionan entre opciones basadas en imágenes. Propiedades:
  • Cada opción tiene una imagen (carga o URL) y una etiqueta
  • Selección única o múltiple
  • Variable para almacenar la(s) selección(es)

Carga de archivos

Permite al usuario subir un archivo dentro de la conversación. Propiedades:
  • Tipos de archivos aceptados (PDF, imágenes, documentos, etc.)
  • Límite máximo de tamaño de archivo
  • Variable para almacenar la URL del archivo cargado

Pago

Cobra el pago del usuario sin abandonar la conversación. Procesadores compatibles:
  • Stripe: tarjetas de crédito/débito, Apple Pay, Google Pay
  • PayPal: saldo de PayPal, cuentas bancarias vinculadas, tarjetas
Propiedades:
  • Importe (fijo o extraído de una variable)
  • Moneda
  • Nombre/descripción del artículo
  • Variable para almacenar el estado del pago y el ID de la transacción.
Los bloques de pago requieren que las credenciales de Stripe o PayPal se configuren en Configuración de flujo → Integraciones antes de su uso.

Calificación

Recoge una calificación del usuario (calificación de estrellas o escala numérica). Propiedades:
  • Tipo de calificación: Estrellas (1 a 5) o Número (1 a 10)
  • Etiqueta opcional por valor de calificación
  • Variable para almacenar la calificación.

⚡ Lógica: controlar el comportamiento del flujo

Los bloques lógicos controlan cómo el flujo ejecuta, bifurca y procesa datos. No envían contenido visible al usuario.

Establecer variable

Crea o actualiza un valor de variable sin intervención del usuario. Propiedades:
  • Nombre de la variable a configurar
  • Valor: un valor estático, otra variable o una expresión JavaScript
Usos comunes:
  • Inicializando variables de contador (set count = 0)
  • Formato de valores (set full_name = "{{first_name}} {{last_name}}")
  • Almacenamiento de marcas de tiempo o valores calculados

Condición

Bifurca el flujo basándose en una comparación lógica: el equivalente ZappFlux de una declaración If/Else. Propiedades:
  • Lado izquierdo: una variable
  • Operador: igual, no igual, contiene, mayor que, menor que, está vacío, no está vacío
  • Lado derecho: un valor u otra variable
  • Se pueden encadenar múltiples condiciones con AND/OR
Ejemplo: CÓDIGO_BLOQUE_2

Redirigir

Envía al usuario a una URL externa, finalizando la sesión de flujo. Propiedades:
  • URL de destino (estática o construida a partir de variables)
  • Abrir en: misma pestaña o nueva pestaña
  • Retraso opcional antes de la redirección.

Guion

Ejecuta JavaScript personalizado dentro del contexto de flujo. Propiedades:
  • Bloque de código JavaScript personalizado
  • Acceso a todas las variables de flujo a través de variables.variable_name
  • Puede configurar variables usando setVariable('variable_name', value)
Casos de uso:
  • Formato o análisis de cadenas complejas
  • Cálculos matemáticos más allá de expresiones simples.
  • Manipulación y formato de fechas.
  • Llamar a las API del navegador (para flujos web)
Los bloques de script se ejecutan en un entorno aislado. No se admite el acceso a API externas desde un bloque de secuencia de comandos; en su lugar, utilice el bloque Webhook para llamadas a API.

Esperar

Introduce un retraso de tiempo antes de que el flujo avance al siguiente bloque. Propiedades:
  • Duración: segundos, minutos u horas.
  • Mensaje opcional mostrado al usuario durante la espera.

Saltar

Teletransporta la ejecución del flujo a otro bloque dentro del mismo flujo, o al inicio de un flujo diferente (subflujo). Propiedades:
  • Destino: un ID de bloque específico dentro del flujo actual, o un flujo completo.
Usos comunes:
  • Volver a un menú después de que se completa una ruta
  • Vincular a un subflujo reutilizable (por ejemplo, un flujo de preguntas frecuentes compartido)
  • Creación de bucles circulares para la lógica de reintento.

Webhook

Realiza una solicitud HTTP a una API o servicio externo. Propiedades:
  • Método: OBTENER, PUBLICAR, PONER, PATCH, BORRAR
  • URL: punto final al que llamar (admite interpolación de variables)
  • Encabezados: pares clave-valor (por ejemplo, Autorización, Tipo de contenido)
  • Cuerpo: carga útil JSON (para métodos POST/PUT/PATCH)
  • Mapeo de respuesta: extrae valores de la respuesta y los almacena en variables
Casos de uso de ejemplo:
  • Envío de datos de leads a un CRM (HubSpot, Salesforce)
  • Búsqueda de datos de usuario desde su propia base de datos.
  • Activar un pedido en una plataforma de comercio electrónico
  • Publicar datos en un webhook Zapier o Make

Enlace de flujo (subflujo)

Conecta este flujo a otro flujo, ejecutándolo como un subflujo anidado antes de regresar. Propiedades:
  • Seleccione el flujo objetivo de un menú desplegable
  • Mapeo de variables: pasar variables del flujo actual al subflujo
  • Una vez que se completa el subflujo, la ejecución regresa al siguiente bloque del flujo principal.

🔌 Integraciones: conectores nativos

Los bloques de integración son conectores prediseñados para herramientas y servicios populares. Abstraen la complejidad de las llamadas de webhooks sin formato con interfaces diseñadas específicamente.

OpenAI (ChatGPT)

Genera respuestas impulsadas por IA utilizando la API OpenAI. Propiedades:
  • Selección de modelo (GPT-4o, GPT-4, GPT-3.5-turbo, etc.)
  • Aviso del sistema (definir la personalidad y las limitaciones de la IA)
  • Mensaje de usuario: la entrada para enviar al modelo (normalmente una variable que contiene el último mensaje del usuario)
  • Variable de respuesta: donde se almacena la respuesta de la IA.
  • Avanzado: temperatura, tokens máximos, modo historial de conversaciones
Patrones comunes:
  • Pase {{user_message}} a OpenAI y muestre la respuesta en una burbuja de texto
  • Utilice un mensaje del sistema para limitar la IA a un dominio específico (por ejemplo, “Usted es un agente de servicio al cliente de Acme Corp. Solo responda preguntas sobre nuestros productos”).
  • Habilite el modo de historial de conversaciones para mantener el contexto en múltiples intercambios

Hojas de cálculo de Google

Lee o escribe en una hoja de cálculo de Google Sheets. Propiedades:
  • Acción: Insertar fila, Actualizar fila, Obtener fila o Obtener todas las filas
  • Hoja de cálculo y selección de hojas (desde su cuenta de Google conectada)
  • Mapeo de columnas: asigna variables de flujo a columnas de hoja de cálculo
Requiere una cuenta de Google conectada en Configuración de flujo → Integraciones → Hojas de cálculo de Google.

Google Analytics

Envía un evento personalizado a su propiedad Google Analytics 4. Propiedades:
  • Nombre del evento
  • Parámetros personalizados (pares clave-valor, admite variables)
Eventos comunes para seguir:
  • flow_started — cuando un usuario comienza el flujo
  • lead_captured — cuando se recopila información de contacto
  • payment_completed — cuando se realiza un pago exitoso
  • human_requested — cuando un usuario solicita un agente humano

Zapier / Hacer

Activa un webhook en Zapier o Make.com, conectando tu flujo a miles de aplicaciones de terceros. Propiedades:
  • URL de webhook (desde tu escenario Zap o Make)
  • Carga útil de datos: seleccione qué variables enviar

Chatwoot

Transfiere la conversación a un agente humano en una bandeja de entrada de Chatwoot. Propiedades:
  • URL de la API de Chatwoot y token de acceso
  • Bandeja de entrada para asignar la conversación
  • Asignación de agente (opcional)
  • Atributos personalizados para pasar a Chatwoot

Enviar correo electrónico

Envía un correo electrónico transaccional desde dentro del flujo. Propiedades:
  • Del nombre y dirección de correo electrónico
  • Para abordar (soporta variables)
  • Línea de asunto (admite variables)
  • Cuerpo: HTML o texto plano (admite variables)
  • Proveedor: credenciales SMTP o SendGrid configuradas desde Configuración de flujo

Acciones ZappWay

Realiza acciones específicas del ecosistema ZappWay. Acciones disponibles:
  • Actualizar las variables del contacto actual.
  • Asignar una conversación a un agente específico
  • Agregar o eliminar etiquetas de un contacto
  • Activar una notificación a la bandeja de entrada de ZappWay

##Variables Las variables son la memoria de tu flujo. Almacenan información recopilada de los usuarios y datos recuperados de las integraciones, y se puede hacer referencia a ellos en cualquier parte de su flujo.

Uso de variables en texto

Para insertar una variable en cualquier campo de texto, escriba {{ y ​​seleccione la variable en el menú desplegable de autocompletar:

Tipos de variables

Variables del sistema

ZappWay completa automáticamente un conjunto de variables integradas para cada sesión:

Ramificación de flujo y lógica condicional

La mayoría de los flujos del mundo real no son lineales: se ramifican según las respuestas y condiciones de los usuarios.

Rama simple (botones)

El patrón de ramificación más simple: cada opción de Botón se conecta a una ruta diferente.

Rama basada en condiciones

Utilice el bloque Condición cuando la rama dependa de valores variables en lugar de clics directos en los botones.

Condiciones anidadas

Las condiciones se pueden encadenar para manejar escenarios complejos:

Publicar un flujo

Los cambios realizados en el editor se guardan automáticamente como borrador pero no son visibles para los usuarios finales hasta que los publique. Para publicar:
  1. Termina de editar tu flujo
  2. Haga clic en Publicar en la esquina superior derecha del editor.
  3. Confirme el cuadro de diálogo si se le solicita.
  4. Tu flujo ahora está disponible en su URL pública.
La publicación de un flujo hace que sus cambios estén disponibles inmediatamente para todos los usuarios activos. Si está realizando cambios significativos en un flujo con tráfico activo, considere duplicar el flujo, editar la copia e intercambiarla cuando esté listo.

Modo de vista previa

Antes de publicar, prueba tu flujo usando la función Vista previa incorporada:
  1. Click the Preview button (play icon) in the toolbar
  2. A live preview of the flow opens in a side panel or new tab
  3. Interact with the flow exactly as an end user would
  4. All blocks execute normally in preview, including integrations
El modo de vista previa ejecuta acciones de integración reales (por ejemplo, escribirá en Google Sheets, enviará correos electrónicos y llamará a webhooks). Si desea realizar pruebas sin activar acciones reales, deshabilite temporalmente los bloques de integración haciendo clic derecho en ellos y seleccionando Desactivar.

Mejores prácticas

1. Comience con un mapa de conversación claro Antes de abrir el editor, dibuja la conversación en un papel o en una pizarra. Defina el objetivo de cada camino, los datos que necesita recopilar y los posibles puntos de decisión. Los flujos creados sin un plan se vuelven rápidamente inmantenibles. 2. Utilice botones en lugar de entradas de texto libres Siempre que la elección del usuario pueda limitarse a un conjunto conocido de opciones, utilice botones en lugar de entrada de texto. Esto produce datos más limpios, reduce los errores y simplifica la lógica condicional. 3. Maneje siempre lo inesperado Agregue un botón “Otro” o “Algo más” a cualquier menú y utilice opciones alternativas de entrada de texto para preguntas abiertas. Los usuarios siempre dirán algo que usted no anticipó; asegúrese de que el flujo lo maneje con elegancia. 4. Nombre las variables de forma clara y coherente Utilice nombres descriptivos, en minúsculas y separados por guiones bajos: user_email no email2 o Email. La denominación coherente facilita el mantenimiento de los flujos y reduce los errores en la lógica condicional. 5. Pruebe cada ruta antes de lanzarla Utilice el modo de vista previa para recorrer cada rama de su flujo, no solo el camino feliz. Pruebe específicamente casos extremos: entradas vacías, correos electrónicos no válidos, respuestas de texto muy largas y clics inesperados en botones. 6. Mantenga los flujos enfocados Un único flujo debe lograr un único objetivo (captura de clientes potenciales, clasificación de soporte, búsqueda de pedidos). Utilice los bloques Jump y Flow Link para modularizar flujos complejos en subflujos más pequeños y reutilizables.
Consejo profesional: Utilice el bloque Script con console.log(variables) para volcar todos los valores de las variables actuales durante la depuración. Abra la consola de su navegador (F12) mientras está en el modo de vista previa para ver el resultado en tiempo real; es la forma más rápida de diagnosticar por qué una condición no se ramifica como se esperaba.

Solución de problemas

Problema: el flujo no responde a la entrada del usuario

Síntomas:
  • Se envían mensajes pero el flujo no avanza
  • El bloque de entrada parece estar atascado
Soluciones:
  1. Verifique que el bloque de entrada tenga una variable asignada; es posible que los bloques sin una variable de destino no guarden las respuestas correctamente
  2. Verifique que la salida del bloque esté conectada al siguiente bloque.
  3. Obtenga una vista previa del flujo y verifique si hay errores en la consola del navegador.
  4. Asegúrese de que el canal esté conectado correctamente en Configuración → Canales
  5. Vuelva a publicar el flujo después de realizar correcciones.

Problema: el bloque de condición no se bifurca correctamente

Síntomas:
  • El flujo siempre toma la misma rama independientemente del valor de la variable.
  • Comportamiento inesperado en lógica condicional.
Soluciones:
  1. Utilice el bloque Script antes de la condición para registrar el valor de la variable: console.log(variables.your_variable)
  2. Verifique la distinción entre mayúsculas y minúsculas: “Pro” no es igual a “pro” en una comparación exactamente igual; usar minúsculas consistentemente
  3. Verifique que la variable realmente se esté configurando antes de que se ejecute el bloque de condición.
  4. Verifique si hay espacios en blanco iniciales o finales en el valor de la variable; use el bloque Script para recortarlo: setVariable('plan', variables.plan.trim())

Problema: el bloque de webhook devuelve un error

Síntomas:
  • El bloque de webhook muestra un indicador de error rojo
  • Los datos de integración no se envían ni reciben
Soluciones:
  1. Haga clic en el bloque Webhook para ver la respuesta en el panel de propiedades; verifique el código de estado HTTP y el mensaje de error.
  2. Verifique que la URL sea correcta y accesible desde Internet.
  3. Verifique que los encabezados requeridos (por ejemplo, Authorization: Bearer your_token) estén incluidos
  4. Valide la estructura del cuerpo JSON usando una herramienta como JSONLint
  5. Pruebe el punto final del webhook de forma independiente utilizando Postman o curl antes de agregarlo al flujo.

Problema: el bloque OpenAI no genera respuestas

Síntomas:
  • El bloque de IA parece bloquearse o devuelve respuestas vacías
  • Error “Clave API no válida” en el bloque
Soluciones:
  1. Verifique que la clave API de OpenAI esté guardada correctamente en Configuración de flujo → Integraciones → OpenAI
  2. Verifique su cuenta OpenAI para detectar problemas de facturación: una cuota agotada hace que todas las llamadas API fallen
  3. Asegúrese de que el modelo seleccionado en el bloque esté disponible en su plan OpenAI
  4. Verifique que la variable de entrada del mensaje del usuario no esté vacía cuando se ejecuta el bloque.

Apoyo

¿Necesita ayuda para construir flujos? Comuníquese con el soporte técnico de ZappWay:
  • Correo electrónico: support@zappway.ai
  • Incluye: nombre del flujo, capturas de pantalla de los bloques en cuestión y una descripción del comportamiento esperado versus real.
Proporcione estos detalles al informar problemas:
  • ¿Qué tipo de bloque está causando el problema?
  • El canal en el que estás probando.
  • Si el problema ocurre en el modo de vista previa, en vivo o en ambos.
  • Cualquier mensaje de error mostrado en el bloque o en la consola del navegador.
Recursos adicionales:
Última actualización: marzo de 2026 Plataforma: Generador de flujo ZappFlux | Panel de control de ZappWay