Why n8n Workflows Fail Silently (And What Actually Fixes It)
n8n doesn't tell you when a workflow breaks unless you set that up yourself. Here's why "it returned 200 but nothing happened" keeps happening, and the two-node pattern that actually fixes it.
Every n8n builder hits this eventually: a workflow that's been running fine for weeks quietly stops doing its job. Nobody notices in n8n's own dashboard, because n8n only shows you executions if you go looking for them. The first person to notice is usually a customer, asking why their refund confirmation never arrived — days after the node that was supposed to send it started failing.
This isn't a bug in n8n. It's the default behavior, and it trips up almost everyone at least once.
Why this happens by default
n8n's default is simple: if a node throws an error, the workflow execution stops there. That's it — no alert, no email, no Slack message, unless you've explicitly wired one up. The execution shows up as "failed" in the Executions tab, but nothing pushes that information to you. You have to go check.
For a workflow you built yourself and run manually a few times, that's fine. For a workflow that's supposed to run unattended — sending confirmation emails, logging support tickets, routing leads — it means failures can sit invisible for as long as nobody happens to open n8n and scroll through the execution history.
The classic symptom: "it returned 200 but nothing happened"
A specific version of this trips people up constantly: an HTTP Request node returns a 200 status, so it looks successful, but the actual downstream effect never happened — no row got written, no message got sent. A 200 only tells you the HTTP request itself didn't error; it says nothing about whether the API actually did what you expected with the data you sent it. If the next node in the chain depends on a field that wasn't in that response, that node is where things quietly break, and it can fail in a way that's easy to miss if you're not specifically watching for it.
The fix: one extra node, wired to everything that can fail
The fix is a pattern, not a plugin. Two pieces:
- Set
onError: continueErrorOutputon every node that calls something external — an API, a database, an email or Slack send, anything that can realistically fail for reasons outside your control. This gives that node a second output specifically for errors, instead of just halting the whole run. - Wire every one of those error outputs into a single shared node — an email or Slack message that fires only when something goes wrong, telling you (or whoever owns that workflow) what failed and where. One node, reused across the whole workflow, is enough — you don't need a separate alert for every step.
That's the entire pattern. It doesn't require a paid add-on or a separate monitoring service — it's built into n8n's node settings, most people just don't know to turn it on until after the first silent failure costs them something.
What we found auditing our own 110 templates
We recently went through every one of Flowmanic's 110 templates specifically looking for this. Before the audit: only 3 out of 110 had any error-handling configuration at all. The other 107 would fail exactly the way described above — silently, with the first sign of trouble being a confused customer or a manager wondering why a report never came.
We fixed all 110. Every node capable of a real external-call failure (443 nodes across the catalog) now has onError: continueErrorOutput, wired to a dedicated "Notify Me: Workflow Error" node that reuses whatever channel that workflow already has configured — Slack, Gmail, or email — so it's not asking for a new credential, just one more thing pointed at an address you actually watch.
A 5-minute self-check for your own workflows
If you're not sure whether your own workflows have this gap:
- Open a workflow and look at any node that calls an external service — an API, a database write, a message send.
- Check its settings for an "On Error" option. If it's set to the default (stop the workflow), that node fails silently.
- Ask yourself: if this exact node failed right now, how would I find out? If the honest answer is "I'd have to go check," that's the gap.
- Add one notification node and wire the error outputs of your risky nodes into it. That's the whole fix.
It's a small amount of setup for something that otherwise fails exactly when you're not looking — which, for anything running unattended, is most of the time. Every Flowmanic template ships with this pattern already built in, so it's one less thing to remember to add yourself.
Related templates
AI Support Inbox Triage
Every new support email gets auto-categorized, prioritized, summarized, and given a draft reply — delivered to Slack for a one-click send.
Refund Request Router
Refund requests are logged, routed to support on Slack, and acknowledged instantly.
Employee Time-Off Approval
Employees request time off via form; a manager approval in a sheet triggers an automatic calendar block and confirmation.
IT Ticket Triage Router
New support tickets are auto-categorized, urgency-flagged, logged, and routed to Slack.