Your workflowfailed. Here'sthe node, and why.Or: not sure.
Insight reads a failed n8n execution so you don't have to go node by node through raw JSON. It names the node that broke, the likely cause and the fix, with a confidence score that hedges when it should.
try it without signing up
npx insight-n8n demoProduct demo on sample data. A failed n8n execution is replayed node by node, secrets are redacted, and Insight names the failing node, the root cause, a confidence score and a fix, or reports the failure as transient.
n8n breaksin familiarways.
Most failures are one of a handful of patterns, several of them specific to how n8n moves data between nodes. Insight names which one, and where.
An OAuth refresh token expired, a key was rotated, or the wrong credential is attached to the node. The workflow is usually fine, and Insight says so instead of inventing a code change.
- signal
- 401 · 403 · invalid_grant
- looks like
- 401 or 403 from a node
- usual fix
- reconnect the credential
An API moved a field and an expression that worked yesterday now reads undefined. Insight looks at the items the failing node actually received and points at where the field lives now.
- signal
- reading 'x' of undefined
- looks like
- an expression error
- usual fix
- the new path, spelled out
Some nodes, like JWT verify, rebuild each item from their own output and silently drop the JSON fields and binary files that came before. The error is thrown downstream, so the cause is a node earlier than the one that failed.
- signal
- not found, one node later
- looks like
- file or field “not found”
- usual fix
- merge the item back in
A setting one level off: Respond to Webhook's response code belongs under options, so every response goes out as 200. Silent failures like this only surface when something downstream breaks because of them.
- signal
- silent, until it isn't
- looks like
- a later node failing
- usual fix
- move the field under options
An IF node's output 0 is true and output 1 is false. Swap the wires and the workflow does the opposite of what it says while looking correct at a glance.
- signal
- right data, wrong branch
- looks like
- the other branch's error
- usual fix
- swap the outputs
Timeouts, connection resets, 429s and 502 to 504s are recognized by their signature and reported as transient straight away. No LLM call, no invented explanation for a network blip.
- signal
- no model call
- looks like
- ETIMEDOUT, 503, 429
- usual fix
- re-run it
A confident wrongfix costs youan afternoon.
Every diagnosis carries a confidence score. Under 0.40 Insight says it's a lead, not an answer, and offers the fix as something to verify. Above 0.70 it gives the exact field or expression to change.
Confidence is low. Treat this as a lead to investigate, not a confirmed root cause.
Fetch Order now returns the order under data, so $json.customer is undefined.
Possible fix · verify before applying
to = {{ $json.data.customer.email }}
Secrets outfirst. Writesby name.
- redact
- before any LLM call, and before storage
- your key
- public page: memory, one request
- stored key
- AES-256-GCM at rest
- token
- ingest token SHA-256 hashed
- writes
- 3 allowlisted endpoints, named
Execution data can hold real customer data from your own integrations. The redacted execution goes to Groq to be diagnosed, and only a metadata row is kept. The security page lists what goes where.
Read the security model