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.
How it works
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.
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.
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.
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.
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.
| Item | List price | Source |
|---|---|---|
| n8n Cloud Starter, executions included | 2,500 workflow executions a month, each a full run with unlimited steps; a duplicate run counts as one | n8n, n8n Plans and PricingRead on Sep 30, 2026 |
| Remove Duplicates node, history kept across executions | 10,000 items by default ("History Size"), stored per node or per workflow | n8n Docs, Remove Duplicates nodeRead on Sep 30, 2026 |
| Webhook node, respond immediately | Returns "Workflow got started" at once instead of waiting for the last node | n8n 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
- n8n Docs, Webhook node · Read on Sep 30, 2026
- n8n Docs, Remove Duplicates node · Read on Sep 30, 2026
Have a client workflow that runs twice and no time to trace it?
See the service: For agenciesLet’s talkAll guides
- What should an inbound voice agent answer, and what must it hand to a person?
- What does a website chatbot do for a small business, and when is it worth it?
- How do you connect WhatsApp to an assistant with Meta's Cloud API?
- How do you automate a support inbox without sending a wrong reply?
- n8n, Zapier or Make: which one should a small business choose?
- How do you pull data out of hundreds of PDFs?
- How do you build a report that updates itself when the data changes?
- How does an internal knowledge assistant answer from your documents without making things up?
- How do you automate a content workflow and keep an editor in control?
- How do you build a sourced lead list without buying one?
- What does a small business website need to be found by Google and ChatGPT?
- When does a business need a customer portal instead of email?
- When should a business move a process off spreadsheets into an internal tool?
- My n8n workflow worked, and now it fails with 401 or 403. Why?
- How do I find out when an n8n workflow fails silently?