Condiciones de los flujos

Cómo escribir una condición en un flujo, qué datos puede mirar, ejemplos listos por rubro y cómo probarla antes de activarla.

Actualizado:

Una condición decide por qué rama sigue un flujo. Se escribe como una frase corta que da verdadero o falso, por ejemplo "el servicio cuesta más de 100 y el cliente es VIP". Una condición solo mira datos: no cambia nada.

Cómo se escribe

QuéEjemplo
Comparar== (igual), !=, <, <=, >, >=
Combinar&& (y), || (o), ! (no)
Texto"entrega" entre comillas
Está en una lista"vip" in customer.tags
Contieneservice.name.contains("Corte")
Si / entoncesworkItem.priority == "urgent" ? now.hour < 22 : now.hour < 18
Un campocustomer.no_show_count, con punto

Eso es todo el lenguaje: no hay bucles ni funciones propias. Las condiciones se validan al guardar el flujo y de nuevo al activarlo.

Qué datos puede mirar

ObjetoQué trae
triggerEl evento que empezó el flujo. Con una acción ejecutada: action_key (la acción), from_stage, to_stage
workItemLa tarea: status, stage, priority, tags, party_size, start_at, due_at, age_minutes (minutos desde que se creó), assigned (si tiene responsable)
customername, locale (idioma), tags, no_show_count (ausencias reales)
servicename, price_cents (el precio en centavos: 100,00 es 10000), deposit_cents, duration_min
resourcename, kind
nowLa hora de tu negocio: hour, minute, weekday (0 = lunes ... 6 = domingo)
variablesValores que calculó un paso anterior

Por privacidad, una condición no ve teléfonos, emails, documentos, direcciones ni notas del cliente. Si el evento no trae una tarea, workItem, customer y service llegan vacíos y la condición falla con un mensaje claro, no responde "falso" en silencio.

Ejemplos

VIP con un servicio caro: avisar al gerente

service.price_cents > 10000 && "vip" in customer.tags

"No estaba" antes de las 18 h (disparador: se ejecuta una acción)

trigger.action_key == "nao_estava" && now.hour < 18

Tercera ausencia: pedir seña la próxima vez

trigger.action_key == "ausencia" && customer.no_show_count >= 3

Tarea sin tomar hace más de 2 horas (después de un paso Esperar de 2 h)

!workItem.assigned && workItem.age_minutes > 120

Fuera del horario comercial (sábado, domingo o fuera de 9 a 18)

now.weekday >= 5 || now.hour < 9 || now.hour >= 18

Tarea urgente

workItem.priority == "urgent" || "urgente" in workItem.tags

Cliente que habla portugués

customer.locale == "pt"

Seña pendiente hace más de una hora

workItem.stage == "aguardando_sinal" && workItem.age_minutes >= 60

Servicio largo de corte

service.name.contains("Corte") && service.duration_min >= 45

Las claves de acción y de etapa (ausencia, nao_estava, aguardando_sinal) son las de tu plantilla de rubro. Si cambiaste los nombres, usá los tuyos.

Probar una condición

En el detalle de un flujo, tocá Probar esta condición (o Probar condición):

  1. Escribí la condición.
  2. Elegí una tarea real de tu proyecto con el buscador.
  3. Si mira trigger.action_key, escribí la clave de la acción en Simular la acción.
  4. Tocá Probar.

Te muestra Verdadero o Falso y, debajo, Lo que vio la condición: exactamente los datos con los que decidió. No se ejecuta nada.

Errores comunes

Al guardar, el mensaje dice qué paso falló y por qué:

ProblemaQué significa
El campo no existeUsaste un dato que no está disponible (por ejemplo customer.email)
Tipos que no combinanComparaste texto con un número (customer.name > 5)
No da verdadero o falsoLa condición tiene que ser una pregunta de sí o no
Función no permitidaSolo existe contains
Objeto desconocidoSolo se pueden usar los objetos de la tabla de arriba
Demasiado larga o costosaDividila en dos condiciones con otro paso en medio

Una condición admite hasta 1024 caracteres y se evalúa en una fracción de segundo.