🟢 Introducción
Dentro de Power Automate, la acción Compose es una de las herramientas más útiles y versátiles para manipular y visualizar datos intermedios dentro de un flujo.
Aunque parece sencilla, Compose te permite crear expresiones, combinar texto, formatear información y depurar valores sin tener que usar variables adicionales.

🧠 Qué es / para qué sirve
Compose sirve para guardar temporalmente un valor (texto, número, JSON, arreglo, fecha, etc.) y reutilizarlo en pasos posteriores del flujo.
Se usa comúnmente para:
- Probar expresiones sin modificar datos.
- Transformar contenido antes de enviarlo o almacenarlo.
- Simplificar flujos complejos dividiendo cálculos intermedios.
- Inspeccionar valores durante la depuración (usando “Ejecutar prueba”).
📘 En resumen: Compose = “Crea, transforma o combina un valor sin necesidad de variables.”

🧩 Sintaxis
No tiene sintaxis propia dentro del editor: se usa directamente en el campo “Inputs” de la acción.
Ejemplo básico:
Hello, @{triggerBody()?['Nombre']}!
Ejemplo de una expresión:
concat('Hola ', triggerOutputs()?['body/Nombre'], ', tu solicitud fue recibida el ', utcNow())
También puedes usar funciones de Power Automate como:
addDays(),formatDateTime(),json(),first(),last(),length(),if(),coalesce(), etc.
💻 Ejemplos con código
Nota: Crea inputs de tipo «Text» para estos ejercicios al inicio de tu flujo (el trigger) que tenga los valores de «Nombre» y de valor tu nombre, el segundo input que tenga el titulo de «Id» y el valor puede ser el que tu decidas.

1️⃣ Concatenar texto y valores dinámicos
concat('Hola ',triggerOutputs()?['body/Nombre'], ', tu ID es ', triggerOutputs()?['body/ID'])
2️⃣ Crear estructura JSON personalizada
{ "Nombre": "@{triggerOutputs()?['body/Nombres']}", "Correo": "@{triggerOutputs()?['body/Correo']}", "Fecha": "@{utcNow()}"}
3️⃣ Calcular fechas relativas
addDays(utcNow(), 7)
Devuelve una fecha 7 días después de la actual, útil para automatizar vencimientos o recordatorios.
4️⃣ Transformar datos para Power Apps o Power BI
Puedes usar Compose para generar un texto formateado o un objeto JSON que luego otra herramienta consuma:
{ "Cliente": "@{triggerOutputs()?['body/Cliente']}", "Monto": "@{triggerOutputs()?['body/Monto']}"}
🧱 Buenas prácticas
✅ Usa nombres descriptivos (por ejemplo: Compose_FechaFormateada, Compose_JSONCliente).
✅ Agrupa acciones Compose cerca de donde se usan, para mantener legibilidad.
✅ Aprovecha Peek code (Ver código) para copiar expresiones complejas.
✅ Usa Compose para depurar valores intermedios antes de enviar un correo o escribir en Dataverse.
✅ Reemplaza Set variable con Compose cuando el valor no necesite cambiar.
⚠️ Errores comunes
🚫 Escribir @ dentro de cadenas sin escapar correctamente (usa comillas simples).
🚫 Intentar modificar el valor de un Compose (no es posible; es de solo lectura).
🚫 No renombrar acciones → difícil identificar qué Compose es cuál en flujos grandes.
🚫 Abusar de Compose sin limpiar los no usados → afecta legibilidad y mantenimiento.
🔄 Variantes o alternativas
- “Initialize variable” → cuando el valor debe cambiar en pasos posteriores.
- “Append to string array variable” → para listas o concatenaciones acumulativas.
- “Expression editor” → Compose usa las mismas expresiones que las funciones de flujo, útil para probar antes.
- “Data Operations” → Parse JSON → si necesitas descomponer datos estructurados, no sólo mostrarlos.
📚 Recursos oficiales (verificados)
🧩 Mini práctica
Objetivo: Crear un flujo que use Compose para mostrar un mensaje formateado con fecha y nombre del usuario.
1️⃣ Crea un flujo instantáneo “Manualmente desde un botón”.
2️⃣ Agrega una acción Compose con esta expresión:
concat('Hola ', user().displayName, ', hoy es ', formatDateTime(utcNow(), 'dddd, dd MMMM yyyy'))
3️⃣ Agrega una acción Enviar correo (V2) → en el cuerpo inserta la salida del Compose.
4️⃣ Ejecuta el flujo y revisa el correo: verás el texto con el nombre y la fecha formateada. 🎉


Deja un comentario