Wait Timeout Card
Add a reply deadline to an input-receiving card with optional retries and a timeout escalation path
The Wait Timeout card adds a reply deadline to the input card before it (Question, Buttons, AI Classification, etc.). Without it, an input card pauses the run forever. With it, the run takes a different path after a wait you set, and can nudge or re-send the prompt first. It answers "what happens if the contact doesn't reply?"

This card is available on Pro and Enterprise plans. Lower plans see it in the card panel with an upgrade badge.
Where It Lives
- Logic category in the card palette, next to Sub-flow.
- Hourglass icon.
- Immediately after an input-receiving card. It cannot be the first card in a flow and cannot follow a non-input card.
Configure the Card
Configuration is split between the canvas card body and the settings panel on the right. The canvas card body is the main edit surface. The settings panel carries only the timing fields.
Timing

| Setting | Description |
|---|---|
| Reply deadline | Preset dropdown: 1 min / 5 min / 15 min / 1 hour / 1 day / 7 days / Custom. Picking Custom… swaps in a numeric seconds input clamped to 60 s – 30 days. |
| Retries | Integer 0–10. Default 0 (first timeout is final). When > 0, the card re-engages the contact that many extra times before the final timeout fires. |
Retry Behavior
The card body is a Tiptap editor, the same editor Question and Text cards use. What you type is the nudge text sent on each retry tick. Variables like {{contact.first_name}} are interpolated.
| State | Retry tick behavior |
|---|---|
| Editor empty | Re-send the previous card verbatim. |
| Editor filled | Send the nudge text only. |
| Editor filled + "Also re-send the previous card" switch on | Send the nudge text first, then re-send the previous card (so the nudge lands above the re-sent prompt in the chat scroll). |
The "Also re-send the previous card" switch appears only when retries > 0 and the nudge editor has content.
Stats Footer
A footer on the canvas card shows the current configuration.
| Row | Meaning |
|---|---|
| Deadline | Humanised duration: 1m, 10m, 1h, 1d, 30d. |
| Total sends | Shown only when retries > 0. Reads as 1 + retries (initial send + retry ticks). |
| On retry | What fires per retry tick: Re-send card, Nudge only, or Nudge + re-send card. |
When the predecessor uses per-input branching (Buttons, AI Classification, WA List, AI Agent, etc.), an italic line replaces the config rows: "Reply handled by the previous card's branches". It reminds you that the reply-branch handle is unreachable for that predecessor, see Per-Predecessor Behavior.
Default Values
A new card starts with these values. The default reply deadline is 10 minutes. Pick another preset for shorter or longer.
- Reply deadline: 10 minutes.
- Retries: 0 (first timeout is final).
- Nudge text: empty (retries re-send the previous card verbatim).
- Also re-send the previous card: off (only relevant when nudge text is set).
Connections
The card has two output handles:
- Reply branch (right edge of the card body). Taken when the contact responds in time. Only meaningful for Question-style predecessors that have no per-input routing of their own.
- On timeout (red footer block under the card). Taken once all retries are used with no reply. Connect it to what should happen when the contact goes silent: an Assign Operator card, a "we'll try later" Text card, an end-of-flow, etc.
┌────────────────────┐ ┌────────────────────┐ ┌──────────────┐
│ Question card │ ───▶ │ Wait Timeout │ ───▶ │ Text card │ (reply branch)
│ "What's your │ │ 10 min × 0 retry │ │ "Thanks!" │
│ name?" │ └────────────────────┘ └──────────────┘
└────────────────────┘ │
└─ On timeout ─▶ ┌──────────────┐
│ Assign │
│ Operator │
└──────────────┘Per-Predecessor Behavior
Input cards differ in whether the reply branch is reachable and whether retries are allowed.
| Predecessor | Reply branch | Timeout branch | Retries allowed |
|---|---|---|---|
| Question | ✓ | ✓ | ✓ |
| Buttons (and media variants) | - (unreachable) | ✓ | ✓ |
| AI Classification | - (unreachable) | ✓ | ✓ |
| AI Agent | - (unreachable) | ✓ | - |
| WA List Message | - (unreachable) | ✓ | ✓ |
| WA Template (with quick-reply buttons) | ✓ (via template) | ✓ | ✓ |
| WA Catalog / Product / Products | - (unreachable) | ✓ | - |
Why some reply branches are unreachable. Buttons, AI Classification and WA List have their own per-input branches. A click or a matched class routes the reply through that branch directly. The reply handle is used only when the predecessor has a single "got a reply" path (Question), so for the rest only the timeout branch matters.
Why retries are blocked on some cards.
- AI Agent. It has its own multi-turn dialogue loop, and re-sending its prompt would conflict with its dynamic re-prompting. The deadline still works, but it resets each agent turn instead of counting down to a re-send.
- WA Catalog / Product / Products. Re-sending them risks WhatsApp policy issues and looks spammy. The card's own interaction branch handles engagement, and the timeout handles silence.
When retries are disallowed for the predecessor, the Retries input locks to 0 in the settings panel.
Examples
Question With a Deadline
Give the contact 10 minutes to answer. If they reply, continue. If they don't, end the run.
Question - "What's your name?"
│
▼
Wait Timeout - 10 min × 0 retries
│
├─ reply ───▶ Text - "Thanks!"
│
└─ on timeout ──▶ (end)Question With Retries and Escalation
Ask the contact. If they don't answer in 10 minutes, ask again, up to 2 retries. If they still don't answer after 3 total prompts, send a "we'll try later" message.
Question - "What's your name?"
│
▼
Wait Timeout - 10 min × 2 retries
│
├─ reply ───▶ Text - "Thanks!"
│
└─ on timeout ──▶ Text - "We'll try again later."| t (min) | Event |
|---|---|
| 0 | Question sent |
| 10 | First retry - Question re-sent |
| 20 | Second retry - Question re-sent |
| 30 | Final timeout - "We'll try again later." |
If the contact replies at any point, the deadline is cleared and the reply branch fires.
Buttons With Timeout Escalation
Buttons route their own clicks. Use Wait Timeout only for the silence path.
Buttons - "Are you still interested?" [Yes] [No]
│
├─ Yes click ──▶ Text - "Great, here's the deal."
├─ No click ──▶ Text - "No worries, talk soon."
│
▼ (default "next" handle on the Buttons card)
Wait Timeout - 5 min × 0 retries
│
└─ on timeout ──▶ Assign Operator - escalateThe reply branch is unreachable here because clicks route through the per-button branches first. Only the timeout branch fires, when the contact ignores the buttons entirely.
Re-Engagement Nudge
Send a question, wait 10 minutes, then send a friendly nudge. Allow up to 2 nudges. The final timeout escalates.
- Nudge editor:
Still there? 👋 - Retries:
2 - Also re-send the previous card: off
| t (min) | Message sent |
|---|---|
| 0 | "What's your name?" |
| 10 | "Still there? 👋" |
| 20 | "Still there? 👋" |
| 30 | Final-timeout branch fires |
If you turn on Also re-send the previous card, each retry sends the nudge first, then the original prompt. Use this when the contact may have lost context.
End-of-Flow Wait
A Wait Timeout with no on-timeout connection ends the run silently when the deadline fires. Use it to "save whatever they typed within 24h, then close the conversation."
Validation
The card shows these errors through a red warning icon in the title bar. Hover for the full list.
| Trigger | Message |
|---|---|
| Reply deadline is blank or 0 | Set a reply deadline. |
| Reply deadline < 60 seconds | Wait must be at least 60 seconds. |
| Reply deadline > 30 days | Wait can't exceed 30 days. |
| Retries is negative or non-integer | Retries must be a whole number ≥ 0. |
| Retries > 10 | Retries can't exceed 10. |
| Retries > 0 with a disallowed predecessor | Retries aren't allowed for this predecessor - re-blasting its payload isn't supported. |
| Predecessor is another Wait Timeout | Two Wait Timeout cards can't follow each other. |
| Predecessor isn't input-receiving | Wait Timeout must follow an input-receiving card (Question, Buttons, AI Classification, etc.). |
When a Wait Timeout can take longer than the flow's execution timeout (the deadline times one plus the retries), Publish is refused with Flow cannot be published due to validation errors and a line naming the card. Raise the timeout in Flow Settings or shorten the wait.
A Wait Timeout with no predecessor does not error. The editor treats it as in-progress wiring so you can place the card before connecting it.
Edge Warnings
Some connections save but the runtime never traverses them. The editor draws these as dashed red edges with a red-bordered trash button at the midpoint and a tooltip that explains why. Click the trash to delete the edge.
| Pattern | Why it's dead |
|---|---|
| Wait Timeout's reply branch when predecessor uses per-input branching | The button click / class / row routes the reply via its own branches; the Wait Timeout's reply path is bypassed. |
| Per-input branching card's default next handle pointing anywhere except a Wait Timeout | The card's default next path is only consumed by a Wait Timeout - pointed elsewhere it's dropped at runtime. |
| A specific button / row / branch handle terminating on a Wait Timeout | The wait deadlines the preceding card's reply, not the destination of a specific click. Connect the source card itself instead. |
The editor re-checks every time the graph changes, so fixing the wiring (for example, switching the predecessor to a Question card) clears the warning.
Strict Mode
When the parent flow has Strict Mode on and the contact sends the wrong type of input (for example a text reply to a Buttons card), the card sends the strict-mode error message and the wait stays armed. The deadline keeps ticking and does not use up a retry. Only valid input counts as a reply: a button click, a list selection, or a properly classified text.
In non-strict mode (the default), any inbound message cancels the wait.
Republishing
When you republish the parent flow, all active Wait Timeouts on prior versions of that flow are invalidated. Pending runs that were waiting end naturally, so no message arrives from a flow version that no longer exists. This matches how scheduled triggers behave on republish: the published version is the single source of truth.
Operations Cost
A Wait Timeout costs 2 operations, charged once when the wait is first armed. Retries, nudges and the final timeout add no further charge by themselves, so the cost is the same whether the contact replies or not. Cards on the timeout branch cost what they normally cost.
Limits
| Limit | Value |
|---|---|
| Minimum reply deadline | 60 seconds |
| Maximum reply deadline | 30 days (2 592 000 s) |
| Maximum retries | 10 |
| Late-fire grace window | 5 minutes (worker downtime / deploy) |
| Maximum total wait | Bounded by the parent flow's execute timeout - deadline × (1 + retries) must fit within it |
| Per-org inflight cap | 10 000 active waits (soft limit - re-arms exempt) |
Common Use Cases
- Re-engagement loops. Question → Wait Timeout (10 min × 2 retries with nudge) → Assign Operator. Catches contacts who walked away mid-flow.
- Time-bounded support. Buttons → Wait Timeout (5 min × 0 retries) → Assign Operator. If the contact doesn't pick a self-serve option, escalate to a human fast.
- Survey deadlines. Question → Wait Timeout (24h × 0 retries) → end. Capture answers within a day, otherwise close the conversation.
- Multi-step booking. Chain several Question + Wait Timeout pairs to walk a contact through a multi-step form with per-step deadlines.
- AI Agent guard. AI Agent → Wait Timeout (15 min) → Text ("session ended"). If the contact stops replying mid-conversation, exit the agent gracefully.
Related
- Wait - the sibling card for static pauses (5 s - 30 min) between any two cards. It paces your own messages instead of deadlining a reply.
- Question, Button, AI Classification, WA List - the input-receiving predecessors most often paired with Wait Timeout.
- Assign Operator - typical timeout escalation target.
- Sub-flow - runtime pauses tied to a child flow's lifetime instead of a clock.