The Error Shield wraps a single node so that errors are caught and routed to a dedicated Error branch, rather than stopping the entire run. This lets you handle failures gracefully — by retrying, notifying someone, or taking a fallback path — without writing defensive code in every step.
When the node inside the shield runs:
errorCode and errorMessage field you can bind to downstream to handle different failure types.Retries and backoff happen before the shield decides which branch to take. The shield will keep retrying until the attempt limit is reached, then route to the Error branch if every attempt fails.
Most action nodes are supported: HTTP requests, integrations, database operations, AI prompts, and similar nodes that run, succeed, or fail in a single step.
Some nodes pause the run rather than completing it. Paused runs have a third outcome — neither success nor error — that the shield does not implement. Wrapping a pause-capable node would silently swallow the pause, causing unexpected behaviour.
The following node types cannot be placed inside an Error Shield:
| Node | Why |
|---|---|
| Loop | A loop container manages its own iteration lifecycle and cannot be nested inside a shield. |
| Wait Conditions | Waits for an external signal, a date, or a form response — the run pauses until the condition is met. |
| Delay (wait until a date / wait for a signal) | When a Delay node is set to "Wait until a date", "Wait for an external signal", or "Wait for a form response", it pauses the run. A Delay set to "Wait for some time" (a fixed interval) runs inline and is shieldable. |
| User Approval | Pauses the run and waits for a human to approve or reject. |
Although both Create Task and User Approval involve human work, they behave differently in a workflow:
Use Create Task when the workflow should hand off work and continue immediately. Use User Approval when downstream steps must wait for a person's decision.
Configure how many times the shield retries before routing to the Error branch:
Set a maximum time for the entire shield (including all retries). If the timeout is exceeded, the run routes to the Error branch with an errorCode of shield_timeout.
When enabled, the Error branch output includes the original inputs to the shielded node alongside the error details. This is useful when you want to log or surface what was attempted.