Skip to main content
After adding a Delay step to a workflow, it pauses workflow execution for a specified duration or until a scheduled time, then resumes execution with the next step. You can add a Delay step anywhere in a workflow, before or after any other step to control when subsequent steps run. This page focuses on how to configure the Delay step for your use case.
To learn when to use Delay step in a workflow, refer to the Delay step overview.

Delivery behavior and scheduling

A Delay step can line up with a subscriber’s delivery schedule. Turn on Extend to subscriber’s schedule on the step when the workflow should wait for the next open window. With the toggle off, email, SMS, push, and chat steps that become ready outside the window are skipped. Delivery uses the subscriber’s timezone when that attribute is set. Otherwise Novu uses UTC.
Changing the step content after triggering the workflow with delay step will affect the existing pending delayed notification content.

Adding a delay step

You can add a delay step anywhere in a workflow, before or after any other step. To add a delay before the email step, place the Delay step immediately above Email. When the workflow reaches the delay step, execution pauses for the configured duration and then resumes with the next step.

Delay types

Delay types are used to define how long the workflow execution should be delayed before proceeding. These delay types are:

Fixed delay

A fixed delay pauses workflow execution for a static duration. Use this when the delay length is known in advance and does not change. You can specify fixed delays in seconds, minutes, hours, days, weeks, or months.

Scheduled delay

A scheduled delay pauses workflow execution until a specific date and time, based on the subscriber’s time zone. You can configure scheduled delays to resume execution:
  • Minute: Resume at a specific minute.
  • Hour: Resume at a specific hour and minute.
  • Day: Resume at a specific time of day.
  • Week: Resume on specific days of the week at a given time.
  • Month: Resume on specific days of the month at a given time.
In the example above, the scheduled delay pauses workflow execution until the current day at either 10:00 AM or 11:00 AM, at 23, 24, or 25 minutes past the hour, based on the subscriber’s time zone.

Dynamic delay

A dynamic delay, also called a variable-based delay, determines the delay duration using a variable from the event payload. This allows the delay to change per workflow execution. The variable can be defined in one of the following formats:
  • ISO-8601 timestamp: Example: 2027-01-01T12:00:00Z. This value should be for future date and time.
  • Duration object: Example: { "amount": 30, "unit": "minutes" }. This value should be for future date and time. Here amount is the number of units to delay and unit is the time unit. unit can be seconds, minutes, hours, days, weeks, or months.
Dynamic delay example In this example, the delayTill variable is used to pause the workflow until the future date and time specified in the delayTill variable.
If a dynamic delay using an ISO date is added as the first step in a workflow, it effectively schedules the workflow execution to start at the specified time.

Extend to subscriber’s schedule

Extend to subscriber’s schedule is off by default. Turn it on when steps after the delay should wait for the subscriber’s delivery schedule instead of running as soon as the delay ends. The schedule is a weekly set of hours from the Inbox. It has no holiday calendar. A day the subscriber turns off, such as Saturday or Sunday, is skipped. A day they leave on is a delivery day, including public holidays. Novu checks the schedule when the delay finishes. Times below are in the subscriber’s time zone (UTC when no timezone is set):
  • The delay finishes inside an open window. The workflow continues immediately. The toggle adds no extra wait.
  • The delay finishes outside the window, and the toggle is on. Novu holds the workflow until the start of the next enabled window, then continues.
  • The delay finishes outside the window, and the toggle is off. The delay ends on time. Email, SMS, push, and chat steps after it are skipped. Novu does not retry them when the window opens. In-app steps, and every step in a critical workflow, are still delivered.
Steps placed before the Delay step already ran. Steps placed after it, including in-app, stay paused until the delay finishes, including the wait for the next window. An in-app step is only exempt from the schedule once the workflow reaches it. Critical workflows ignore the schedule. The toggle does not hold them.

Examples

Schedule: Monday–Friday, 9:00 AM–5:00 PM. Delay: 1 hour. Toggle: on. Schedule: Monday only, 9:00 AM–10:00 AM. The delay finishes Monday at 10:01 AM. Toggle: on. Novu resumes the following Monday at 9:00 AM. That is one wait, straight to the next open slot. The same Monday-only schedule with the toggle off skips the following email, SMS, push, or chat step at 10:01 AM.

How long Novu waits

Novu waits once, until the start of the next enabled window. It does not step through each closed day. A delay that ends Friday at 6:00 PM resumes Monday at 9:00 AM. A delay that ends Monday at 10:01 AM, when the only window is Monday 9:00 AM–10:00 AM, resumes the following Monday at 9:00 AM. The duration you configure on the Delay step follows your plan limit: 1 day on Free, 7 days on Pro, and 30 days on Team. Enterprise limits are custom. The wait until the next window is separate from that duration, on every plan. The Friday evening example above still resumes Monday morning on the Free plan. If the schedule is on and no day has an open window, there is no later slot to wait for. The delay ends, and email, SMS, push, and chat steps are skipped.

If the subscriber changes the schedule while waiting

Novu picks the next open slot from the schedule at the moment the delay finishes, and keeps that time. A later edit in the Inbox does not move a step that is already waiting. When that time arrives, Novu reads the schedule again:
  • That moment is still inside the schedule. The workflow continues then. An earlier window the subscriber added in the meantime is not used. The step does not send early.
  • That moment is now outside the schedule. Novu waits again, until the next open slot in the updated schedule. This includes the first wait, and Novu will do it at most 3 times. If the step wakes after the third wait and the time is still outside the schedule, the delay ends. Email, SMS, push, and chat steps that follow are skipped. In-app steps are still delivered.
  • The subscriber turns the schedule off. The step still waits until the time already chosen. When it wakes, the schedule is off, so the workflow continues and sends.
A single edit stays inside that limit. The third wait is reached only when the subscriber moves the window before each wake-up, so every chosen time is still outside the schedule. For example, a delay ends Friday at 6:00 PM and is waiting for Monday at 9:00 AM. On Saturday the subscriber adds Saturday 10:00 AM–12:00 PM. The notification stays scheduled for Monday at 9:00 AM. Monday is still inside the weekday window, so it sends then. If they turn Monday off and leave only Tuesday 9:00 AM–10:00 AM, the step wakes Monday at 9:00 AM, sees that Monday is closed, and waits until Tuesday at 9:00 AM.

FAQs

No, workflow execution will stop immediately if the delay step fails due to an error. Common errors are:
  • Invalid ISO date format.
  • Invalid duration object format.
  • Past datetime is specified.
Yes. The plan limit applies to the duration you set on the Delay step. The wait until the next open window is separate. A short delay that ends after hours on Friday can still resume Monday morning on the Free plan, where the configured delay maximum is 1 day.
A weekend day is skipped when the subscriber turns that day off. There is no holiday calendar. If Monday is enabled, Novu delivers on Monday even when Monday is a public holiday. Novu waits once for the next enabled window, so Friday evening goes directly to Monday morning.