Execution lifecycle
An execution is one run of a workflow. It starts when a trigger fires or someone presses Run, moves through a few statuses, and ends in a final one. This page maps the journey.
The statuses
| Status | Label in the app | Meaning |
|---|---|---|
pending |
Pending | The run is queued. No worker has picked it up yet. |
running |
Running | A worker is executing the nodes. |
paused |
Paused | Someone pressed Pause. The run waits at a node boundary until Resume. |
waiting_for_input |
Waiting | An Approval node or a Slack Wait for response is waiting for a person to decide. |
waiting_for_human |
Needs you | A Web Controller node handed the browser to a person and waits for them. |
success |
Success | Every node finished, or every failure was handled. |
failed |
Failed | A node failed and nothing handled it, or the run could not continue. |
timeout |
Timed out | The run was closed because nothing moved it forward. See Timed out. |
stopped |
Stopped | Someone pressed Stop. |
success, failed, timeout and stopped are final. A run in one of these statuses never changes again. You can rerun it, which creates a new execution.
How a run moves
| From | To | When |
|---|---|---|
| pending | running | A worker picks the run up. |
| running | success | The last node finishes. |
| running | failed | A node fails and the failure isn't handled. |
| running | paused | Someone presses Pause. Resume returns it to running. |
| running | waiting_for_input | The run waits for a decision. It returns to running when the decision arrives. |
| running | waiting_for_human | The run waits for a person. It returns to running when they hand it back. |
| pending, running, paused or waiting | stopped | Someone presses Stop. |
The statuses in detail
Pending
The run is queued for a worker. This usually lasts well under a second.
If no worker is online, the editor shows a warning when you start the run: "No worker is running right now, so this run is queued and will start as soon as one comes back." The run stays queued until a worker returns. See Rerun, stop & pause.
Running
A worker walks the graph node by node, following the connections out of each node.
There is no time limit on a run, and no default time limit on a node. A node only has a deadline if you set Timeout (ms) in its Node Settings. Anything else runs until it returns or someone presses Stop. Stop interrupts the node in flight.
Paused
Someone pressed Pause. The node that is already running finishes. The run then waits before the next node until someone presses Resume or Stop.
Waiting
An Approval node or a Slack Wait for response step is waiting for a decision. No worker is busy while a run waits, so a waiting run can sit for days. When the decision arrives, the run continues from where it stopped. Data from nodes before the pause is still available to expressions.
An Approval node waits until someone decides or the run is stopped. For a wait with a real deadline, use Slack Wait for response. See Approval basics.
Needs you
A Web Controller node handed control of its browser to a person. The run continues when they hand it back.
Success
Every node finished. A node that failed but sent its failure down a connected error port counts as handled, so the run can still end as Success. The failed node stays red on the canvas.
Failed
A node failed and nothing handled it. The run stops at that node, and later nodes do not run. The execution records which node failed and the error message.
A node that hits its own Timeout (ms) shows as Failed, and the run ends as Failed.
A run also ends as Failed if the worker running it stops responding. Flero closes such a run within about three minutes with the message "The worker running this execution stopped responding … Nothing was re-run automatically. Use Rerun to run it again." Flero never re-runs it on its own, because some of its nodes may already have sent emails or written data.
Timed out
A queued or running run that no worker holds and that has not moved for a long time (24 hours by default) is closed as Timed out. This catches a run that no worker ever picked up. Paused and waiting runs are never closed this way.
Stopped
Someone pressed Stop. The node in flight is interrupted and no further nodes run. Stop works on pending, running, paused and waiting runs, even when no worker is online. See Rerun, stop & pause.
Node statuses
Each node in a run has its own status. You see it as the colour of the node on the canvas while a run is loaded, and in the timeline on the execution detail page.
| Status | Meaning |
|---|---|
| Running | Executing now |
| Success | Finished cleanly |
| Failed | Failed, or hit its Timeout |
| Waiting | Waiting for a decision |
| Stopped | Interrupted by Stop |
| Skipped | Not reached, for example on the branch of an If that was not taken |
What is recorded
For every execution, Flero records:
- The execution ID.
- The workflow and the version that ran.
- How it started: a live trigger or a manual run.
- Start time, finish time and duration.
- The final status, and the error message if it failed.
- Each node's status, timings and output.
- AI cost and token usage, when AI nodes ran.
You can browse all of this in Logs and on the execution detail page. How long executions are kept is set in Data & privacy.
Sandbox executions
A run made in sandbox mode goes through the same statuses. In the editor it appears under Sandbox Executions with a small "Sandbox" dot. Monitoring counts sandbox runs along with live ones.
Tips & gotchas
- A long Pending usually means no worker is online, or every worker is busy. The run starts as soon as a worker is free.
- Waiting is not stuck. A run waiting for a decision holds no worker. Decide it in Approvals, or press Stop in the editor.
- Execution IDs are unique and never change. They are safe to paste into a ticket.
- A failed run is never retried automatically. Use Rerun after you fix the cause.
Related
Found something out of date? This page lives in the Flero docs content set.