Construir
Triggers
Un trigger decide cuándo se ejecuta un workflow. Cada workflow tiene exactamente uno, y puedes cambiarlo en el editor en cualquier momento (hasta que publiques, nada cambia para las ejecuciones).
Los siete triggers
Enlace a esta sección: Los siete triggers| Trigger | Inicia una ejecución cuando | ¿Necesita el workflow en Live? |
|---|---|---|
«Ejecución manual» (manual) | Un administrador pulsa el botón, o lo pide la API REST o MCP. Puede declarar un formulario. | No |
«Ejecución manual» (entity) | Un administrador elige "Ejecutar workflow" en un registro. Un solo tipo de registro por workflow. | No para el servidor y la API; la página del registro y el panel muestran un workflow pausado o nunca publicado en gris, con el motivo |
«Desde otro workflow» (workflow) | Un paso de otro workflow lo inicia. No tiene botón. | No |
«Programado» (schedule) | El reloj llega a la siguiente hora de una expresión cron. | Sí |
«Webhook» (webhook) | Tu sistema envía JSON a la dirección del workflow. | Sí |
«Evento» (event) | Algo ocurre en Filmo (se reserva un pedido, se valida una factura…) o en una cuenta conectada (llega un email). | Sí |
«Señal» (signal) | Otro workflow lanza una señal con nombre que este escucha. | Sí |
Los nombres de la primera columna son los de la paleta. Dos triggers distintos se llaman "Ejecución manual" allí: el de Utilidades es el trigger manual con su formulario; el que está en el menú desplegable de cada registro, en el grupo Filmo, es el trigger "desde un registro".
Cuándo surte efecto un trigger
Enlace a esta sección: Cuándo surte efecto un trigger- Un trigger solo empieza a hacer algo después de que «Publicar». El editor reconstruye la tabla de consulta que decide qué se dispara cuando se publica una versión, nunca cuando se autoguarda un borrador.
- Los automáticos (agenda, webhook, evento, señal) también necesitan el «Live» activar. Un workflow pausado, archivado o nunca publicado no dispara nada.
- Los triggers manual, desde un registro y desde otro workflow no dependen de Live en el motor: un workflow pausado todavía se puede ejecutar desde el editor, mediante la API o llamado desde otro workflow. La página del registro y el panel también listan esos workflows, pero uno pausado o nunca publicado aparece en gris con el motivo y no se puede ejecutar desde allí.
Editar el lienzo: guardado automático
Se guarda tras una breve pausa. Escribe solo el borrador y lo marca como «Cambios sin publicar». Lo que se ejecuta no cambia.
«Publicar»
Congela el borrador como una nueva versión numerada y reconstruye los triggers. Las ejecuciones nuevas la usan; las que ya están en curso conservan la suya.
«Live» activado: los triggers automáticos (programación, webhook, evento, señal) se disparan e inician ejecuciones de la versión publicada
«Descartar»
El borrador vuelve a la versión publicada. No hay forma de volver a una anterior.
«Ejecutar workflow»
Una ejecución manual usa la versión publicada. Si el borrador tiene cambios sin publicar, el editor los publica primero.
Úsalo para trabajo que alguien inicia a propósito, o para un workflow que tu propio sistema inicia mediante el REST API o MCP. Declara el formulario en el trigger: cada campo tiene un nombre, una etiqueta y un tipo (el editor ofrece booleano, número, texto y fecha).
- Los nombres de campo empiezan por una letra o un guion bajo y solo usan letras, dígitos y guiones bajos.
createdAtycreatedByestán reservados, porque el trigger los publica él mismo, y un nombre no se puede repetir. - Hay que enviar todos los campos declarados cuando alguien ejecuta el workflow (la API rechaza con 422 el que falte). No hay campos opcionales ni valores por defecto, aunque el formulario no te impide dejar vacío un campo de texto. Un workflow sin campos se ejecuta directamente, sin diálogo.
- Solo los administradores pueden ejecutar un workflow. Al pulsar el botón desde el editor se publica primero si el borrador tiene cambios.
- El trigger publica
trigger_createdAt(cuándo se puso en cola la ejecución) ytrigger_createdBy, además de una variable por cada campo.trigger_createdByes el creador del workflow, no la persona que pulsó el botón.
Desde un registro
Enlace a esta sección: Desde un registroUn workflow con este trigger aparece en «Ejecutar workflow» en el menú de acciones de la página del registro (y en la búsqueda de acciones rápidas), para administradores. No tiene formulario: recibe el propio registro. Un workflow está ligado a un tipo de registro (la lista está en la página de referencia del trigger), y el tipo no se puede cambiar una vez elegido, porque las expresiones se refieren a él.
- El registro se comprueba antes de poner la ejecución en cola y se vuelve a cargar cuando la ejecución empieza. Si se eliminó entretanto, la ejecución falla con "the record the workflow was launched on no longer exists".
- El trigger publica los mismos campos que los triggers de evento de ese registro (véase más abajo), bajo
trigger_<record>. - Mediante la API REST necesita el id del registro en
payload.; sin él se rechaza la petición.entityId
Desde otro workflow
Enlace a esta sección: Desde otro workflowTiene el mismo formulario que el trigger manual, pero sin botón ni API: solo una «Disparar workflow» paso de otro workflow puede iniciarlo. Eso lo convierte en una llamada con contrato: quien llama elige el destino y rellena su formulario. Pulsar el botón, o llamar a la API, responde 409. Quien llama no espera el resultado; consulta Señales y encadenamiento de workflows.
Úsalo para trabajo que ocurre según el reloj. Indicas una expresión cron y una zona horaria. Funciona una expresión estándar de cinco campos, y también una de seis campos (segundos), pero el motor mira el reloj una vez por minuto, así que el intervalo más corto es de un minuto. El editor ofrece presets («Cada minuto», «Cada hora», «Laborables a las 08:00» y así sucesivamente) y un «Personalizada» campo que describe tu expresión con palabras.
Zona horaria
La zona horaria por defecto es la del navegador de quien elige el trigger, no la zona horaria de la empresa. Un compañero de otro país puede dejar fijada su zona sin darse cuenta. Comprueba el campo «Zona horaria» campo de todo trigger programado.
- Al publicar se calcula la próxima hora a partir de "ahora". Si vuelves a publicar sin cambiar la expresión ni la zona, se mantiene la próxima hora.
- Un run arranca hasta alrededor de un minuto después de su hora.
trigger_scheduledAtcontiene la hora prevista;trigger_createdAtcontiene cuándo se puso realmente en cola el run. - Como máximo una ejecución por ocurrencia. Si la plataforma estuvo caída, obtienes una ejecución por la ocurrencia atrasada y después el reloj salta a la siguiente hora futura: las ocurrencias perdidas no se recuperan.
- Mientras un workflow está pausado, las ocurrencias pasan en silencio. Cambiar «Live» no ejecuta lo que te perdiste.
- Las plantillas que se ejecutan en una agenda usan Europe/Madrid, escrito en el trigger.
Úsalo cuando tu propio sistema deba iniciar un workflow. Es un POST a una dirección privada con un secreto. La página Webhooks entrantes tiene el contrato completo, incluida la parte que sorprende: el cuerpo se valida contra el tipo que declaras después de que Filmo ya haya respondido 202.
Úsalo para reaccionar a algo que ha ocurrido en Filmo o en una cuenta conectada. Elige el evento en la paleta (el grupo Filmo tiene un desplegable por cada tipo de registro; las cuentas conectadas tienen sus propias secciones). El catálogo es cerrado: solo existen los eventos que contiene. Para ver la lista completa y los campos que lleva cada uno, consulta el referencia de eventos.
Qué lleva un evento
Enlace a esta sección: Qué lleva un eventoCada evento publica dos variables:
trigger_event, el sobre: el nombre del evento, el tipo e id del registro, su nombre, el código de la acción, quién hizo el cambio (actor.es user, contact o system, con un id y un nombre) y de dónde vino (kind origin).trigger_<record>, una proyección del registro con solo los campos que lista el evento (un pedido tiene su número, estado, contacto, fechas, etc., pero no sus líneas ni su total). Para leer más, añade un paso que obtenga el registro.
origin indica cómo se hizo el cambio: Neo, Automation (hecho por un workflow), API, MCP o Integration. Un cambio hecho en la propia app no lleva origin, así que un filtro "origin is App" nunca puede coincidir.
Solo cuando…
Enlace a esta sección: Solo cuando…Un trigger de evento puede llevar una condición, «Solo cuando», o, para los eventos de actualización que informan de qué cambió, «Solo cuando cambie» (algunos eventos de actualización sí pueden). La condición se evalúa cuando se recibe el evento, contra la versión publicada, antes de que exista ninguna ejecución.
- Es una sola comparación, sin y/o. El valor de la derecha es siempre un literal.
- Falla en cerrado: debe evaluarse exactamente a true. Una variable ausente o un null significan que no hay ejecución, sin avisar (salvo con "no es igual a": una variable ausente no es igual a nada, así que esa comparación es verdadera y deja pasar el evento). Un tipo que no coincide también significa que no hay ejecución.
- Un evento que no pasa el filtro no deja ninguna ejecución, ni siquiera una fallida. Si un workflow nunca se dispara, revisa primero el filtro; consulta la página de resolución de problemas.
- Comparar una fecha con un instante (
2026-09-04frente a2026-09-04T00:00:00.) nunca da igualdad, y "es posterior a" o "es anterior a" los comparan como texto, lo que puede coincidir por error. Compara cosas del mismo tipo.000Z - «Solo cuando cambie» mira lo que la acción emisora informa como cambiado; un guardado parcial que toca otros campos no informa de nada y, por tanto, no pasa.
- Un cambio en el filtro surte efecto cuando lo publicas, no cuando lo editas.
Qué cambios son eventos
Enlace a esta sección: Qué cambios son eventos- Solo existen los eventos del catálogo. Varias cosas que parecen eventos no lo son: mover una unidad serializada por preparar, entregar o devolver, los cambios de stock a granel, el email entregado o abierto, las etiquetas, la disponibilidad y la mayoría de las importaciones no disparan un workflow.
- Algunos registros tienen un evento de eliminación (contactos, tareas, incidencias, artículos, presupuestos, facturas y otros, pero no pedidos, proyectos ni vehículos). Lleva solo la instantánea de lo que se eliminó, no el registro vivo.
- Las escrituras hechas mediante la API REST y MCP siguen la misma ruta que el mismo cambio en la app, así que disparan los mismos eventos, con
originestablecido en API o MCP. Esto se cumple cuando la acción detrás del endpoint es uno de los eventos del catálogo; no se documenta endpoint por endpoint si la acción de cada uno lo es. Consulta qué pone en marcha una escritura por la API en la visión general. - Un evento de cambio en Filmo se envía después de devolver la respuesta y no se reintenta si el envío falla. Los eventos de cuentas conectadas que fallan se reenvían.
Bucles
Un workflow que escribe en un registro puede disparar eventos propios. Filmo corta una cadena de workflows a los diez saltos y nunca ejecuta un workflow que ya está en la cadena, así que un workflow no se dispara con su propio efecto. Un sistema que llama a la API con una clave no tiene id de ejecución, así que la protección no lo cubre: mantén esa llamada lejos de los datos que inician el workflow.
Se crea, actualiza o elimina un registro
Desde la app, la API REST, MCP, el asistente de IA, el portal del cliente, una integración u otro workflow.
Se registra en el registro de actividad y luego se convierte en un evento del catálogo. Solo los eventos del catálogo existen como triggers; el evento se envía después de la respuesta y no se reintenta si falla.
Coincidencia: workflows en Live con ese evento
Un workflow que ya está en la cadena que causó el evento se omite, y una cadena de más de diez saltos se corta.
Cada workflow aplica su filtro «Solo cuando» / «Solo cuando cambie». Un evento que no lo cumple no deja ninguna ejecución, ni siquiera fallida.
Una ejecución
queuedpor cada workflow que pasaEl mismo cambio nunca pone en cola dos veces el mismo workflow.
Eventos de cuentas conectadas
Enlace a esta sección: Eventos de cuentas conectadas| Origen | Qué necesita |
|---|---|
| Email y calendario | Un buzón conectado (Gmail, Outlook o iCloud), el add-on de email y calendario, y un workflow creado por el dueño del buzón: solo se dispara para los workflows que creó su dueño. |
| Xero | Un Xero conectado. Solo para documentos y pagos vinculados a un registro de Filmo. Xero no tiene webhook de pagos: Filmo deduce "paid" a partir de los cambios de la factura, una vez por cada pago nuevo. |
| Holded | Un Holded conectado. Holded no envía nada cuando se anula un documento, así que no hay evento de anulación. |
| QuickBooks | Un QuickBooks conectado. |
Los eventos de cada origen se listan en la referencia de eventos, en las secciones enlazadas en la primera columna.
Un trigger de una cuenta que no está conectada se puede publicar y poner en Live, y simplemente nunca se disparará; Filmo no te lo impide.
Como quién actúa la ejecución
Enlace a esta sección: Como quién actúa la ejecuciónLa ejecución actúa como el creador del workflow, nunca como la persona que hizo el cambio, aunque el cambio lo haya hecho un cliente en el portal. Consulta Permisos.
Un trigger de señal escucha una señal con nombre que otro workflow lanza con datos. Las señales las definen los administradores en «Señales de workflows» y se describen en Señales y encadenamiento de workflows.
Variables que publica cada trigger
Enlace a esta sección: Variables que publica cada triggerCada trigger publica sus propias variables (trigger_…) y cada ejecución tiene además system_today. La página de referencia de cada trigger las lista: manual, desde un registro, desde otro workflow, programado, webhook, evento y señal. trigger_createdBy es siempre quien creó el workflow.
system_today es la fecha en que se puso en cola la ejecución, en la zona horaria de la empresa. Consulta Esperas y fechas.
Prefiere un trigger de evento con un filtro antes que una programación que consulte cada registro: se ejecuta solo cuando algo ha cambiado y no cuesta créditos los días en que nada cambió.
Páginas relacionadas
Enlace a esta sección: Páginas relacionadasConstruir
Webhooks entrantes
Un trigger de webhook da al workflow una dirección privada. Tu sistema hace POST de JSON a ella con un secreto, Filmo responde 202 de inmediato y empieza una ejecución.
Construir
Señales y encadenamiento de workflows
Dos formas de hacer que un workflow inicie otro: lanzar una señal que escuchan tantos workflows como quieras, o llamar a un workflow concreto. En ambas, quien llama no espera el resultado.
Construir
Pasos
Los pasos se ejecutan en orden, uno tras otro. Cada uno puede leer lo que produjeron el trigger y los pasos anteriores, y cada uno puede publicar un valor para los pasos siguientes.
¿Te ha resultado útil esta página?