Skip to content

Workflow files

workflows/<name>.json; the workflow’s name is the file name. An unknown key is an error.

KeyIs
metaabout it: description, from, until, off, internal, and keys of your own
onwhen it runs: a list of objects (below)none: it runs only as a step
stepswhat it does, in orderneeded
successsteps run when it went well
failuresteps run when the state says "success": false
errorsteps run when something broke
timeouthow long a run may wait for data, like "2h"a day
EntryMeans
{"event": "order.placed"}a message of this type starts a run
{"schedule": "0 9 * * *"}a schedule starts a run (cron, local time)
{"path": "inbox"}a change to this file or folder starts a run; ~/ is home, $$NAME an environment variable, a relative path is in the workspace
{"$order": 43}condition: order is exactly 43
{"has": "$order"}condition: order is in the state
{"has": ["$order", "$$API"]}condition: all are there; $$API is defined (environment or secret)

event, schedule and path are alternatives, each alone in its object; conditions must all hold. Any other key is an error naming it.

KeyMeans
descriptiontext
from, untila date (2026-11-01, a whole day) or an RFC 3339 time: outside them nothing starts it
offtrue: nothing starts it
internaltrue: it looks after the workspace; its runs are left out of lists unless asked, and outside the limits
any otherkept and shown

id, name, created, path and version are given by itero; setting one is an error.

FormIs
"#name"an action, its latest version
"#name@0.2"an action at a version
"name"a workflow, run here with the same state
["#a", "b"]side by side; the next step waits for all
{"#name": {...}}with data for it; on in it is when it runs

In a step’s data, "$name" is the state’s value, "$$NAME" a secret’s. See Writing a workflow.