The n8n Wait Node: Add Delays, Pauses & Human Approval to Workflows (2025)

Not every workflow should run start-to-finish in one burst. Sometimes you need to wait — an hour before a follow-up, a day before a reminder, or indefinitely until a human approves. That’s exactly what the n8n Wait node is for, and it’s one of the most underused nodes in the whole platform.

Four ways the Wait node can pause

  • After a time interval — wait 30 seconds, 2 hours, or 7 days.
  • Until a specific date/time — resume Monday at 9am, for example.
  • On a webhook call — pause until an external event hits a resume URL.
  • On a form submission — pause until someone fills an approval form.

How long pauses actually work

For short waits (under ~65 seconds by default) n8n holds the execution in memory. For longer waits, it saves the execution state to the database and resumes later — so the workflow uses no resources while waiting. This means you can safely wait days or weeks without tying anything up.

⚡ Skip the build: Stripe Payment Failed → Escalating Recovery Email + Slack Alert

A timed, escalating dunning sequence that waits between emails and recovers failed payments on autopilot.

Get the template on Gumroad →

Building a human-approval step

This is the Wait node’s killer feature. Set it to Resume: On Webhook Call (or a form). n8n generates a unique resume URL. Send that URL to an approver via Slack or email with Approve and Reject links. The workflow sits paused until they click — then continues down the right path.

1. Generate document
2. Slack message: “Approve? {{ $resumeUrl }}?decision=yes”
3. Wait (resume on webhook)
4. IF decision = yes → send to client
         else       → notify author to revise

Time-delay patterns

Drip sequences

Send email 1, Wait 2 days, send email 2, Wait 3 days, send email 3 — a full nurture flow in a single workflow.

Escalating dunning

Payment fails → wait 1 day → remind → wait 3 days → escalate → wait 5 days → final notice.

Polite delays

Wait a random 1–5 minutes between outreach messages so automated sends look human and dodge rate limits.

Pitfalls

  • Self-hosting & restarts: long waits survive restarts only if executions are saved to a real database (Postgres), not the default SQLite for heavy use.
  • Resume URL security: the URL is a secret — anyone with it can resume the flow. Add a token check if it’s exposed.
  • Timezones: “resume at a date” uses the instance timezone — set it explicitly.

FAQ

Is a waiting execution counted as running? It shows as “waiting,” not active, and consumes no compute.

Wait vs Schedule Trigger? Use Wait to pause within a run; use the Schedule Trigger to start runs on a cadence.


Ready to automate this?

Don’t rebuild it from scratch. Stripe Payment Failed → Escalating Recovery Email + Slack Alert is a production-ready n8n workflow you can import in minutes — credentials in, activate, done.

Ready to automate? Get this template on Gumroad →