Pause the Flow with “Wait for Response”

“Wait for Response” is the main tool for collecting input from contacts inside a Messaging flow. It lets you validate replies with response rules, route contacts into categories, and optionally handle cases where no one responds. Used well, it keeps your flow clean, your data reliable, and your contacts guided.

Collect answers reliably (and keep routing clean)

Use this checklist to set up a solid Wait for Response step.

  1. Add a “Wait for Response” step after a question
  2. Set a response rule (or collect open-ended input)
  3. Name your result so you can reuse it
  4. Save the response to the contact record (optional but common)
  5. Continue when there is no response (timeouts)
  6. Avoid endless loops (limit retries)

Done—your flow can now pause for input, validate it, and continue safely.

Step-by-Step Process

1
Add a “Wait for Response” step after a question
  1. In the flow editor, create a Send Message node that asks your question.
  2. From the exit of that node, add a Wait for Response split action.
  3. Open the Wait for Response configuration panel.

[CAPTURE: Flow editor showing a Send Message node connected to a Wait for Response node.]

💡
Tip: Always keep the question and its Wait for Response node close together on the canvas so the logic is easy to follow.

2
Set a response rule (or collect open-ended input)

You can validate input by applying response rules to the operand (typically the incoming message @input.text).

  1. In the Wait for Response node, choose the response rule type you need, for example:
    1. Has a date (birthdate)
    2. Has an email
    3. Has a number between
    4. Has only the phrase
  2. Define the accepted values (when required).
  3. Keep the final category as a catch-all (Other).

[CAPTURE: Wait for Response node setup showing operand, rule type selection, and categories including “Other”.]

If you want to accept any response (name, comment, free text):

  • Leave the response rules empty
  • The node will collect All Responses

[CAPTURE: Wait for Response node with no rules set, showing an “All Responses” category.]

⚙️
Technical Detail: Rules run top-to-bottom. The first matching rule routes the contact and stops evaluation. The last rule should always be the catch-all “Other”.

3
Name your result so you can reuse it
  1. In the Wait for Response node, set the Result name (example: birthdate, full_name, email).
  2. Save the node.

Why it matters:

  • If you don’t name the result, it may default to “Result 1”, “Result 2”, etc. (hard to manage).
  • Naming the result makes it easier to reference later with a variable like @results.birthdate.

[CAPTURE: Wait for Response node showing a “Result name” field filled with a clear name.]

⚠️
Warning: Flow results are great for reporting inside a flow, but they can have size limits (for example, long free text can be truncated). For long-term reuse across the workspace, store the value as a contact field (next step).

4
Save the response to the contact record (optional but common)

If you want the value available outside the flow (future flows, exports, segmentation), save it to a contact field.

  1. After the Wait for Response node, add an Update Contact action.
  2. Choose the contact field you want to update (example: Name, Birthdate, Email).
  3. Set the value using the result variable (example: @results.birthdate).
  4. Save.

[CAPTURE: Update Contact action configured with “Save to field” + “Value = @results.<result_name>”.]

💡
Tip: Use this pattern often: Ask → Wait for Response → Update Contact → Continue. It keeps your flow readable and makes the data reusable.

5
Continue when there is no response (timeouts)

If a contact doesn’t reply, you can decide what should happen after a delay.

  1. In the Wait for Response node, enable the option to continue when there is no response.
  2. Set the timeout duration (example: 5 minutes, 1 hour).
  3. Connect the No response category to one of these options:
    1. A reminder message, then loop back to the same Wait for Response
    2. A “you can continue later” message and exit
    3. A next step (if it makes sense to continue without that data)

[CAPTURE: Wait for Response node showing a timeout duration and a “No response” category connected to a reminder message.]

⚠️
Warning: Timeouts can increase message volume and cost. Use them carefully—especially at scale.

6
Avoid endless loops (limit retries)

If you send reminders and loop back, some contacts may never respond. You can limit retry loops using @node.visit_count.

  1. Add a Split by Expression node before looping.
  2. Use the expression @node.visit_count.
  3. Route contacts depending on how many times they’ve returned:
    1. If visits are below your threshold → send reminder and loop back
    2. If visits exceed the threshold → exit or escalate (e.g., “Contact support”)

[CAPTURE: Split by Expression node configured with operand = @node.visit_count and categories like “< 3” and “>= 3”.]

⚙️
Technical Detail: @node.visit_count tracks how many times a contact has passed through a specific node, which makes it a practical guardrail for retry logic.

Common Issues & Quick Fixes

My contacts keep landing in “Other”

Problem: Valid answers are being treated as invalid.

Fix:

  • Add examples in your question message (format, expected values).
  • Expand your response rules with synonyms/variants.
  • Verify your workspace date format if you’re validating dates.
  • Confirm rule order (most specific at top, catch-all last).
I can’t reuse the answer later in the flow

Problem: You collected a response but can’t reference it.

Fix:

  • Make sure the result is named (example: email, birthdate).
  • Reference it as @results.<result_name>.
  • If you need it across multiple flows, save it as a contact field using Update Contact.
My reminders create an infinite loop

Problem: The flow keeps reminding contacts forever.

Fix:

  • Use @node.visit_count to cap retries (example: maximum 2 or 3 attempts).
  • After the limit, route to:
    • an exit message, or
    • a human escalation path.