I want to create an automation where I can wait for a client to reply to an email, and if they don’t reply for X days then we follow-up. My question is will the workflow time out and is there a more effective way to do this so that the workflows don’t stack up and crash the server?
@Isaac_Cheang it wont time out or stack up, thats exactly what the Wait node is for. any wait over ~65 seconds gets offloaded to the database, so a wait of X days uses basically no resources while its parked, it just sits as a row and resumes when due, nothing stays running in memory. for your follow-up set the Wait to resume on a webhook with a max wait of X days, so a reply resumes it early and otherwise the X-day limit fires the follow-up. only at really high volume would i swap to a state table plus a daily schedule check, but for normal volume the wait node handles it cleanly.
Hello, @Isaac_Cheang.
The old limit of 5 minutes on n8n cloud is no longer in effect, and there is no strict limit in place. However, for self-hosted applications, you can adjust the timeout by setting it to 3600 with the following code: EXECUTIONS_TIMEOUT=3600. Configure workflow timeout settings | n8n DocsConfigure workflow timeout settings | n8n Docs
Additionally, the wait node is not considered a concurrency because it is merely waiting, not executing anything. Additionally, the wait node is not considered a concurrency because it is merely waiting, not executing anything.
Thanks @achamm super helpful! Just wondering, what would be considered normal volume for the wait node to work? And would the webhook be responding immediately or after the email node? Thanks again!
Normal volume is mostly about the resume burst, not parked waits. Hundreds or a few thousand parked waits are usually fine because they are database rows; the risky case is many records waking at the same minute and hitting Gmail/SMTP/API limits together. If that can happen, spread the due times or run a scheduled batch over a pending_reply table.
For the webhook path, keep it as the reply signal: mark the lead as replied and return fast. The follow-up email belongs on the timeout/due branch, not after the reply webhook, so the person replying is not waiting on an email node.
Hi @kjooleng thanks for this, I’ve set up something similar but I’ve mergered workflow 2 and 3 together so that it just checks for emails every 24 hours and if they haven’t replied yet and the date has been more than 2 days then it will follow up. Is there a reason we need the database?
If your n8n instance crashes or the server restarts, there is a risk that pending “Wait” executions may not resume correctly depending on your configuration.
Also, instead of making the workflow wait, you should make the workflow check. This is the industry standard for CRM automations. You move the “waiting” logic out of the workflow and into a database (Airtable, Google Sheets, PostgreSQL, or MongoDB). This will conserve server resources at the same time