n8n - 💡(How to fix) Fix Webhook trigger firing multiple times

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

  • error: all

Code Example

{
    "eventName": "n8n.node.started",
    "payload": {
        "executionId": "127319",
        "nodeName": "Render Video",
        "nodeId": "4f75efaf-4b29-4edc-a807-04c78f44c91c",
        "nodeType": "n8n-nodes-base.webhook",
        "workflowId": "clsT3CySoLNtnTf6",
        "workflowName": "Story Videos"
    },
    "id": "3235e4b6-cb18-4078-b2d2-a316be975d7f",
    "ts": "2026-06-05T04:33:55.218-07:00",
    "message": "n8n.node.started",
    "__type": "$$EventMessageNode"
}

{
    "id": "45487bf1-9392-4130-94ba-f11ec77a8c55",
    "ts": "2026-06-05T04:33:55.240-07:00",
    "__type": "$$EventMessageNode",
    "eventName": "n8n.node.started",
    "payload": {
        "workflowId": "clsT3CySoLNtnTf6",
        "workflowName": "Story Videos",
        "executionId": "127321",
        "nodeType": "n8n-nodes-base.webhook",
        "nodeName": "Render Video",
        "nodeId": "4f75efaf-4b29-4edc-a807-04c78f44c91c"
    },
    "message": "n8n.node.started"
}
RAW_BUFFERClick to expand / collapse

Bug Description

Baserow triggers an n8n webhook once. n8n reliably executes the webhook multiple times. It was doing it three times, and after deleting and recreating the webhook trigger, it started doing it twice. If I disconnect the webhook trigger from the rest of the nodes, it only records a single execution. As soon as I reconnect it, it goes back to showing multiple executions. Each execution appears to be from the same trigger (same event_id from Baserow in the payload), but they're ~22ms apart in n8n:

{
    "eventName": "n8n.node.started",
    "payload": {
        "executionId": "127319",
        "nodeName": "Render Video",
        "nodeId": "4f75efaf-4b29-4edc-a807-04c78f44c91c",
        "nodeType": "n8n-nodes-base.webhook",
        "workflowId": "clsT3CySoLNtnTf6",
        "workflowName": "Story Videos"
    },
    "id": "3235e4b6-cb18-4078-b2d2-a316be975d7f",
    "ts": "2026-06-05T04:33:55.218-07:00",
    "message": "n8n.node.started",
    "__type": "$$EventMessageNode"
}

{
    "id": "45487bf1-9392-4130-94ba-f11ec77a8c55",
    "ts": "2026-06-05T04:33:55.240-07:00",
    "__type": "$$EventMessageNode",
    "eventName": "n8n.node.started",
    "payload": {
        "workflowId": "clsT3CySoLNtnTf6",
        "workflowName": "Story Videos",
        "executionId": "127321",
        "nodeType": "n8n-nodes-base.webhook",
        "nodeName": "Render Video",
        "nodeId": "4f75efaf-4b29-4edc-a807-04c78f44c91c"
    },
    "message": "n8n.node.started"
}

For anyone else who finds this issue before it's resolved, I built a stopgap this morning for deduplication that effectively does the following between the webhook node and the actual work for this pipeline:

  • write {{ $execution.id }} back to baserow on this record (in render_lock)
  • wait 1s for all executions to settle
  • fetch the row again and compare render_lock to {{ $execution.id }}
  • if it's the same, continue

This will hopefully resolve the duplication and subsequent race condition by only allowing the last member to survive. We'll see if it works on Monday when the next execution happens.

To Reproduce

Not sure how to reliably reproduce it. It only happens on one of my webhook triggers across all workflows (afaik).

Expected behavior

Webhooks only execute once for each trigger.

Debug Info

Debug info

core

  • n8nVersion: 2.23.3
  • platform: docker (self-hosted)
  • nodeJsVersion: 24.15.0
  • nodeEnv: production
  • database: sqlite
  • executionMode: regular
  • concurrency: -1
  • license: enterprise (production)
  • consumerId: 5855dbac-9e59-4fbd-b6eb-70abb11577f0

storage

  • success: all
  • error: all
  • progress: false
  • manual: true
  • binaryMode: filesystem

pruning

  • enabled: true
  • maxAge: 168 hours
  • maxCount: 10000 executions

client

  • userAgent: mozilla/5.0 (macintosh; intel mac os x 10_15_7) applewebkit/537.36 (khtml, like gecko) chrome/148.0.0.0 safari/537.36
  • isTouchDevice: false

cluster

  • instanceCount: 1
  • versions: 2.23.3
  • instances:
    • instanceKey: 8f7f9a7b-afc8-4fff-9f02-bc76c86bdc0a, hostId: main-86a3202bbf9a, instanceType: main, instanceRole: leader, version: 2.23.3
  • checks:
    • check: hostid-clash, status: succeeded, warnings: -
    • check: lifecycle, status: succeeded, warnings: -
    • check: split-brain, status: succeeded, warnings: -
    • check: version-mismatch, status: succeeded, warnings: -

Generated at: 2026-06-05T13:44:26.334Z

Operating System

docker

n8n Version

2.23.3

Node.js Version

24.15.0

Database

SQLite (default)

Execution mode

main (default)

Hosting

self hosted

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

Webhooks only execute once for each trigger.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING