Skip to main content

Delay Step

The Delay step waits, then continues. It has exactly one setting.
integer
required
How long to wait, in milliseconds. The editor labels it Delay in milliseconds.
There are no units to choose, no “until” time, and no maximum. A value of 0 or less waits not at all.

Two things it does not do

The delay is not free. The run holds its place in memory for the whole wait — this is a live run sitting still, not a suspended one that gets picked back up later. There is no pause-and-resume machinery behind it. A delay measured in hours or days ties up the run for that entire period and will not survive a service restart.For anything longer than a short pause, start a second flow on a schedule trigger instead, or use a Schedule step to book the follow-up run.
The wait cannot be computed. The Delay step reads its payload before JSONPath resolution, so {"time_ms": "$.CONFIG.data.wait"} never resolves — it fails to decode and errors the step. time_ms must be a literal number written into the step.

What it returns

Nothing. $.my_delay holds no value; a Delay step exists only for its timing. Steps after it read from whatever ran before it.

Delay compared with the alternatives

A Delay step cannot be used to build a retry loop. There is no per-step error branch: the first step to fail cancels the run outright, so no Condition after it — and therefore no Delay after that — is ever reached. Retries belong in Advanced Settings, where attempts sets the total number of tries (capped at 5) and backoff_ms sets a constant gap between them.
Editing a flow changes its draft. Publish to make the change take effect.

Next Steps

Schedule Trigger

Start a run at a time, or on a repeat

Checkpoint Step

Wait for a person instead of a clock

HTTP Request

Where retry settings usually matter

Flow Steps Overview

How failures propagate through a run