Conditions y loops
Sin estos dos nodos todo flujo sería una línea recta.
Condición
Un nodo Condición tiene ramas, cada una con una sola comparación, y una rama Por defecto. Se evalúan de arriba hacia abajo y gana la primera que cumple; si ninguna, sigue la rama por defecto (que puede quedar vacía). Para pedir dos cosas a la vez (Y), encadená dos nodos Condición; para una u otra (O), usá dos ramas que vayan al mismo nodo.
| Operador | Significa |
|---|---|
| Igual a / Distinto de | == / != (comparación flexible: "10" es igual a 10) |
| Mayor que / Menor que / Mayor o igual / Menor o igual | Si los dos lados son fechas (2026-10-05 o fecha y hora ISO, como {{now}}) se comparan como fechas; si no, como números. Un lado vacío nunca cumple |
| Contiene | El texto contiene el valor |
| Es alguno de / No es ninguno de | El valor está (o no) en una lista: texto separado por comas o una variable de tipo lista |
| Está vacío / No está vacío | Vacío es null, texto en blanco ("") o lista vacía |
| Cambió | El campo es distinto entre old y record, sin importar si llegó como texto o número ("100" del formulario contra 100 guardado no es un cambio). En crear no hay old y siempre cumple |
Ejemplo con fechas: record.close_date · Menor que · {{now}} → “la fecha de cierre ya pasó”.
El lado izquierdo es una referencia (record.stage, miVariable.total); el derecho, un literal u otra {{referencia}}. Las ramas se colapsan para que el canvas se lea; las conexiones salen por el borde inferior.
Para “hacé X solo si pasa Y”, una rama con la condición y la rama por defecto vacía es más claro que condiciones anidadas. Y si la condición es sobre el trigger, usá las condiciones de entrada (en Configuración): el flujo ni siquiera arranca y la ejecución queda en los logs como Saltado.
Loop
Un nodo Loop repite un subflujo por cada elemento de una lista.
- Lista a iterar: una variable de tipo Lista, el resultado de Obtener registro en modo lista, o una lista dentro de un objeto (
{{respuesta.body.items}}). - Variable de iteración (por defecto
item) y, opcional, variable de índice (desde 0). - Salidas: body (lo que se ejecuta por cada elemento; al terminar vuelve al loop) y end (sigue cuando no quedan elementos).
Dentro del cuerpo referenciás {{item.campo}}; si la lista vino de una entidad o de una integración con sample, el autocompletado conoce los campos.
Ejemplo — avisar a todos los contactos de una cuenta:
- Obtener registro modo lista sobre Contactos, filtro
account = {{record.id}}, guardar encontactos. - Loop sobre
{{contactos}}, elementocontacto. - En el cuerpo: Enviar email a
{{contacto.email}}con{{contacto.name}}.
Los loops se pueden anidar. Cada loop corre como máximo 100 iteraciones: si la lista es más larga, el resto se ignora sin error (el paso del loop en el log dice done, iterations=100); filtrá mejor o procesá en tandas.
Combinar
Filtrar dentro de un loop es lo habitual:
Loop sobre {{registros}}, elemento = rec
└─ Condición
├─ rec.priority == "high" → Notificación
└─ Por defecto → (nada)Poné la rama más restrictiva primero para no evaluar de más, y recordá el presupuesto total del flujo (500 pasos, 10 segundos): un loop de 100 elementos con 5 nodos adentro ya son 500 pasos.