n8n Wait Node: Pause, Delay, and Schedule Workflow Execution (Free Workflow JSON)
Most n8n workflows rush from node to node without pausing. That's fine until you hit an API rate limit, need a human to approve something, or need to schedule a follow-up for exactly 24 hours later.
The Wait node solves all three. It pauses workflow execution, releases the worker, and resumes later --- on a timer, on a webhook call, or on a form submission. Your server isn't idle while it waits.
What the Wait Node Does
The Wait node suspends execution of the current workflow item and stores its state. The n8n worker is freed immediately (no memory held, no thread parked). When the resume condition is met, n8n restarts execution from the next node.
This makes it perfectly safe for very long waits (hours, days) without consuming resources.
Wait Modes
1. Time Interval
Wait for a fixed duration after the node is reached.
| Setting | Example |
|---|---|
| Amount | 1 |
| Unit |
Seconds, Minutes, Hours, Days
|
Use case: Sleep 1s between API calls to respect rate limits.
2. At Specific Time
Resume at an exact date-time, either hardcoded or from an expression.
DateTime: <{ $json.send_at }>
Use case: Send a follow-up email at exactly 9am on the next business day.
3. On Webhook Call (Human-in-the-loop)
Wait indefinitely until an external system calls a URL n8n generates automatically.
Webhook URL: https://<your-n8n>/webhook-waiting/<uuid>
Use case: Send an approval email with an "Approve" link. When the manager clicks it, the workflow resumes.
4. On Form Submission
Same as webhook but n8n renders a hosted form --- no external form tool needed.
Use case: Collect additional information mid-workflow (e.g., ask the user for a reason before processing).
Pattern 1: Rate-Limit-Safe API Poller
Problem: You need to call an API for 50 items but the API allows 10/min.
Solution: Split In Batches (batchSize=1) + Wait 6s between calls.
[Webhook] -> [Split In Batches batchSize=1] -> [HTTP Request] -> [Wait 6s] -> (loop back)
The Wait node is placed after the HTTP Request and before the Split In Batches loop-back connection. This guarantees 6s between each call regardless of how fast the request resolves.
Pattern 2: Human Approval Gate
The most powerful Wait pattern. Include the webhook resume URL in an approval email.
[Trigger] -> [Wait: On Webhook] -> [Set resumeURL=$webhookUrl] -> [Send Email with "Approve" link]
-> (on click: resume with {"approved":true}) -> [IF approved] -> [Process]
Key: use {{ $execution.resumeUrl }} in the Wait node expression to get the generated webhook URL.
Pattern 3: Scheduled Follow-Up
Send a welcome email immediately, wait 3 days, then send an onboarding checkin.
[New Signup] -> [Send Welcome Email] -> [Wait 3 days] -> [Send Check-in Email]
No cron job needed. No separate scheduler. The execution simply resumes after 72 hours.
Pattern 4: Polling Loop (Repeat Until Done)
Check a job status every 30s until it completes.
[Trigger] -> [HTTP GET job/status] -> [IF status==="done"] -> [Process Result]
_-> [Wait 30s] -> (loop back)
Connect the Wait node's output back to the HTTP Request node. N8n supports backward connections for this pattern.
Gotchas Table
| Gotcha | Detail |
|---|---|
| Execution timeout vs wait duration | The Wait node suspends execution (doesn't count toward the timeout). But if your n!n execution timeout is lower than the wait duration, the workflow will be killed before resuming. |
| Webhook URL expires | The resume webhook URL is only active while the execution is paused. Calling it after a workflow completes or fails returns 404. |
| Cloud vs self-hosted | n8n Cloud has a max wait time of 30 days on higher plans. Self-hosted no hard limit but your DB must retain execution state. |
| Resume URL not accessible | If your n8n is behind a firewall/localhost, the resume URL is not reachable from external systems. Use a tunnel (ngrok, cloudflared) or n8n Cloud. |
| Not for cron-style recurrence | The Wait node does not loop on its own. For periodic recurrence, use the Schedule Trigger instead. |
| Wait node in item loops | Each item in a batch waits independently. If you have 100 items, all 100 waits are active simultaneously. Use Split In Batches (batchSize=1) to serialize. |
Free Workflow JSON: Rate-Limit-Safe API Poller
This workflow fetches a list of IDs from a trigger, then queries an API for each one with a 1s delay between calls.
Copy the JSON below and import it into n8n (Menu > Import Workflow):
{
"name": "Rate-Limit-Safe API Poller",
"nodes": [
{
"name": "Webhook Trigger",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [-500, 300],
"parameters": {
"path": "api-poller",
"responseMode": "lastNode"
}
},
{
"name": "Split In Batches",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [-300, 300],
"parameters": {
"batchSize": 1
}
},
{
"name": "Call API",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [-100, 300],
"parameters": {
"method": "GET",
"url": "https://api.example.com/items/{{ $json.id }}",
"responseFormat": "json"
}
},
{
"name": "Wait 1s",
"type": "n8n-nodes-base.wait",
"typeVersion": 1,
"position": [100, 300],
"parameters": {
"resume": "timeInterval",
"amount": 1,
"unit": "seconds"
}
},
{
"name": "Collect Results",
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [300, 300],
"parameters": {}
}
],
"connections": {
"Webhook Trigger": {"main": [[{"node": "Split In Batches", "type": "main", "index": 0}]]},
"Split In Batches": {"main": [[{"node": "Call API", "type": "main", "index": 0}], [{"node": "Collect Results", "type": "main", "index": 0}]]},
"Call API": {"main": [[{"node": "Wait 1s", "type": "main", "index": 0}]]},
"Wait 1s": {"main": [[{"node": "Split In Batches", "type": "main", "index": 0}]]}
}
}
Get the Complete Automation Starter Pack
Want 15 pre-built, documented n8n workflows covering lead capture, Stripe fulfillment, AI enrichment, and more?
Top comments (2)
Which resume mode do you reach for most in production — Time Interval for rate limiting, or Webhook resume for human-approval gates? I keep coming back to the Webhook resume mode whenever I need a manager to sign off before the workflow continues. Curious what real-world patterns others are building with this node.
What's your use case for the Wait node? I've been using it most for human-approval gates before irreversible actions — the webhook resume mode is underrated.