Concepts
Conditions
Conditions have various use cases in Eventvisor projects, ranging from filtering events from being tracked to conditionally routing them to different destinations.
Anatomy of a condition#
A condition is based on the following properties:
- A source for original value (see sources page), which can be expressed via several different properties like:
source
attribute
payload
lookup
- An
operator
for the comparison between the source and the value - A
value
to compare against
Operators#
These operators are supported as conditions:
Operator | Type of attribute | Description |
---|---|---|
exists | Attribute exists in context | |
notExists | Attribute does not exist | |
equals | any | Equals to |
notEquals | any | Not equals to |
greaterThan | integer , double | Greater than |
greaterThanOrEquals | integer , double | Greater than or equal to |
lessThan | integer , double | Less than |
lessThanOrEquals | integer , double | Less than or equal to |
contains | string | Contains string |
notContains | string | Does not contain string |
startsWith | string | Starts with string |
endsWith | string | Ends with string |
in | string | In array of strings |
notIn | string | Not in array of strings |
before | string , date | Date comparison |
after | string , date | Date comparison |
matches | string | Matches regex pattern |
notMatches | string | Does not match regex pattern |
semverEquals | string | Semver equals to |
semverNotEquals | string | Semver not equals to |
semverGreaterThan | string | Semver greater than |
semverGreaterThanOrEquals | string | Semver greater than or equals |
semverLessThan | string | Semver less than |
semverLessThanOrEquals | string | Semver less than or equals |
includes | array | Array includes value |
notIncludes | array | Array does not include value |
Several examples below showing how attribute
source can be used with each of them. You can of course use other sources as well.
equals
#
# ...conditions: - attribute: country operator: equals value: us
notEquals
#
# ...conditions: - attribute: country operator: notEquals value: us
greaterThan
#
# ...conditions: - attribute: age operator: greaterThan value: 21
greaterThanOrEquals
#
# ...conditions: - attribute: age operator: greaterThanOrEquals value: 18
lessThan
#
# ...conditions: - attribute: age operator: lessThan value: 65
lessThanOrEquals
#
# ...conditions: - attribute: age operator: lessThanOrEquals value: 64
contains
#
# ...conditions: - attribute: name operator: contains value: John
notContains
#
# ...conditions: - attribute: name operator: notContains value: Smith
startsWith
#
# ...conditions: - attribute: name operator: startsWith value: John
endsWith
#
# ...conditions: - attribute: name operator: endsWith value: Smith
in
#
# ...conditions: - attribute: country operator: in value: - be - nl - lu
notIn
#
# ...conditions: - attribute: country operator: notIn value: - fr - gb - de
before
#
# ...conditions: - attribute: date operator: before value: 2023-12-25T00:00:00Z
after
#
# ...conditions: - attribute: date operator: after value: 2023-12-25T00:00:00Z
semverEquals
#
# ...conditions: - attribute: version operator: semverEquals value: 1.0.0
semverNotEquals
#
# ...conditions: - attribute: version operator: semverNotEquals value: 1.0.0
semverGreaterThan
#
# ...conditions: - attribute: version operator: semverGreaterThan value: 1.0.0
semverGreaterThanOrEquals
#
# ...conditions: - attribute: version operator: semverGreaterThanOrEquals value: 1.0.0
semverLessThan
#
# ...conditions: - attribute: version operator: semverLessThan value: 1.0.0
semverLessThanOrEquals
#
# ...conditions: - attribute: version operator: semverLessThanOrEquals value: 1.0.0
exists
#
# ...conditions: - attribute: country operator: exists
notExists
#
# ...conditions: - attribute: country operator: notExists
includes
#
# ...conditions: - attribute: permissions operator: includes value: write
notIncludes
#
# ...conditions: - attribute: permissions operator: notIncludes value: write
matches
#
# ...conditions: - attribute: email operator: matches value: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ # optional regex flags regexFlags: i # case-insensitive
notMatches
#
# ...conditions: - attribute: email operator: notMatches value: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ # optional regex flags regexFlags: i # case-insensitive
Advanced conditions#
Conditions can also be combined using and
, or
, and not
operators.
and
#
When using and
, it means all the direct children conditions under it must match against provided context.
# ...conditions: and: - attribute: country operator: equals value: us - attribute: device operator: equals value: iPhone
By default if and
is not specified directly under conditions
, it is implied.
or
#
When using or
, it means at least one of the direct children conditions under it must match against provided context.
# ...conditions: or: - attribute: country operator: equals value: us - attribute: country operator: equals value: ca
not
#
# ...conditions: not: - attribute: country operator: equals value: us
Complex#
and
and or
can be combined to create complex conditions:
# ...conditions: - and: - attribute: device operator: equals value: iPhone - or: - attribute: country operator: equals value: us - attribute: country operator: equals value: ca
You can also nest and
, or
, and not
operators:
# ...conditions: - not: - or: - attribute: country operator: equals value: us - attribute: country operator: equals value: ca