code.javascript ejecuta un script en un entorno aislado. Úsalo para transformar datos, validar, armar payloads o integrar fuentes que no cubre un HTTP simple.
Campos del paso
Contrato de ejecución
- La API resuelve plantillas en
input. - El sandbox recibe ese objeto como global
input. - Tu código debe asignar
output = .... - Ese
outputes la salida del paso (yresponse.bodyparacapture).
input y pasar datos entre pasos.
Pasar variables desde un paso anterior
Declara eninput lo que necesitas del trigger, de context o de steps.<n>.output. Luego léelo como input.* en el script.
- Asigna
output = { ... }. - En el paso siguiente usa
{{steps.N.output.<campo>}}, o - Declara
capturey lee{{context.<clave>}}.
Objetos y APIs disponibles
Zona horaria
- Trigger
cron:DateTime.now()usa latimezonedel trigger. - Otros triggers (p. ej. webhook): la zona efectiva es
UTC.
Buen ejemplo: normalizar y validar
Buen ejemplo: llamar una API con fetch
token, referencia y monto por input con plantillas; no los incrustes en code.
Buen ejemplo: fechas con DateTime
Malos ejemplos
No asignar output
output, el paso no deja un resultado útil para pasos siguientes ni para capture.
Usar require o APIs de sistema
require, process, ni acceso al sistema de archivos del runner. Usa input, fetch/axios, mysql o sftp.
Leer el trigger directo sin pasarlo por input
trigger no existe como global. Declara "referencia": "{{trigger.body.referencia}}" en input y usa input.referencia.
Mutar estado “global” entre pasos
output + capture/context o con el input del siguiente paso.
MySQL (opcional)
input (idealmente desde el body del webhook o un secreto que tú controles en tu integración). No hardcodees credenciales en code.
SFTP (opcional)
Límites prácticos
- El script corre con
"use strict". - Usa
throw new Error("...")para fallar el paso con un mensaje claro. - Los
console.*se recortan si son muy grandes; no uses logs para transportar el resultado final: usaoutput. - Prefiere pasos cortos y deterministas; deja esperas largas al paso Esperar.

