Ask AI

Error Handling: Re-run Failed Nodes Using a Fallback Route

Sometimes external APIs or third-party services can be unstable and return errors. If you're aware of this and want to prevent such failures from interrupting the entire scenario, you can configure a targeted retry for specific nodes. This guide shows how to implement a fallback route that re-attempts the same step and uses the first successful result.

The example below uses a Headless Browser, but this approach works for any node that might return an error.

Notion image

Scenario Structure:

#
Step
Description
1
Trigger
Starts the process once
2
Headless Browser (primary)
Executes a task; if it fails, always returns null (when error ignoring is enabled)
3
Filter
Passes the result forward if {{4.bodyContent}} != null (i.e., when no error occurred)
4
Fallback Route
Triggers if node 4 fails
5
Wait
(Optional) Adds a delay before retrying
6
Headless Browser (retry copy)
Attempts again — a copy of node 4
7
SetVariable
Stores the first non-null result via ifEmpty(4.bodyContent; 3.bodyContent)

How to Implement

Step 1: Configure the potentially unstable node (e.g., Headless Browser - #4) Enable the "Ignore errors" option.

Notion image

This way, if it fails, {{4.bodyContent}} always will be null and the scenario won't stop.

Step 2: Add a filter before combining results Insert a filter between nodes 4 and 5

Filter expression:

{{ 4.bodyContent != null }}
Notion image

Meaning: "if the primary node returned content, let it pass"

Step 3: Attach a fallback route to node 4

Notion image

In the fallback route, insert a duplicate of main node

This acts as an alternative attempt.

(Optional) Add a delay before retrying (if needed) Sometimes it’s useful to wait before retrying (e.g., in case of rate limiting or slow loading).

Step 4: Combine results using ifEmpty in SetVariable (node #5) In SetVariable, create a variable, e.g., finalBodyContent, with this value:

Notion image
{{ifEmpty(4.bodyContent;3.bodyContent)}}

Explanation:

  • If {{4.bodyContent}} is not null, it’s used.
  • If it's null (the node failed), then {{3.bodyContent}} is used instead.

Insert a Wait node between the fallback route and the retry copy (between F and 3)

Result Check

In the SetVariable node, check this value:

{{ ifEmpty(4.bodyContent; 3.bodyContent) }}
Notion image

If everything is set up correctly, this will always contain a successful bodyContent, even if the first node failed.

Multiple Retries (if more attempts are needed)

If you expect that the second attempt might also fail (which can happen with highly unstable APIs), simply repeat the retry block and extend the SetVariable with a cascade like:

{{ ifEmpty(4.bodyContent; 3.bodyContent; 7.bodyContent) }}
Notion image
 
Did this answer your question?
😞
😐
🤩