Learn
Retries, Duplicate Actions and Failed Runs in AI Automation
A failed run is only safe to retry if you know whether the write already happened. Trace one failed invoice through five cases, compare what Zapier, Make and n8n actually re-run, and check the settings and duplicate guards to set before turning on automatic retries.
Isolate the failure point before you change tools. Use this page when something is blocked and you need likely causes, checks, and recovery paths.
Editorial guide
Guide
Start with the failure symptoms, checks, and root-cause framing before you escalate.
Short answer: a failed run is only safe to retry if you know whether the external write already happened. Most duplicate invoices, double emails and repeated charges come from one of three situations:
- a retry after a write that actually succeeded;
- a full re-run that repeats steps that had already worked;
- a trigger that fired twice.
Before turning on automatic retries, give every write step a way to recognize work it has already done. Examples are an upsert by a stable key, a search before create, or a reference number the destination rejects when it sees it twice. Then learn exactly what each platform re-runs:
- Zapier replays only the errored steps by default. Its "replay entire Zap run" option repeats everything, including the trigger.
- Make keeps failed runs for retry only if you turn on incomplete executions, which are off by default.
- n8n retries individual nodes with Retry On Fail and lets you re-run failed executions from the executions list.
Trace one failed write
Everything in this example is invented. A workflow receives a paid order, creates an invoice in the accounting app, and then emails the invoice to the customer. Here is what can go wrong at the invoice step, and what a retry does in each case.
Case | What actually happened | What the run shows | What a blind retry does | Safe recovery |
|---|---|---|---|---|
| The accounting app rejected the request; no invoice exists | Error on the invoice step | Creates the invoice once | Retry is safe |
| The invoice was created, but the reply timed out | Error on the invoice step ("did not respond in time" or a timeout) | Creates a second invoice | Search for the order reference first, or use an upsert; retry only if nothing is found |
| The invoice exists; the email step failed | Error on the email step | Replaying only the errored step is safe; replaying the whole run creates a second invoice | Replay the failed step only |
| Two runs started for the same order | Two successful runs | (Nothing to retry; the duplicate already happened) | Check for an existing invoice before creating one; find the second trigger source |
| The run failed and the platform kept no copy of the data | A failed run, or nothing | Nothing to retry | Turn on failed-run storage; on Make, add a Retry handler to the first module, because errors there are otherwise not stored; reconcile against the source system |
Case 2 is the dangerous one. A timeout tells you the platform did not get an answer, not that the write failed. Zapier's guidance for "The app did not respond in time" is to replay or rely on autoreplay. That is safe only when the write step can detect an invoice it already created.
What each platform re-runs
Control | Zapier | Make | n8n |
|---|---|---|---|
Retry a failed run by hand | Replay errored steps on every plan; Zapier does not repeat the trigger or the steps that succeeded | Retry an incomplete execution manually, if incomplete executions are on | Retry execution from the executions list, with the currently saved or the original workflow |
Automatic retries | Autoreplay on paid plans, for the whole account (set by an owner or super admin) or per Zap. Up to 5 attempts: 5 min, 30 min, 1 h, 3 h and 6 h, ending about 10 h 35 min after the first error | Automatic retry of incomplete executions for rate-limit, connection and module-timeout errors, and for the Retry error handler. Backoff from 1 minute out to about 7 h 51 min after the original run | Retry On Fail on a node, with Max Tries and Wait Between Tries |
Re-run everything | "Replay entire Zap run" on paid plans repeats every step, including the trigger, as a new run; successful steps use tasks again | Not the default; incomplete executions continue from where the run stopped | Re-running a past execution with its data is possible; test which nodes run again |
Undo partial work | No built-in undo; earlier successful steps stay done | Rollback (the default when no handler is set and incomplete executions are off) reverts only transaction-capable modules such as data stores; an accounting app write stays | No built-in undo; route failures with On Error to a clean-up path |
Keep failed data | Zap history keeps runs for 29 to 69 days, and replays must happen within 60 days of the original trigger | Only if Store incomplete executions is on. If the folder is full, Make either disables the scenario or, if Discard data if storage is full is enabled, discards the failed data, which cannot be recovered | n8n Cloud prunes execution data by plan: Starter keeps up to 2,500 executions for up to 7 days, Pro up to 25,000 for up to 30 days, whichever limit is reached first |
Duplicate triggers | Polling triggers deduplicate by item ID within the same Zap. Instant triggers do not, and two Zaps on the same trigger both run | Design for it: check before writing | Design for it: check before writing |
Alerts | Zap history; with autoreplay on, Zapier sends no error notification email until the final autoreplay attempt fails | Scenario status; for scenarios with an instant trigger, a run that ends in an error deactivates the scenario immediately, while stored incomplete executions or error handlers turn many errors into warnings that do not | An error workflow (Error Trigger) per workflow |
What happens when an action meets a duplicate depends on the destination app, not the platform. Zapier documents four outcomes: the app creates a duplicate record, returns an error, updates the existing record, or ignores the duplicate. Test your destination before relying on any of them.
Settings to check before you trust retries
Zapier
- Decide whether autoreplay should be on account-wide, or only for Zaps whose write steps can detect earlier work. Per-Zap Never replay is available.
- Avoid "replay entire Zap run" for Zaps that create records, send messages or charge cards, unless the first steps can tell they already ran.
- If several Zaps use the same form or webhook, assume each one will run.
Make
- Turn on Store incomplete executions for any scenario that writes to another system, so a failure keeps its data.
- Size the incomplete-executions allowance and check Discard data if storage is full: with it on, a full folder silently discards failed data; with it off, the scenario is disabled until you make room.
- Use Process data in order (formerly Sequential processing) when order matters. New runs then wait until incomplete executions are resolved.
- Know that Rollback does not undo writes to apps like accounting or email.
- For instant-trigger scenarios, have someone watch for deactivation after the first error.
n8n
- Put Retry On Fail only on nodes that are safe to repeat, such as reads and upserts, not on create or send nodes without a check.
- Use On Error: Continue (using error output) to send failures to a clean-up or review path instead of stopping silently.
- Set an error workflow for every production workflow.
- Retry failed executions before execution data is pruned, and keep your own record of anything you may need later.
Make every write recognize work it has already done
Platform settings decide when a step runs again. Only the write step can decide whether running it again is harmful. In order of preference:
- Upsert by a stable key. Update the record if it exists, create it if not. For document and record pipelines, see AI document extraction to sheets or CRM, which uses a compound key.
- Search, then create. Look up the order reference in the destination. Create only if nothing is found, and store the new record's ID.
- A reference the destination rejects twice. Some APIs accept a unique reference or idempotency key and refuse a second request with the same key. Check your destination's API documentation.
- A sent-log for messages. Before sending an email or message, check a log keyed by order and template. Write to the log only after the send succeeds.
What retries cost
Retries are not free. On Zapier, replaying an entire run counts its successful steps as tasks again. On Make, retried modules run again, so check how they count against your credits. On n8n Cloud, check how re-run executions count against your monthly executions. Budget an allowance for failures. For example, if 3% of 2,000 monthly orders fail and each is retried twice, plan for about 120 extra runs. That figure is illustrative. See AI workflow automation pricing explained for how each meter works.
Recovery checklist for a failed write
- Stop automatic retries for the affected workflow if duplicates are possible.
- Check the destination for the record or message, using the business reference, not the platform's run ID.
- If it exists, mark the run resolved and replay only the steps after the write.
- If it does not exist, replay the failed step.
- If several runs fired for one event, keep the first record, cancel or reverse the others in the destination, and find the duplicate trigger.
- Record what happened and change the write step so the same failure cannot create a duplicate next time.
Who should not turn on automatic retries yet
- Workflows that charge cards, issue refunds or send customer messages without a duplicate check on the write step.
- Teams that cannot see the destination. If nobody can search the accounting app or CRM to confirm what happened, every retry is a guess.
- Scenarios where the failed data is not stored. Turn on failed-run storage first, then retries.
For broader platform tradeoffs, see AI workflow automation platforms compared.
Evidence boundary
Official sources
Editorial guidance grounded in official product sources.
- Zapier: Replay Zap runs
- Zapier: What is replay?
- Zapier: How Zapier handles duplicate data in Zap workflows
- Zapier: Error "The app did not respond in-time"
- Zapier Data Privacy Overview
- Make Help Center: Incomplete executions
- Make Help Center: Automatic retry of incomplete executions
- Make Help Center: Overview of error handling
- Make Help Center: Scenario settings
- n8n docs: Work with nodes (node settings)
- n8n docs: View all executions (retry failed workflows)
- n8n docs: Handle errors gracefully
- n8n docs: Manage your Cloud data
FAQ
Common questions
Should I turn on Zapier autoreplay for every Zap?
Only for Zaps whose write steps can recognize work they already did, such as an upsert or a search before create. Autoreplay retries errored steps up to five times over about ten and a half hours. It is set account-wide by an owner or super admin, and each Zap owner can override it with Always replay or Never replay, so check per-Zap overrides as well as the account setting.
Why did my Zap create a record twice when nothing errored?
Usually because two runs started. Zapier deduplicates polling triggers by item ID only within the same Zap. Instant triggers are not deduplicated, and two Zaps listening to the same form or webhook both run. Also check whether the source system sent the event twice.
What does Make do with a failed run if incomplete executions are off?
By default, with no error handler and incomplete executions disabled, Make uses Rollback. That stops the run and reverts only modules that support transactions, such as data stores. The failed data is not kept for a later retry, and writes to apps like accounting or email are not undone.
Does n8n's Retry On Fail repeat the whole workflow?
No. Retry On Fail is a node setting that re-runs that node, with a set number of tries and a wait between them. To re-run a whole failed execution, use Retry execution in the executions list, choosing the currently saved or the original workflow.
How long do I have to retry a failed run?
On Zapier, you must replay within 60 days of the original trigger, and sooner if Zap history has already been deleted (history is kept 29 to 69 days, or 7 to 30 days if an Enterprise admin shortens it). n8n Cloud prunes execution data by plan: Starter keeps up to 2,500 executions for up to 7 days and Pro up to 25,000 for up to 30 days, whichever limit is reached first. Make keeps incomplete executions until they are resolved, within your plan's storage allowance.
Next steps
Open the likely fix paths
Use these next pages to inspect the most relevant product surfaces, docs, or follow-up guides once the likely failure point is clear.