PSA: n8n's Continue On Fail silently swallows node errors — your execution log lies to you

Something I see constantly in production n8n workflows that trips people up.

When you enable Continue On Fail on a node, n8n will mark the execution as success even if that node failed with a 500, a 401, or an empty response. The error gets passed downstream as error output data, the workflow keeps running, and the top-level execution status shows green.

This means: your HubSpot node failed, your CRM row was never created, your client never got the email — and n8n’s execution log shows success.

Three places this causes real pain:

  1. HTTP Request nodes with Continue On Fail — a 500 from an API looks identical to a 200 in the execution view

  2. Code nodes that throw errors — silently passed downstream

  3. Any node in a multi-step flow where you “just want it to keep going”

The fix is to add an explicit IF node after any critical node that uses Continue On Fail — check for the presence of $json.error in the output and route it to an alert branch.

Has anyone else hit this in production? Curious how people are handling it across larger workflows.

good additions. the inconsistent error shape trips people up constantly. handling both $json.error.message and $json.error as a plain string in the same IF check is the right call.

the zero items case is nastier than CoF in some ways. no error shape, flow just stops, everything upstream shows green. i add explicit item count checks on nodes where empty output is a real failure, not just a quiet edge case.

on setup: central Error Trigger for obvious failures, but that leaves the CoF and zero-items cases uncovered. been building something specifically for the green-but-broken pattern. what’s the most common place you see zero items bite people in production?