> ## Documentation Index
> Fetch the complete documentation index at: https://docs.conversion.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Wait Until Condition Met

> Pause a contact in your workflow until they satisfy a specific condition.

The Wait Until Condition Met node holds a contact in place until they meet a condition you define. Unlike time-based delays, progression depends entirely on the condition being fulfilled — there is no fixed duration.

This node is useful for workflows where you need to gate progression on a specific state change, such as waiting for a trial to end, a contact to join an audience, or an email to be opened.

## Configuration

### Condition types

You can define conditions using three categories:

**Fields** — match against profile data stored as contact or company fields.

| Example                  | Description                                              |
| ------------------------ | -------------------------------------------------------- |
| `plan_type = enterprise` | Wait until the contact's plan type changes to Enterprise |
| `trial_active = false`   | Wait until the contact's trial is no longer active       |
| `lead_score > 80`        | Wait until the contact's lead score exceeds 80           |

**Engagement** — match against actions a contact has or hasn't taken with your emails.

| Example                        | Description                                                    |
| ------------------------------ | -------------------------------------------------------------- |
| Was sent a message             | Wait until a specific email has been delivered to the contact  |
| Opened a message               | Wait until the contact opens a specific email                  |
| Clicked a message              | Wait until the contact clicks a link in a specific email       |
| Did not engage with a campaign | Wait until the contact has not engaged within a defined window |

**Audience** — match against whether a contact is or isn't a member of a specific audience.

| Example               | Description                                                      |
| --------------------- | ---------------------------------------------------------------- |
| In "Active Customers" | Wait until the contact is added to the Active Customers audience |
| Not in "Churned"      | Wait until the contact is removed from the Churned audience      |

### Combining conditions

You can add multiple condition groups joined by logic operators:

* **AND** — all conditions must be true for the contact to proceed
* **OR** — the contact proceeds as soon as any one condition becomes true

### Timeout

You can optionally configure a **timeout** to cap how long a contact will wait at this node. When a timeout is set, the node splits into two branches:

* **Condition met branch** — the contact proceeds down this branch as soon as the condition becomes true, just like a node with no timeout.
* **Timeout branch** — if the timeout elapses (while the workflow is active) before the condition is met, the contact exits down this branch instead.

Configure the timeout by specifying a duration (minutes, hours, days, or weeks). The countdown starts when the contact enters the node and only runs while the workflow is active — time spent while the workflow is [paused](/product-docs/workflows/pausing-and-resuming) does not count toward the timeout.

<Note>
  Once a timeout is configured and nodes are added to the timeout branch, the timeout cannot be removed. To remove the timeout, you must first delete every node attached to the timeout branch.
</Note>

## Behavior

* **Immediate skip.** If a contact already meets the condition when they enter the node, they skip the wait entirely and proceed down the condition met branch.
* **Indefinite wait (no timeout).** If no timeout is configured and the contact does not meet the condition, they remain paused at this node until they do. Contacts can wait indefinitely.
* **Bounded wait (with timeout).** If a timeout is configured, contacts only wait up to the timeout duration. If the condition becomes true first, they take the condition met branch; otherwise they take the timeout branch when the timer elapses.
* **Real-time evaluation.** The condition is checked whenever the relevant data changes on the contact record. The contact proceeds as soon as the condition becomes true.
* **Paused workflows.** If the workflow is paused while a contact is inside a Wait Until Condition Met node, the condition is not re-evaluated and the timeout countdown is suspended until the workflow is resumed.

<Warning>
  Be cautious when using only negative conditions (e.g., "not in audience X") without a timeout. If the contact never joins that audience, they will never leave the Wait Until Condition Met node. Consider adding a [timeout](#timeout), combining negative conditions with a parallel [Time Delay](/product-docs/workflows/nodes/time-delay) path, or using a [True/False Branch](/product-docs/workflows/nodes/true-false-branch) to check the condition at a specific point in time instead.
</Warning>

## Comparison with other delay nodes

| Node                                                   | Waits for                      | Duration                                     |
| ------------------------------------------------------ | ------------------------------ | -------------------------------------------- |
| **Wait Until Condition Met**                           | A condition to become true     | Indefinite, or up to an optional timeout     |
| [Wait For](/product-docs/workflows/nodes/wait-for)     | A specific day and time        | Until the next matching day/time window      |
| [Time Delay](/product-docs/workflows/nodes/time-delay) | A fixed amount of time to pass | Exact duration (minutes, hours, days, weeks) |

## Use cases

* **Wait until trial ends** — hold contacts at a step until `trial_active = false`, then send an upgrade offer
* **Wait until audience membership** — pause until the contact joins the "Active Customers" audience before starting a retention sequence
* **Wait until email engagement** — hold until a contact opens or clicks a previous email before sending a follow-up
* **Wait until data is enriched** — pause until a key field (like `industry` or `company_size`) is populated by an external sync
