Skip to main content
Documentation for version v73

Logical expressions in messages

Description

tip

If you're using multiple logical operators in a single if expression, make sure to wrap each pair of conditions in parentheses — this is required for correct parsing.

Correct syntax example:


<html>
{if param1 and (param2 and (param3 and param4))} <!--true-->
if true
{else}
if false
{end}
</html>
```

**Example that will cause a parsing error:**

```
<html>
{if param1 and param2 and param3 and param4} <!--false-->
if true
{else}
if false
{end}
</html>
```

The core of highly personalized targeted messages are conditional expressions.

They are based on if → then → else logic and display different content depending on conditions.

{if lead.field in json.promo_actions1}

You can use data variables both in conditions and in output blocks. This significantly reduces message duplication for segmented audiences.

Example: setting special discounts for VIP customers of a specific shop, while all other recipients receive a default offer.

  • Congratulations! Your premium discount is 42%! — VIP customers
  • Special offer! Get a 20% discount for your second purchase! — all others

Two conditions inside a single message are enough.

  1. Check if the customer has the "best_buy_type" field and belongs to the required shop.
  2. Check whether premium products were purchased.
<!-- Condition 1: profile has "shop_name" and "best_buy_type" -->
{if lead.shop_name and lead.best_buy_type}

<!-- Condition 2: shop_name equals "my_shop" -->
{if lead.shop_name equal "my_shop"}

<!-- Condition 3: best_buy_type contains "premium" -->
{if lead.best_buy_type contains "premium"}
<p>Congratulations! Your premium discount is 42%!</p>
{else}
<p>Special offer! Get a 20% discount for your second purchase!</p>
{end}

{else}
<p>Special offer! Get a 20% discount for your second purchase!</p>
{end}

{else}
<p>Special offer! Get a 20% discount for your second purchase!</p>
{end}

Examples

Conditions

Simple condition
{if param1}
if true
{else}
if false
{end}
Complex condition

Example 1:

{if param1 in array["par1" "par2"] and ( 5 equal length("par 3") or false )}
if true
{else}
if false
{end}

Example 2 using apicontent:

{if apicontent.field_1 not_equal apicontent.field_2 and ( apicontent.field_1 or apicontent.field_2 )}
if true
{else}
if false
{end}

Example 3:

{if crypt("md5" lead._fname "salt") like "123b003aa39d110d1333b37af9889e10" and crypt("base58" lead.lottery_id) like json.crypted_winner}
if true
{else}
if false
{end}

Example 4:

{if iseven(lead.count) and iseven(lead.count2) equal false}
if true
{else}
if false
{end}
Check field and cancel sending if missing
{if lead.some_field}
some_field is not empty
{else}
{cancel}
{end}

Loops

Simple loop
{for array[1 "2" 3.3]}
{.}
{else}
if empty array
{end}
Loop with variables
{for $index, $el = array[1 "2" 3.3]}
{$index}: {$el}
{else}
if empty array
{end}

Value matching conditions

Equal
{if param1 equal param2}
if true
{else}
if false
{end}
Not equal
{if param1 not_equal param2}
if true
{else}
if false
{end}
String is equal (case insensitive)
{if param1 like param2}
if true
{else}
if false
{end}
String is not equal (case insensitive)
{if param1 not_like param2}
if true
{else}
if false
{end}
String contains (case insensitive)
{if param1 contains param2}
if true
{else}
if false
{end}
String doesn't contain (case insensitive)
{if param1 not_contains param2}
if true
{else}
if false
{end}

Numbers and dates comparison

More than number/date
{if 0 gt 1}
if true
{else}
if false
{end}
More than or equal to number/date
{if 0 gte 1}
if true
{else}
if false
{end}
Less than number/date
{if 0 lt 1}
if true
{else}
if false
{end}
Less than or equal to number/date
{if 0 lte 1}
if true
{else}
if false
{end}

Arrays and tags fields

Element is in array
{if param1 in array["par1" "par2"]}
if true
{else}
if false
{end}
Element is in tags field
{if param1 in lead.TagsField}
if true
{else}
if false
{end}
Element is not in array
{if param1 not_in array["par1" "par2"]}
if true
{else}
if false
{end}
Element is not in tags field
{if param1 not_in lead.TagsField}
if true
{else}
if false
{end}
All elements are in first array
{if array["par1" "par2"] all_in array["par1" "par2"]}
if true
{else}
if false
{end}
Not all elements are in first array
{if array["par1" "par2"] not_all_in array["par1" "par2"]}
if true
{else}
if false
{end}
At least one match in the arrays
{if array["par1" "par2"] any_of array["par1" "par2"]}
if true
{else}
if false
{end}
No matches in the arrays
{if array["par1" "par2"] not_any_of array["par1" "par2"]}
if true
{else}
if false
{end}