How to handle errors in multi-step n8n workflows?

I’m building a complex n8n workflow with multiple nodes that depend on each other. What are the best practices for handling errors and retries in such workflows to ensure data consistency and prevent workflow failures? Are there built-in features or recommended patterns for error handling in n8n?

Describe the problem/error/question

What is the error message (if any)?

Please share your workflow

(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)

Share the output returned by the last node

Information on your n8n setup

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:

Hi @tarunnagar,

It will be useful to see what your workflow looks like to give more detailed recommendations, however you can look at the Settings tab of any of your critical points of potential failure for nodes and set these settings accordingly to avoid your workflow from falling over

For example Retry on fail is useful to mitigate any network issues which might happen

Always output data is useful for nodes (usually db nodes) returning nothing when no records are found, causes the workflow to stop processing. Enable this to continue with a null to the next node

On Error continue is useful for ignoring failed node executions and continuing. This is useful when it doesnt matter if some records failed and you want to continue, for example processing batch operations

On Error continue with error output adds an additional error output path for the node, which allows you to continue processing your workflow and handle logic in cases of errors.

To handle errors in multi-step n8n workflows, use the Error Trigger for centralized logging and alerts, enable Continue On Fail for non-critical nodes, and add IF nodes to validate data before key steps. For reliability, implement retry logic with Wait nodes and isolate risky steps using sub-workflows.