The first line in the condition builder determines WHEN are the conditions below validated.

On all events – use when you want to check the offer condition at every pageview, every interaction

On selected events – use when you have your own Persoo events specified, e.g. “addToBasket”

After session – use when you want to check the condition after every visit, e.g. if you are sending an “Abandoned basket email”.

Regularly several times a day – use when you have a condition independent on the session. E.g. for triggering “Thank you email 5 days after purchase”.

Trigger conditions

Conditions are inserted in natural language, and can be conjoined with logical operators AND, OR, NOT.


Repeating patterns of conditions

There are several types of conditions, in which the following patters repeat:

<timeframe> is

  • within last N days … given action happened in the last N days
  • not within last N days … given action happened, but not in the last N days
  • before at least N days … given action did not happened in the last N days or ever

<string comparison> is

  • == … equal, exactly the same
  • contains … contains string
  • match … matches a regular expression

<string comparison> allows for: ==, <=, >=, <, >.

<object> to which metadata are calculated

  • pathname – part of URL without domain or parameters. For example: /mobile-phones/android
  • pageType – page template id given in data layer, typically “category” for a list of products, etc.
  • product – id of the product, that was interacted with
  • category – id of the category, that was interacted with (visitor looked at the page of the category, or looked at a product belonging to this category, etc.)
  • section – same as category, but only on the first level of hierarchy
  • brand – manufacturer or brand, that the visitor interacted with
  • productType – parameter specifying product type (if given in the product feed). Products can be assigned to categories “3D TV”, “4K TV” etc. but the general product type is “tv”.

Condition types

You can choose from:

  • Tag: user’s tag name <jméno tagu> [==/contains] <value>
    Can be imported to each CustomerID, eventually can be created based on events.
  • Recency: user’s last <event name> <timeframe>
    When was the last time certain event has been sent. Event can be: Visit, Pageview, basketChange or other.
  • Frequency: user did [>] N <event name> in last <1/7/30/90> days
    How many times certain event happened.
  • Monetary: user spend [>/==/<] N EUR in last [1/7/30/90] days
    How much did the visitor spent in the given timeframe.
  • Basket status: basket is [empty/non empty]
  • Last viewed: user’s last viewed [object] is <object id>
    Last viewed [product, category, section, brand, pageType, url, …] is equal to a certain ID.
  • User preference: user prefers [objekt] <item id> in [short/long] term
    User prefers certain [product, category, section, brand, price level, pageType…]. If 1-3 items stick above the rest (in terms of interactions), they are considered as a preference. If they were all interacted with just about the same, then the visitor does not have a preference.
  • View interactions recency: user viewed [object] with id <itemID> <timeframe>
    The visitor viewed [product, category, section, brand, url…] with a certain id in the last N days
  • Purchase interactions recency: user purchased [object] with id <itemID> <timeframe>
    When was the last time the visitor bought a certain item or an item from a certain category.
  • Offer interactions recency: offer with <offer name> was [impressed/clicked/triggered] <timeframe>
    Selected offer was viewed or clicked in the given timeframe (or not viewed/clicked). Thanks to this condition, series of scenarios can be created.
  • Offer interactions count: offer with <offer name> was [impressed/clicked/triggered] [>|>=|==|<=|<] N times
    Given offer was selected more than (or less than) N times.
  • Location interactions recency … Same as for Offers, but now for Locations.
  • Location interactions count … Same as for Offers, but now for Locations.
  • Identifications: user is identified by <identification type> <string comparison> <value>
    Identification type is for example “customerId”, “email”, “phone”…

    • Can be compared with “has any value” => customer is identified
    • Or can be compared to a regex, thus selecting e.g. all users with email address from Gmail.
  • Acquisitions: user came from [campaign/source/medium/channel] <id> <timeframe>
    Visitor came to the website from a certain campaign, source, medium or channel. Works through standard google UTM parameters.
  • AB tests: user is in ab test <test name> in variant <variant name>
  • When – range: from <date time> to <date time>
    Condition is true only if the current time matches the given time range.
  • When – week day: if today is [Monday/Tuesday/…]
  • When – day part: if it is [morning, noon, afternoon, evening, night]
  • Custom Javascript condition
    [Advanced] You can insert your own javascript condition, such as session.lastEvent.query.length && session.lastEvent.query.length > 0