Flow Builder: formularios de acción y listas de eventos y acciones por categoría

Conversa Labs

Conversa Labs

Última actualización el Aug 12, 2026

Visión general

Algunas acciones nativas hacen mucho más que definir un único valor — crear un negocio del CRM, un cobro, una tarea, un contacto o una conversación implica varios campos. Ahora esas acciones muestran un formulario de verdad en el nodo de acción del Flow Builder, en lugar del selector de valor único. Completas cada campo con los mismos campos tipados que se usan en el resto del constructor, incluido el selector de {{ variable }}.

Al mismo tiempo, las largas listas de eventos y acciones ahora están agrupadas por módulo y con búsqueda, así encuentras crm_item_won o "Crear negocio" sin desplazarte por todo.

Requisitos previos

  • Permiso de Admin para editar automatizaciones, macros, flujos y webhooks.
  • El módulo correspondiente activo (CRM, Pagos, Tareas, Follow-ups, …) para cargar sus selectores.

Paso a paso

  1. Abre un flujo, añade un nodo de Acciones generales y elige la acción.
  2. Completa primero los campos dependientes, como embudo → etapa.
  3. Usa { } para variables y Avanzado para objetivos, vínculos y atributos.
  4. Ejecuta Ejecutar prueba con el contexto correcto y revisa salidas, omisiones y efectos antes de publicar.

Configuración y opciones

Formularios de acción (orientados a parámetros)

Al elegir una de estas acciones en un nodo de Acciones generales, aparece un formulario con exactamente los campos que la acción acepta:

  • Crear negocio del CRM — título, descripción, embudo → etapa (la lista de etapas sigue al embudo elegido), importe (con variables), moneda, prioridad, responsable, equipo, fecha prevista de cierre, fecha de apertura, contacto (por id, correo o teléfono), empresa, participantes (colaboradores del negocio) y los atributos personalizados y adicionales.
  • Crear cobro — tipo de cobro, importe (con variables), moneda, descripción, vencimiento, cuotas (para tarjeta de crédito) y, en Avanzado, la conexión de pago, el vínculo con el negocio, los productos del catálogo y el origen.
  • Crear tarea — título, descripción, responsable, prioridad, estado, fecha de vencimiento o "vence en N días", la lista de tareas y, en Avanzado, el equipo, la tarea padre, la fecha de inicio, las etiquetas y los atributos personalizados y adicionales.
  • Crear una cita — calendario, título, descripción, ubicación, zona horaria, inicio y fin, todo el día, conferencia, invitados, recurrencia y, en Avanzado, el contacto explícito, el vínculo con un negocio y con una tarea, además de los atributos personalizados y adicionales.
  • Crear contacto / Crear conversación — los campos de identidad (nombre, correo, teléfono, identificador), bandeja de entrada, atributos personalizados; y, para conversaciones, el estado inicial, responsable, equipo y mensaje.
  • Inscribir en follow-up — la secuencia y, opcionalmente, los vínculos con negocio/cobro en Avanzado.
  • Crear suscripción — tipo de cobro, importe, moneda, ciclo (semanal a anual), descripción, primer vencimiento y, en Avanzado, la conexión de pago y el plan.
  • Enviar plantilla de WhatsApp — nombre, idioma y variables de la plantilla aprobada en Meta, con el namespace y el texto de respaldo en Avanzado.
  • Verbos de encadenamiento — añadir nota/checklist/participante, asignar negocio o tarea, comentar/etiquetar/vincular tarea, enviar/cancelar cobro o suscripción, asumir conversación y ajustar presupuesto de anuncio ahora tienen formularios con un campo de objetivo explícito en Avanzado (ver "Encadenando pasos" más abajo).

Dos detalles importantes:

  • El dinero se escribe en unidades mayores y acepta variables. 4,97 significa R$ 4,97; también puedes escribir un token como {{ crm.value }}, que se renderiza cuando el flujo se ejecuta.
  • El selector embudo → etapa es dependiente: elegir otro embudo limpia la etapa, para que nunca mantengas una etapa que pertenece a otro embudo.

Los mismos formularios en Automatizaciones y Macros

Estos formularios ya no son exclusivos del Flow Builder. Crear negocio del CRM, Crear tarea, Crear una cita, Crear contacto, Vincular tarea a un registro, Definir equipo de la tarea y Registrar pedido muestran el formulario completo también en el editor de Automatizaciones y en el de Macros — antes, "Crear un negocio en el CRM" solo pedía allí título y descripción, sin embudo, etapa, valor ni responsable.

Las demás acciones siguen igual: las que ya tienen un editor dedicado (valor del negocio, atributo personalizado, catálogo, pagos, comercio, WhatsApp…) mantienen su widget enriquecido.

Algunos campos aparecen solo en el Flow Builder: los que existen para encadenar pasos (el contacto y la empresa de "Crear negocio", la tarea padre de "Crear tarea"). En una regla que se dispara por conversación, un valor fijo allí fijaría todas las ejecuciones en el mismo registro — dejándolos vacíos, la acción usa el contacto de la conversación que disparó, que es el comportamiento correcto.

Sin escribir ids: selectores con búsqueda y fecha con calendario

Todo campo que antes pedía un id crudo ahora es un selector con búsqueda sobre registros reales — negocio, tarea, contacto, empresa, lista de tareas, agenda, cobro, suscripción, plan, afiliado y campaña de anuncios. Cada campo trae un botón para alternar entre:

  • Elegir — busca por nombre (o título) entre los registros de la cuenta;
  • Variable — el campo de texto con el selector de {{ }}, para encadenar {{ steps.crear_negocio.id }}.

El modo se deduce del propio valor: un valor con {{ abre directamente en modo variable. Cambiar de modo no borra lo que estaba configurado, y un id guardado cuyo registro no vino en la primera página se sigue mostrando como #123 en vez de desaparecer. La lista solo se carga cuando abres el selector.

Las fechas de negocio (inicio y fin de una cita, fecha de apertura de un negocio) usan ahora el selector de fecha y hora en la zona horaria de la cuenta — el mismo componente del resto del producto —, también con el modo variable al lado. Los campos de día puro (vencimiento, fecha prevista de cierre) siguen como fecha simple.

"Vincular tarea a un registro" quedó completo: además del tipo (Conversación, Contacto, Negocio) ahora tiene el selector del registro destino, que acompaña al tipo elegido. Sin ese destino la acción no hacía nada.

Dos acciones que ganaron pantalla

  • Definir equipo de la tarea — elige el equipo de la tarea; vacío, quita el equipo actual.
  • Registrar pedido — registra un pedido para el contacto de la conversación: título, importe, moneda, estado, origen/pasarela, id externo y, en Avanzado, el vínculo con un negocio y el afiliado. Solo aparece en las cuentas con el módulo Registro de pedidos activo. Los pedidos se deduplican por el id externo.

Vínculos: de quién es el registro que se creó

Cuando el flujo se ejecuta dentro de una conversación, el negocio creado hereda automáticamente esa conversación y su contacto — es el comportamiento clásico de "conversación resuelta → crear negocio", y sigue vigente mientras dejes esos campos vacíos.

Lo que tú completas gana sobre esa herencia. Si el formulario indica un contacto, ese es el contacto del negocio, aunque la conversación apunte a otra persona. La herencia pasa a ser solo un valor predeterminado para cuando el flujo no dijo de quién es el registro.

En un flujo sin conversación (disparador de webhook, API, programación) no hay de quién heredar. Para esos casos el formulario acepta tres caminos, en este orden:

  1. Contacto — el id de un contacto existente, normalmente proveniente de un paso anterior.
  2. Correo del contacto — busca por la dirección y, si nadie coincide, crea a la persona.
  3. Teléfono del contacto — misma regla, con el número normalizado al formato internacional (puedes enviar 21971532700; se convierte en +5521971532700).

Si la persona no se puede encontrar ni crear (un correo inválido, por ejemplo), el negocio se crea de todos modos — solo que sin el vínculo — y el motivo aparece como insignia de "omitido" en el panel de datos. Perder el vínculo es malo; perder el negocio sería peor.

Los atributos personalizados siguen los campos del embudo

Atención con esta regla, suele sorprender: si el embudo de destino tiene campos personalizados configurados, el negocio guarda solo los atributos de esa lista. Cualquier clave que envíes y que no esté configurada como campo de ese embudo se descarta en silencio — sin error, sin aviso, sin que el nodo falle.

  • Antes de mapear un atributo en el formulario, verifica en CRM → Configuración que exista como campo del embudo que usará la acción.
  • Si el embudo no configura ningún campo personalizado, se guarda todo lo que envíes.
  • Los campos obligatorios del embudo siguen siendo obligatorios: enviar uno de ellos vacío hace que la creación falle (y el nodo registra el error) en lugar de guardar a medias.

Listas por categoría y con búsqueda

  • Eventos de webhook (Configuración → Integraciones → Webhooks): los eventos se agrupan por módulo (Conversaciones y Contactos, CRM — Negocios, Tareas, Pagos, WhatsApp, …). Cada grupo tiene una búsqueda, un selector marcar todos con contador y un estado parcial (indeterminado) cuando solo algunos eventos del grupo están marcados.
  • Disparadores de las automatizaciones: el selector de evento se divide en secciones por módulo.
  • Acciones (Automatizaciones, Macros y Flow Builder): el selector de acción muestra un encabezado de módulo encima de cada conjunto de acciones.

Nada de esto cambia los datos guardados — las claves de evento, los nombres de las acciones y el payload del webhook siguen siendo exactamente iguales. Solo cambió la forma de presentarlos.

Ejecutar una prueba directamente desde el editor

El botón Ejecutar prueba ejecuta el borrador actual del flujo una vez, sin publicar. Tras la ejecución, cada nodo del lienzo muestra una insignia con el resultado (✓ completado con su duración, ✗ falló con el error, ◇ omitido) y el panel de datos pasa a mostrar los valores reales que produjo cada paso.

  • Atención: la prueba ejecuta las acciones de verdad — crea registros, dispara cobros y webhooks. Aparece una confirmación explícita antes de ejecutar.
  • Sin una conversación de prueba, los nodos de mensaje se omiten (el resto del flujo se ejecuta). Puedes indicar una conversación o un contacto para probar el camino completo.
  • Disponible para administradores.

Disparador de webhook: autenticación flexible y prueba antes de publicar

  • La URL y el token del webhook existen desde el borrador — el ejemplo de curl del panel es real desde el primer guardado.
  • Un envío autenticado a un flujo no publicado se acepta como muestra de prueba (el panel captura el cuerpo para el mapeo), sin iniciar una sesión. Publica cuando estés listo.
  • Tres modos de autenticación: Firmado (HMAC del cuerpo — el predeterminado y más seguro), Bearer (encabezado Authorization) y Secreto en la URL (?token=…) — los dos últimos para herramientas que no firman el cuerpo (formularios, ERPs, no-code).
  • El panel muestra la última entrega recibida (aceptada, muestra capturada, repetida o rechazada por autenticación) con su hora — se acabó adivinar si el POST llegó.

Encadenando pasos (ids de registros creados)

Cada acción que crea un registro ahora expone su id (y los campos principales) en la salida del paso. En el selector de variables, busca el nombre del nodo — un paso "Crear negocio", por ejemplo, ofrece su id para que los pasos siguientes lo usen como objetivo:

  1. Recibir lead (disparador de webhook) → 2. Crear contacto → 3. Crear negocio del CRM
  2. Crear cobro → 5. Inscribir en follow-up → 6. Crear tarea.

La clave del paso es el nombre del nodo en minúsculas, con _ en lugar de todo lo que no sea letra sin acento, número o _. Un nodo llamado "Buscar contacto" se convierte en buscar_contacto, y su salida se lee así:

  • {{ steps.buscar_contacto.contact_id }} — el contacto encontrado, listo para el campo Contacto de un "Crear negocio del CRM" justo después.
  • {{ steps.crear_negocio.id }} — el negocio recién creado, para vincularle un cobro, una cita o una tarea.
  • {{ steps.crear_tarea.id }} — la tarea creada, útil como tarea padre de subtareas o como vínculo de una cita.

Cuidado con los acentos y la eñe: no se convierten en la letra sin acento, se convierten en _. Un nodo "Crear cotización" responde por crear_cotizaci_n. Por eso conviene nombrar sin acentos los nodos que vas a encadenar — o simplemente elegir el token en el selector de variables.

¿Renombraste el nodo? La clave sigue al nombre nuevo — revisa los tokens que apuntaban a él. Si dos nodos tienen exactamente el mismo nombre, el primero se queda con la clave y el otro responde por el id del nodo (el selector de variables siempre muestra el token correcto, así que prefiere elegirlo ahí antes que escribirlo de memoria).

  • En un flujo sin conversación (webhook/API), el contacto creado en el paso 2 se convierte automáticamente en el objetivo de los pasos siguientes.
  • Los formularios de nota, checklist, participante, asignación, comentario, etiqueta y vínculo tienen un campo de objetivo en Avanzado que acepta el id de un paso anterior; vacío, se usan los registros del propio flujo.

Cuando una acción no hace nada: el motivo en el panel y el modo estricto

Algunas acciones simplemente no tienen qué hacer — no había negocio que asignar, el contacto no se pudo resolver, el módulo no estaba configurado. Antes eso pasaba desapercibido: el flujo seguía adelante, el paso terminaba vacío y nada explicaba el porqué.

Ahora la acción que decide no actuar registra el motivo junto al paso. Para consultarlo:

  1. Abre el panel Datos disponibles y ve a la pestaña Pasos.
  2. El paso muestra el aviso "Acción omitida" seguido del motivo, en el mismo bloque de alertas que los avisos de truncamiento.
  3. Con el paso plegado, el icono de atención de su encabezado ya trae el motivo en la información emergente — no hace falta expandirlo para entender qué pasó.

Vale tanto para Ejecutar prueba como para el historial de ejecuciones.

De forma predeterminada, una acción omitida no interrumpe el flujo: se registra y la ejecución continúa. Usa ese aviso justamente para descubrir por qué un paso posterior no encontró el registro que esperaba.

Modo estricto: detenerse en lugar de seguir con un registro a medias

Cuando seguir adelante es peor que detenerse, abre Avanzado en el nodo de acción y activa el interruptor "Fallar el nodo cuando la acción no hace nada":

  • Desactivado (predeterminado) — el comportamiento actual, sin ningún cambio en los flujos existentes: cuando la acción no llega a actuar, el flujo continúa y el motivo aparece en la salida del paso.
  • Activado — la acción que no llega a actuar y no produce nada hace fallar el nodo en lugar de avanzar. Úsalo en pasos críticos, como el cobro que debe existir antes de enviar el enlace de pago.

Atención a la excepción, que es sutil: un éxito parcial sigue avanzando incluso con el interruptor activado — por ejemplo, el contacto se creó pero no se pudo vincular a la bandeja (el canal de la bandeja elegida no pudo derivar un source_id). El contacto existe y los siguientes pasos ya tienen un registro real para usar, así que detenerse ahí sería un error. El interruptor solo detiene el caso en que la acción no produjo absolutamente nada.

La opción aparece en Avanzado en el nodo genérico de Acciones generales y en todos los nodos de acción por módulo: CRM, Tareas, Contactos, WhatsApp, Agenda, Pagos, Catálogo, Commerce y Anuncios. El nodo de Account Brain funciona con su propio motor y, por eso, no trae el interruptor.

Enviar plantilla y enviar flow de WhatsApp

Las dos acciones de mensajería de WhatsApp existían en el motor pero no aparecían en ningún selector: no se podía crear una regla ni una macro con ellas. Ahora están en los catálogos de Automatizaciones, Macros y del Flow Builder (en el nodo genérico y en el nodo de WhatsApp), con formulario completo:

  • Enviar plantilla — la plantilla es una lista de las plantillas aprobadas de la cuenta (sin escribir el nombre). Deje el idioma vacío y el envío adopta el idioma de la propia plantilla elegida. Las variables completan los {{1}}, {{2}} del cuerpo.
  • En Avanzado, dos campos nuevos cubren las plantillas que el mapa simple no alcanzaba: variables del encabezado (incluidos media_url + media_type para un encabezado con medios) y variables de los botones (array JSON, un objeto por botón dinámico). Sin ellos, una plantilla con encabezado de medios o botón dinámico era rechazada por Meta.
  • Enviar flow — elija el flow publicado en una lista; el token del flow se genera en cada envío. Puede definir texto del botón, mensaje, encabezado, pie, modo (publicado/borrador), pantalla inicial y datos iniciales.

Condiciones de lista y de tamaño

En la condición del Flow Builder, el campo Valor ahora sigue al operador, no solo al campo:

  • está en la lista / no está en la lista — marque varios valores a la vez; se guardan separados por comas, exactamente como los lee el motor. Antes solo se podía elegir uno, lo que volvía el operador equivalente a "es igual a".
  • tamaño mayor/menor que, fecha dentro de N días, fecha antes/después de — vuelven a ser texto libre, porque el valor comparado es un tamaño, un número de días o una fecha, no un valor del campo.
  • el array contiene mantiene la elección única: compara un elemento del array.

Una espera con duración inválida ahora se bloquea al publicar

Un nodo de espera con todas las unidades en cero esperaba 1 segundo en silencio, y una unidad mal escrita hacía fallar el nodo solo durante la ejecución. Ambas situaciones aparecen ahora como error al publicar el flujo. Una unidad con una variable ({{ }}) se sigue resolviendo en ejecución.

Listas de opciones de WhatsApp

Una lista con más de 10 filas, título de más de 24 caracteres o descripción de más de 72 era rechazada por WhatsApp y el mensaje se perdía. Ahora se ajusta al límite antes del envío (las filas sobrantes salen, los textos largos se recortan) y el mensaje llega.

Casos de uso

  • Crear un contacto, encadenar su id en un negocio y usar el id del negocio en un cobro o tarea.
  • Actualizar CRM y tareas desde webhook/API sin fijar IDs de otra ejecución.
  • Detener un camino crítico cuando una acción no produce efecto activando el modo estricto.

Consejos, límites y buenas prácticas

  • Dejar un campo opcional vacío simplemente lo omite — la acción usa su valor predeterminado.
  • Prefiere variables en lugar de valores fijos en títulos, descripciones e importes, para que el mismo flujo se adapte a cada contacto o negocio.
  • Completa el contacto solo cuando de verdad quieras mandar tú: en un flujo dentro de una conversación, dejar el campo vacío mantiene el contacto de la conversación, que suele ser lo correcto.
  • Antes de mapear atributos personalizados, confirma que estén configurados como campos del embudo de destino — de lo contrario se descartan sin aviso.
  • Si un paso posterior no encontró el registro esperado, busca en la pestaña Pasos el aviso "Acción omitida" del paso anterior — el motivo suele estar justo ahí.
  • Activa el modo estricto solo en los nodos donde "no hizo nada" es un problema real, y atiende la salida de error con una notificación o un camino alternativo.
  • Usa la búsqueda del grupo para ir directo a un evento por su etiqueta o por su clave técnica.

Solución de problemas

  • Si un selector está vacío, confirma el módulo, el permiso y cualquier dependencia elegida primero.
  • Si una acción se omite, lee el motivo del trace antes de cambiar los pasos posteriores.
  • Si la publicación rechaza el nodo, corrige el campo indicado por el schema; v2 no acepta campos no declarados.

Ver también