Conditions and operators reference
Conditions narrow what an automation reacts to. Without them, every rule fires on every event of its trigger type. With them, you can scope a rule to “only emails from VIP contacts that mention ‘refund’” or “only Done conversations untouched for 14 days.”
Conditions are organized into nested groups joined by AND or OR. Each leaf in a group compares one field against a value using one operator.
Operators
- equals — Exact match — Any field
- not equals — Negation of equals — Any field
- contains — Substring match (case-insensitive) — Text fields
- not contains — Negation of contains — Text fields
- starts with — Prefix match — Text fields
- ends with — Suffix match — Text fields
- is empty — Field has no value — Any field
- is not empty — Field has a value — Any field
- greater than — Numeric or date comparison — Numbers, dates
- less than — Numeric or date comparison — Numbers, dates
Field categories
The fields available depend on which trigger you picked, but most rules can read from these:
Conversation fields
status, channel, assigned agent, assigned team, language, customer level, subject, tags, created at, last message at, reached a queue, inbox routes to.
Reached a queue is a Yes/No field available on conversation-scoped automation rules. Yes means the call reached a queue during the relevant call context. No is the value to use with Call abandoned in IVR rules.
When you use a value-bearing operator such as equals or not equals with Reached a queue, select either Yes or No. Blank values should not be saved or treated as No.
Inbox routes to is mainly useful on Conversation created rules. It lets you tell whether an email inbox routes to a human Team or an Agent Stack before the AI has engaged. The available values are Team and Agent Stack. Non-email inboxes, or inboxes whose route cannot be resolved, evaluate as empty or unresolved, so a condition such as inbox routes to is not Agent Stack can still catch them.
Contact fields
name, email, phone, customer level, country, plus every custom field defined for contacts.
Message fields
body (the message text), direction (inbound/outbound), channel.
Message fields are available when the trigger event includes a message. Message received carries the current message. Conversation created can also expose the conversation’s first inbound customer message where message.* fields are allowed.
Example: a conversation_created rule with message.content contains "urgent" matches a conversation created from an inbound email whose original message includes “urgent”.
Case fields (only on case-typed triggers)
stage, priority, assigned agent, assigned team, tags, linked conversation count.
Event-specific fields
Some triggers expose extra fields specific to the event:
- Status changed →
previous status,new status - Tag added →
tag(the tag that was added) - Customer level changed →
previous level,new level - Agent assigned →
previous agent,new agent
AND / OR grouping
A condition group joined by AND matches when every leaf inside it is true. A group joined by OR matches when at least one leaf is true. Groups can be nested.
Example: (channel is email AND customer level is VIP) OR (tags contain “urgent”). This fires when either an email comes in from a VIP, or any conversation gets the “urgent” tag — regardless of channel.
Conditions vs. branches
A common confusion: conditions on the rule decide whether the rule runs at all. Branches inside the rule then choose which action sequence runs. If you only need one path, use conditions. If the rule needs to do different things in different cases, use one big trigger with multiple branches and put the case-specific filters on each branch.
Custom field gotchas
When matching against a custom field that’s a select or multi-select, the value in the condition is the option’s stored value (machine slug), not its display label. Look it up in Settings → Custom Fields before pasting it into a condition.