Go to Studio

Fail Node

The Fail Node intentionally stops a workflow with a custom error message, useful for validation, business rule enforcement, and explicit error paths.

Fail Node (Stop Node) on the workflow canvas

What does the Fail Node do?

The Fail Node stops workflow execution and reports a custom error message. Use it as an explicit termination point when an upstream condition is unmet, to validate inputs early, enforce business rules, or surface a clear, human-readable failure to whoever runs (or monitors) the workflow.

Common use cases:

  • Halt a workflow when a required input (URL, API key, dataset) is missing or malformed.
  • Enforce a business rule before continuing (e.g. content shorter than 500 words, score outside [0, 100]).
  • Convert a soft API error (HTTP 4xx/5xx) into a hard, traceable workflow failure with full context.
  • Stop early when a rate limit or quota threshold is reached.

Quick setup

Follow these steps to add and configure the Fail Node in your workflow:

Add the node to the canvas

Open the Node Library, go to Tools > Flow control, then drag and drop the Fail Node onto your workspace.

Place it on a conditional branch

Connect the Fail Node downstream of a Conditional node so it only triggers on the failure branch. Without a guard, the workflow will fail every run.

Write a clear error message

Open the node settings and fill the Error Message field. Reference upstream values with template variables like {{nodeName.field}} so the message includes the data that caused the failure.

(Optional) Externalize the message

Tick Use variable for error message to bind the message to the external {{errorMessage}} workflow variable. The Fail Node will then read its message from the workflow input at runtime.

Configuration parameters

Fail Node error message settings

The Fail Node only takes a single text parameter, but writing a useful message is what makes the node valuable.

Required fields

Name string required default: Stop Node

Node name — Identifier shown on the canvas and in execution logs. Rename it to describe what it guards (e.g. Fail if URL missing) for easier debugging.

Description string required

Node description — Short sentence describing the failure condition handled by this node.

Error Message string required default: Workflow stopped intentionally

Error message — Text displayed when the node fires. Supports template variables ({{variableName}}, {{nodeName.field}}) that are interpolated from upstream node outputs at runtime. Required: validation rejects an empty value unless the externalize option is on.

Optional fields

Use variable for error message boolean default: false

Externalize error message — When enabled, the node reads its message from the external workflow variable {{errorMessage}} instead of the static field. Useful when the message itself is computed by an upstream node or passed in as a workflow input.

Tip

Template variables in the error message are resolved at execution time. If a referenced variable is missing, the placeholder appears literally in the output — useful for spotting wiring errors during development.

What does the node output?

The Fail Node has no output port: it terminates the workflow run instead of producing data. The execution engine raises a UserFailedException with your message attached, which is rendered in the run log and any subscribed monitoring channel.

How to use the output

Because the node ends the run, downstream nodes are never reached. To act on the failure, consume the workflow execution result from outside (API webhook, run history view, alerting). The error message you wrote in the node is exactly what the consumer receives.

error_message string

The interpolated error message passed to UserFailedException. This is the human-readable text shown in the run log and returned by the workflow execution API.

status string

Workflow run status set to failed. The run is marked as a user-intentional failure, distinct from system errors, so you can filter monitoring dashboards accordingly.

Usage examples

Example 1: Validate a required input early

Ensure a URL is supplied before running an expensive scraping pipeline.

Conditional check (upstream): {{Text_Input_0.text}} is empty.

Error Message configuration:

URL is required but was not provided.
Please supply a valid http(s) URL in the Text Input node.

What happens at runtime: when the Conditional routes to the Fail Node, the workflow stops immediately. The downstream Web Scraper / LLM nodes are never billed.

Example 2: Enforce a minimum content length with interpolation

Reject content shorter than 500 words before sending it to a CMS.

Conditional check (upstream): {{Count_List_Items_0.count}} < 500.

Error Message configuration:

Content too short ({{Count_List_Items_0.count}} words).
Minimum required: 500. Expand the article before publishing.

Generated message at runtime (example):

Content too short (312 words).
Minimum required: 500. Expand the article before publishing.

Example 3: Forward an external error message

When the message is built by an upstream LLM or API node, externalize it:

  1. In Fail Node settings, tick Use variable for error message.
  2. The field is replaced by {{errorMessage}}.
  3. Wire the upstream node’s output into the workflow’s errorMessage variable.

The node now relays whatever message the upstream node produced, with no string editing inside the Fail Node itself.

Common issues

The workflow always fails, even on the happy path

Cause: the Fail Node was placed inline (no Conditional in front of it), so every run reaches it.

Solution: insert a Conditional node upstream and connect the Fail Node only to the failure branch. The success branch should bypass it entirely.

The error message contains the literal `{{variableName}}` placeholder

Cause: the variable name does not match any upstream output, or the upstream node did not produce a value before the Fail Node fired.

Solution: copy the variable name from the source node’s output panel. Confirm the source node sits upstream of the Conditional that triggers the Fail Node, so its value is available at interpolation time.

`Use variable for error message` is on but the message is empty

Cause: the external {{errorMessage}} variable is not bound or the upstream value is empty.

Solution: the runner falls back to Workflow failed intentionally in this case. To get a meaningful message, ensure the upstream node writes a non-empty string to the errorMessage workflow variable.

`Error message is required` validation error in the settings panel

Cause: the field is empty and the externalize checkbox is off.

Solution: either type a message (the only accepted empty-looking value is the literal {{errorMessage}} reference) or tick Use variable for error message.

Best practices and pitfalls

Tip

Fail early, fail loud. Place validation Fail Nodes at the very start of the workflow, before any expensive node (LLM, scraper, BigQuery write). A clear failure on input validation costs nothing; the same failure after 30 seconds of LLM calls costs money and time.

Warning

Do not use Fail Node inside a Loop. A Fail Node terminates the entire workflow, not just the current iteration. If you want to skip a bad item and continue, use a Conditional that routes the bad item to a logging branch instead — the loop will keep iterating.

How does it fit into a workflow?

The Fail Node is a terminal node placed on the failure branch of a Conditional. The pattern is “validate, then fan out”: one or more Conditionals at the entry of the workflow, each guarding a Fail Node, then the productive nodes downstream.

graph LR
    Input[Text Input] --> Cond{URL valid?}
    Cond -->|No| Fail[Fail Node
<br/>URL missing]
    Cond -->|Yes| Scraper[Web Scraper]
    Scraper --> LLM[LLM]
    LLM --> Output[Output]