Wait for signal
Holds the flow until a person lets it continue, or until the time you allow runs out.
Settings
| Setting | What it is |
|---|---|
| Wait at most | A number, or a {{ }} expression that resolves to one. |
| Unit | From 1 minute to 31 days. A waiting run costs nothing while it waits and keeps its own plan; a connection or secret deleted meanwhile fails the next node cleanly. |
| If nobody answers in time | Every wait ends: either somebody resumes the run, or the deadline does. |
| Let a URL resume this wait | Lets an outside system end this wait by posting to a URL — put {{ execution.resumeUrl }} in a node BEFORE this one and send it where it is needed. The call resumes the run on the resumed port and its JSON body becomes the payload. Anyone holding the URL can resume the run, so keep it inside your own systems. One wait per flow may have it, and never a wait inside a loop. |
Technical details
| Key | Value |
|---|---|
deadline.amount | number, by default 7 |
deadline.unit | "minutes" or "hours" or "days", by default "days" |
onTimeout | "continue" or "fail", by default "continue" |
resumeUrlEnabled | true/false, by default false |
Output
| Field | Type |
|---|---|
resumedBy | string |
payload | any |
waitedMs | number |
resumedBy | string |
payloadPayload (empty after a timeout) | any |
waitedMs | number |
Sample output, and the expression for each field
- payload
- approvedtrue
- resumedBy"signal"
- waitedMs4200
Errors
When a step of this node stops a run, the run page shows a code. Look it up:
Example step
The step as a flow file holds it. Replace each value in <…>.
{
"config": {
"deadline": {
"amount": 7,
"unit": "days"
},
"onTimeout": "continue",
"resumeUrlEnabled": false
},
"label": "Wait for signal",
"type": "core.waitFor",
"version": 1
}