n8n reliability guide
Prevent duplicate n8n executions
Retries are useful. Duplicate side effects are not. This guide shows how to make webhook, queue and manual rerun paths safe when the same business event can reach n8n more than once.
Where duplicates come from
The idempotency pattern
Choose a stable event key before the first state-changing node. Prefer an upstream event ID, order ID, ticket ID or a deterministic hash of immutable fields. Store that key in a durable system that can answer whether the side effect already completed.
A simple check-then-write can still race if two executions run together. Prefer an atomic insert, unique constraint, transactional write, or a destination API that supports idempotency keys.
Classify nodes by side effect
Retry without creating a second outcome
n8n supports retrying failed executions from execution history. Treat a retry as a replay of business intent, not proof that the first attempt produced no external effect. Before retrying a state-changing step, verify whether the destination already contains the intended result.
Official n8n docs: retry failed executions. For production hardening, also review the official security audit.
Failure tests worth running
Minimum evidence for a safe workflow
Keep the event key, execution ID, destination result ID, timestamps and retry decision. If a duplicate is suppressed, log why.
Want this checked on a real workflow?
Start with the free deterministic preflight. For one workflow, the bounded audit checks retry paths, duplicate actions, secrets, failure handling and recovery evidence.
1-workflow audit — $49Toolkit — $29Free preflight