# Executions (/docs/concepts/executions)

What happens when a workflow runs.



An execution is one run of a workflow. It records every node's output, timing, and status.

States [#states]

| State   | Meaning                                                                                    |
| ------- | ------------------------------------------------------------------------------------------ |
| Pending | Queued, waiting to start                                                                   |
| Running | Nodes are executing                                                                        |
| Waiting | Paused mid-run, typically a ForEach loop between iteration batches. Resumes automatically. |
| Success | All nodes completed without error                                                          |
| Failed  | One or more nodes hit an error (including timeouts)                                        |

Timed-out executions are stored as `failed` with a timeout error message.

What's recorded [#whats-recorded]

For each execution:

* **Start time** and **completion time**
* **Per-node data** - output, status, duration, error message

Duplicate protection [#duplicate-protection]

**Manual and preview runs** are guarded: if a workflow already has an active execution (pending, running, or waiting), a new run of the same kind is rejected. For workflows that contain side-effecting nodes, a manual run and a preview run also can't overlap.

**Cron-triggered runs** are skipped if any execution is already active for that workflow.

**Webhook-triggered runs** are not gated by this active-execution check — rejecting an inbound delivery would drop a legitimate external event. Webhook bursts can create overlapping executions; duplicate deliveries are instead suppressed by provider delivery-ID dedup, rate limiting, and plan concurrency limits.

Timeout [#timeout]

Executions have a hard 10-minute timeout. If a workflow hasn't completed by then, it's marked as failed with a timeout error. Stuck executions are cleaned up automatically by a background reconciliation job.

Next steps [#next-steps]

* [Execution History](/docs/executions/history) - viewing past runs
* [Run Detail](/docs/executions/run-detail) - inspecting node-level results
