DEV Community

Trigger Workflow
Trigger Workflow

Posted on Originally published at tools.triggerworkflow.com

n8n Webhook Not Firing? 7 Fixes Ranked by Actual Frequency

"Webhook not firing" is the most-reported complaint in self-hosted n8n — and it concentrates into seven causes. Fix #1 alone decides most cases. The ranking follows how often each cause appears in production, not how scary it sounds. Walk top to bottom, stop at the first hit.

Fix 1 — You're calling the test URL

/webhook-test/... breathes only while the editor is listening and auto-expires with your tab. /webhook/... is production and requires the workflow to be Active. The test URL ending up in a client integration or Stripe dashboard is a forum fixture — always the first check.

Fix 2 — The workflow isn't Active

Editing during a hotfix, an import defaulting to inactive, an activation unwound by an expired credential — read the toggle. It's a free-to-verify binary fact.

Fix 3 — Duplicate path, two workflows, one winner

A webhook path + HTTP method is unique. Duplicate a workflow to build a variant and the newer activation owns the route — the older one goes deaf with zero visible error. Grep your exports for duplicate paths.

Fix 4 — The proxy stripped the prefix

Behind Nginx/Traefik/Caddy with a subpath, misconfigured proxies strip prefixes — callers hit 404 while logs stay silent. The diagnosis is one external curl -v; the fix lives in the proxy config and WEBHOOK_URL.

Fix 5 — Queue-mode registration drift

In queue mode, registrations belong to the processor process that made them. Restarts, deploys, scale-downs → routes pointing at dead listeners while workflows show Active. See the queue-mode anatomy.

Fix 6 — The auth layer ate it

Wrong or omitted auth header = 401 with an otherwise healthy-looking workflow. Test from outside with the exact headers the caller claims to send.

Fix 7 — Firewall quietly intercepting

Bot-fight modes drop "suspicious" POSTs from senders you trust. If external curl works but the real sender stays silent, allowlist at the edge and check WAF logs.

Five minutes, reusable forever: read the caller's URL, verify Active, grep for duplicate paths, curl from outside, compare with Executions. The structural half of these traps is exactly what the free n8n workflow audit flags from the exported JSON — browser-only, nothing uploaded. Walk the list; the webhook tells you where it is.

Top comments (0)