The operator is the second dropdown in a rule: equals, contains, is empty, greater than and so on. It decides whether the rule is true or false, so you need to know whether a field holding "Istanbul" matches the value "istanbul". This article spells out what every operator does and the rules the comparison follows.
What each operator means
Each rule kind shows its own list of operators; the meanings of all of them are below.
equals — Is the value exactly what you typed? The comparison ignores case and accents.
doesn't equal — The opposite of "equals". An empty field makes this operator true, because an empty value is not equal to what you typed.
contains — Does the value contain the text you typed? If you leave the value box empty, the rule is never true.
doesn't contain — The opposite of "contains". With an empty value box the rule is always true.
starts with — Does the value begin with the text you typed? Only available on the Last reply rule. It never matches an empty value.
is empty — Is there nothing in the field? A value made only of spaces also counts as empty.
is filled — Is there something in the field?
greater than / less than — Compares the two values as numbers.
has / doesn't have — Only on the Tag rule. Does the contact carry that tag?
is / is not — Compares against a value picked from a list: Channel, Incoming attachment, Contact's language, Started by, Post.
assigned / unassigned — Only on the Assignment rule.
inside / outside — Only on the Business hours rule.
open / closed — Only on the Messaging window rule.
yes / no / unknown — On the state rules: First contact and Follow state. Follow state has a third value; the details are in Contact conditions.
How text comparison works
The text operators (equals, doesn't equal, contains, doesn't contain, starts with) reduce both sides to one canonical form before comparing. As a result, the following are treated as the same:
Upper and lower case. "ISTANBUL", "Istanbul" and "istanbul" are identical. Case folding follows Turkish rules, so a capital İ becomes i and a capital I becomes ı.
Accented and unaccented letters. ş = s, ç = c, ğ = g, ı = i, ö = o, ü = u. So "çiçek" matches "cicek".
Leading and trailing punctuation and emoji. "price?" and "🔥price" are the same as "price". Punctuation inside a word is kept.
Extra spaces. Repeated spaces collapse into one and the leading and trailing spaces are dropped.
In day-to-day use this means convenience: you never have to worry about whether the customer typed "PRICE" or "price".
💡 The same folding applies to tags. "VIP", "vip" and "vıp" are one single tag; it makes no difference which spelling you use in the rule.
How number comparison works
greater than and less than first try to convert both sides to a number.
Both a dot and a comma are accepted as the decimal separator: "12,5" and "12.5" are the same number.
If either side cannot be converted, the rule is false. "3 pieces" is not a number; "3" is.
An empty field is not a number, so a rule like "field > 0" is false on an empty field.
A concrete example: a cosmetics shop sends a shipping message based on the amount written to the cart_total field. With the rule "Field · cart_total · greater than · 500", a value of 750 is true, 500 is false (equal is not greater), and "750 USD" is false — the "USD" inside the text stops the value being read as a number. So write only digits into the field and keep the currency in the message.
The is empty and is filled operators
is empty and is filled need no value box and are useful in two places:
Not asking the same question twice. With a condition "Field · phone · is empty", someone whose number you already have is never asked again.
Filtering out incomplete data. "Field · city · is filled" puts contacts with a known city on their own branch.
For a field to count as empty it must be genuinely empty or contain only spaces. A field holding a single dash ("-") counts as filled.
Where an operator surprises you
The behaviour of some operators with an empty value looks odd at first; both cases are deliberate:
With contains, an empty value box means the rule is never true. An empty string is "contained" everywhere, so otherwise everyone would land on the True branch.
With doesn't contain, an empty value box means the rule is always true. It is the other side of the same logic.
doesn't equal is true on an empty field. The rule "Field · city · doesn't equal · Istanbul" also puts contacts with no known city on the True branch. If you do not want that, add "Field · city · is filled" to the same step and choose All must match.
If you leave the value box empty on any operator other than is empty and is filled, the pre-publish check raises "A rule is incomplete" and refuses to publish the flow.
Writing a placeholder in the value
Instead of fixed text, the value box of the Tag, Field and Last reply rules can hold a placeholder. That is how you compare two pieces of information with each other; the details are in Comparing two fields with placeholders.
Other rule kinds do not process placeholders: Time range, Day and the values picked from a list are used exactly as they are.