Enhanced Wait/Resume functionality

The idea is:

  • A new Resume Node that lets you update or cancel a waiting execution by setting its waitTill time
  • An enhancement to the Wait node to let you save an arbitrary Resume Id on the execution so the Resume Node can identify it without having to store a resume webhook url somewhere

My use case:

As I’ve been playing with the Wait Node, I’ve found a number of situations that are challenging to model:

  • Send a reminder an hour before an Event starts. You can do this today with a Wait that pauses execution until a fixed time, but what happens if the event start time is editable? Ideally every time the event is edited, you want to update the execution’s waitTill time, and if the event is canceled, you want to cancel it. You can almost work around this by creating a new execution every time the event is edited, and then checking after they wake up if the start time is still the same – but you’ll still get multiple reminders if the event changed back to its original time. With a Resume Node that allows you to update the waitTill time, you could use any existing Trigger on Event Update to reset the waitTill time to an hour before the new event start time.
  • Pause a workflow until something happens in an external system, without having to write a resumeWebhook url to the other system – for example, create an Asana Task and then pause the workflow until the task is completed (using the Asana Trigger). To do this currently, you need to use a Wait Webhook, then find a way to associate the task with the resumeUrl – but this gets really complex if there’s no good place to store the resume webhook url in the external service.

I think it would be beneficial to add this because:

The Wait Node is really powerful, but limiting it to a Webhook means you have to store that Webhook URL somewhere, and you can’t easily use all the other Triggers to unpause. Having a Resume Node would make the Wait system a lot more powerful, and allow you to use any of the hundreds of Triggers to Resume. And letting that Resume Node update an existing wait allows a whole set of time based delays that need to get updated when something upstream changes.

Any resources to support this?

Here’s a PoC branch. I’m very new to N8N, so this is really just a set of hacks to illustrate the idea and see if there’s any interest in this functionality or feedback on the design.

Are you willing to work on this?

Yep, though would likely need some guidance from a maintainer since it touches a lot of core systems…

Sample workflow

Send a Slack message an hour before a Google Calendar event, updating the wake time when the event is updated.