Loop (Iterate Contacts)
The Loop node goes through contacts in your table one by one, running the downstream flow for each contact. This is essential for schedule-triggered flows that need to process multiple people.

How It Works
- The node loads contacts from your table.
- Optionally filters them based on conditions you set.
- For each matching contact, it runs the rest of the flow with that contact as the "current contact."
- All of that contact's fields become available as
{{fieldName}}variables.
Configuration
Filter (Optional)
Only process contacts that match a condition. You set a field, an operator, and a value.
Example: Only loop through contacts where status equals active.
Available Operators
| Operator | Description |
|---|---|
equals | Exact match |
not_equals | Does not match |
contains | Field contains the value |
not_contains | Field does not contain the value |
starts_with | Field starts with the value |
ends_with | Field ends with the value |
greater_than | Numeric or date comparison |
less_than | Numeric or date comparison |
not_empty | Field has a value |
is_empty | Field is blank |
regex_match | Matches a regular expression |
in_list | Field value is in a comma-separated list |
between | Value falls between two bounds |
is_true | Boolean field is true |
is_false | Boolean field is false |
Typical Placement
The Loop node is usually placed right after a Trigger node. A common pattern looks like this:
- Schedule Trigger (fires every morning at 9am)
- Loop (iterate through contacts where
follow_up_dueequals today's date) - Get Chat Messages (load recent conversation)
- AI Generate Reply (write a follow-up message)
- Send Message (deliver it)

Tips
- Without a filter, the loop processes every contact in the table. Use filters to avoid sending messages to people who don't need them.
- Each iteration is independent. If one contact's flow fails, the loop continues with the next contact.
- Inside the loop, you can use any contact field as a variable. If your table has columns like
name,phone, andstatus, you can use{{name}},{{phone}}, and{{status}}in downstream nodes.