Why does my n8n workflow run twice for the same thing?

Usually because the same event really did arrive twice, and n8n processed what it received. The common causes are a sender that delivers again when it does not get a quick answer, two triggers that both see the same record, and a person who submits the same form twice. n8n does not decide on its own that two items are the same; you choose the key that makes them the same and keep a record of it.

So start with the executions list: two runs a second apart point to a retry or a second trigger, two runs minutes apart point to a person or a polling trigger reading the record again.

Updated Sep 30, 2026

How it works

  1. Compare the two executions

    Open both runs in the Executions tab and compare the input of the first node: same payload and timing a second apart, or a different payload for the same person.

  2. Answer the sender first when it retries

    The Webhook node can respond immediately ("Workflow got started") instead of waiting for the last node. A sender that retries on slow answers then stops sending the event again.

  3. Decide what counts as the same

    An order ID, a message ID, or a fingerprint of email or phone for leads. Write it down; it is the rule the client will ask about.

  4. Keep a record across runs

    n8n's Remove Duplicates node can drop items already processed in previous executions, keyed on the field you choose, with a history of 10,000 items by default. A data table works when you also need a time window, such as 30 days.

  5. Test the repeat on purpose

    Send the same test event twice and check that the second run stops before any alert, email or record is created.

What it costs to run

There is no separate price for a duplicate: it is simply another run. On n8n Cloud every run counts against the plan's monthly executions, so a workflow that runs everything twice also uses its allowance twice as fast.

ItemList priceSource
n8n Cloud Starter, executions included2,500 workflow executions a month, each a full run with unlimited steps; a duplicate run counts as onen8n, n8n Plans and PricingRead on Sep 30, 2026
Remove Duplicates node, history kept across executions10,000 items by default ("History Size"), stored per node or per workflown8n Docs, Remove Duplicates nodeRead on Sep 30, 2026
Webhook node, respond immediatelyReturns "Workflow got started" at once instead of waiting for the last noden8n Docs, Webhook nodeRead on Sep 30, 2026

Third-party list prices, read on the date shown. They are not Betterlane prices.

What we learned building it

From Betterlane's own lead handling: three n8n workflows built on n8n Cloud in September 2026 and tested with a seed address. Not a client system.

One alert per lead needs a fingerprint, not a name
We key each lead on a hash of its email or phone and keep it for 30 days, so the same person writing twice raises one alert, not two.
A condition that looked right let a repeat through
A "row does not exist" check combined with a date condition passed a repeat during live testing. We replaced it with a plain lookup followed by a small code gate, and the repeat stopped.
Waiting executions hold an old copy
We first kept the record in the workflow's static data. A run that was waiting (for a reminder or an approval) held a stale copy of it, so we moved the record to a data table.

When it is not worth it

  • If a repeat only creates an internal note someone ignores, a deduplication step may cost more attention than it saves.
  • If the second run comes from a person resubmitting on purpose (a corrected form), treat it as an update, not a duplicate.

Questions

Is it an n8n bug?

Rarely. In most cases the event really arrived twice. The executions list shows the two inputs; start there before changing the workflow.

Does Remove Duplicates survive a restart?

Its "Remove Items Processed in Previous Executions" operation keeps a history across executions, per node or per workflow. For a time window or a record other workflows read, use a data table.

Why did my workflow run twice while I was testing?

A test run in the editor and a run of the published workflow are separate executions. Check which URL or trigger each one came from.

Sources

Have a client workflow that runs twice and no time to trace it?

See the service: For agenciesLet’s talk

All guides