Across various pages on the MoEngage dashboard, events, event attributes, and user attributes filters can be used to get to the desired analysis or segment users. To get the right analysis and the right set of users, it's very important to know the filters.
This article explains how these filters work and if there are any different behaviors or filters on different pages.
Data Types
On the MoEngage dashboard, there are seven primary data types:
-
String: A string is a sequence of characters. Strings are typically used to represent words and text. Character in a string can be a letter of some alphabet, a digit, a punctuation mark, a blank space, etc.
- Boolean: The Boolean data type can have values as true and false.
- Numeric : A number is a sequence of digits . Numeric data types are typically used to represent amount, quantity , and price.
- Geo Location: Geo-location represents the location on the map using latitude and longitude.
- Date Time: Date time data types represent the date and time for an event or action.
- Array: An array is a group of elements. In MoEngage, we have 2 array data types: String Array and Numeric array.
- Object: The Object data type provides a structured way to identify and query multiple related attributes contained within a single object. These attributes can be of any primitive data type, such as string, numeric, or date, and can be nested up to two levels. For more information, refer to Object Data Type in Segmentation.
Terms to know
Term | Description |
Key | The key is a record in the database. |
Key is set | The field which holds the value of an attribute. |
Key not set | The field is not present to hold the value of the attribute. |
Stored Value | User Behavior or User Property value that is stored in the MoEngage Application. For example, App/Site Opened, Last Seen, Email Clicked. For more information, refer to Derived Events & Attributes. |
Filter Value | The value you choose to filter is based on the selected stored value. For example, you can choose the filter at least and type or select the duration or number of times the App/Site is opened. |
String Filters
Operator | Explanation |
---|---|
is |
The stored value matches one of the filter values. |
exists | The stored value is present. This includes all values, including Empty String and N/A. Filter users or events where the stored value exists (Key is set). |
contains | The stored value contains one of the filter values. |
contains spaces |
The stored value contains spaces. The spaces can be at the start, in between, or at the end of the value. This includes all values, including Empty String and N/A. Filter users or events where the stored value contains spaces. Note: The contains spaces filter will be highly relevant in the case of unique identifier (UID) attributes like ID, Mobile number, Email ID, MoEngage ID, etc. It is also highly relevant for String and Array of string data types. Other data types do not have relevant use cases and might not yield expected results. |
starts with | The stored value starts with one of the filter values. |
ends with | The stored value ends with one of the filter values. |
is not | The stored value is not a match to any of the filter values. The Filter is applied to all the attribute's values, including those that are not available (The Key is not set). |
does not exist | The stored value is not present. The filter is applied to all the attribute values, including those that are not available (The Key is not set). |
does not contain | The stored values are not a partial match to (do not contain) any of the filter values. The filter is applied to all the values in the stored attribute, including those that are unavailable (The Key is not set). |
does not start with |
The stored value does not start with any of the filter values. (Key not set) The filter is applied to all the attribute values, including those that are not available (The Key is not set). |
does not end with | The stored value does not end with any of the filter values. The filter is applied to all the attribute values, including those that are not available (The Key is not set). |
is empty | The stored value is "" (The Key is set and the value is null). |
is not empty | The stored value is not "" (the stored value is not null), whether the Key is set or not. |
Boolean Filters
Operator | Explanation |
---|---|
is | The stored value is an exact match with the filter value. |
is not | The stored value does not match the filter value. The stored value includes the attributes where the value does not exist (Key is not set). |
exists | The stored value is present. This includes all values, including Empty Boolean and N/A. |
does not exist | The stored value is not present (The Key is not set). |
Numeric Filters
For the table below - N, N1, and N2 are numeric, and N2 > N1.
Operator | Explanation |
---|---|
is equal to | The stored value is a match with one of the filter values. |
is not equal to | The stored value does not match any of the filter values. The filter is applied to all the attribute values, including those that are not available (The Key is not set). |
is between | The stored value is a match between the first filter value and the second filter value. N1 <= Stored value AND Stored value < N2. N1 & N2 are the first and second filter values, respectively. |
is not between | The stored value is not matched between the first and second filter values. N1 > stored value OR stored value >= N2. N1 & N2 are the first and second filter values, respectively. |
is less than | The stored value is less than the filter value. Stored value < Filter value |
is greater than | The stored value is greater than the filter value. Stored value > Filter value |
exists | The stored value is present. This includes all values, including Empty Numeric and N/A. Filter users or events where the stored value exists (Key is set). |
does not exist | The stored value is not present. The filter is applied to all the attribute values, including those that are not available (The Key is not set). |
Event Occurrence Filters
Consider the following assumptions:
- Number of times user executes or does not execute the event: n
- Event in consideration: Viewed Product
- Today's Date - Dec 14th 2023.
- Event Retention Period for Segmentation - 30 days ( Nov 14th 2023)
Operator | Explanation |
---|---|
exactly |
The user has the event exactly for the specified number of times. Example: Has Executed Viewed Product exactly 2 times This filter would fetch users who have viewed a product exactly twice in the specified date range added in the filter criteria. |
at least |
The user has executed the event at least n times (>= n) Example: Has Executed Viewed Product at least 1 times This filter would fetch users who have viewed a product at least once in the specified date range added in the filter criteria. |
at most |
The user has executed the event at most n times (<= n). Example: Has Executed Viewed Product at most 4 times This filter would fetch users who have viewed a product at most four times (<=4) in the specified date range added in the filter criteria. |
for the first time |
The user has executed the event for the first time within the specified date range. Example: Has Executed Viewed Product for the first time in the last 4 days This filter would fetch users who have viewed a product for the first time in the last 4 days(till 10th Dec 2023) and have not viewed a product before that (has not executed viewed product before 10th Dec 2023 (period in consideration here - 14th Nov 2023 to 10th Dec 2023). Note: This operator will run as per the events data retention applicable to your Workspace. |
for the last time |
The user has executed the event for the last time within the specified date range. Example: Has Executed Viewed Product for the last time This filter would fetch users who have viewed a product for the last time in the specified date range added in the filter criteria. Note: This operator will run as per the events data retention applicable to your Workspace. |
Location-Triggered Filters
Operator | Explanation |
---|---|
Point with Radius | The stored geolocation value is within the circle defined by the point and the radius. |
Date Time Filters
To understand filter operators in date-time data types, we need to first understand a few functions -
-
now = current timestamp up to milliseconds
-
start_of_day(timestamp) = 00:00:00 of the selected day/date
-
end_of_day(timestamp) = 23:59:59 of the selected day/date
- n days = n * 24 hours
-
For the table below - n, n1, and n2 are numeric and n2 > n1.
For example
- Let's assume now is 7:30:05 PM, 5 Jan 2001 then
- now - 3 days = now - (3* 24) hours = 7:30:05 PM, 2 Jan 2001
- now + 3 days = now + (3* 24) hours = 7:30:05 PM, 8 Jan 2001
- start of the day (now) = 12:00:00 AM, 5 Jan 2001
- end of the day (now) = 11:59:59 PM, 5 Jan 2001
- Let's assume the date is 1 Jan 2001
- start of day (date) = 12:00:00 AM, 1 Jan 2001
- start of day (date + 1 day) = 12:00:00 AM, 2 Jan 2001
- start of day (date - 1 day) = 12:00:00 AM, 31 Dec 2000
- end of day (date) = 11:59:59 PM, 1 Jan 2001
- end of day (date + 1 day) = 11:59:59 PM, 2 Jan 2001
- end of day (date - 1 day) = 11:59:59 PM, 31 Dec 2000
info |
Note All date-time filters work in the App time Zone, specified in Settings. |
Operator | Filter Value Type | Explanation |
---|---|---|
in the last | n days |
Stored value is From = Start of day(Now - N days), To = Now. N is the filter value. Example: If Now = 11:30:30 AM, 7 Sep 2022 & N = 3. From = 12:00:00 AM, 4 Sep 2022. To = 11:30:30 AM, 7 Sep 2022. |
n hours |
Stored value is From = Start of the hour (Now - N hours), To = Now N is the filter value. Example: If Now = 11:30:30 AM, 7 Sep 2022 & N = 3. From = 8:00:00 AM, 7 Sep 2022. To = 11:30:30 AM, 7 Sep 2022. |
|
n weeks |
Stored value is From = Start of the week (Monday of (Now - N weeks)), To = Now N is the filter value. Example: If Now = 11:30:30 AM, 7 Sep 2022 & N = 2. From = 12:00:00 AM, 22 Aug 2022 (Monday) To = 11:30:30 AM, 7 Sep 2022. |
|
n months |
Stored value is From = Start of the month (Now - N months), To = Now N is the filter value. Example: If Now = 11:30:30 AM, 7 Sep 2022 & N = 2. From = 12:00:00 AM, 1 Jul 2022. To = 11:30:30 AM, 7 Sep 2022. |
|
on | date |
Stored value is From = Start of day (Date chosen), To = End of day (Date chosen) Example: If Now = 11:30:30 AM, 7 Sep 2022 & Date chosen is today. From = 12:00:00 AM, 7 Sep 2022. To = 11:30:30 AM, 7 Sep 2022. |
days ago |
Stored value is From = Start of day (Now - N days), To = End of day (Now - N days) N is the filter value Example: If Now = 11:30:30 AM, 7 Sep 2022 & N=3. From = 12:00:00 AM, 4 Sep 2022. To = 11:59:59 PM, 4 Sep 2022. |
|
days from now |
Stored value is From = Start of day(Now + N days), To = End of day(Now + N days). N is the filter value. Example: If Now = 11:30:30 AM, 7 Sep 2022, & N=3. From = 12:00:00 AM, 10 Sep 2022. To = 11:59:59 PM, 10 Sep 2022. |
|
in between | date |
Stored value is From = Start of day(Date 1), To = End of day(Date 2). Date 1 & Date 2 are the start and end dates respectively. Example: If selected Date1 = 7 Sep 2022, & Date2 = 15 Sep 2022. From = 12:00:00 AM, 7 Sep 2022. To = 11:59:59 PM, 15 Sep 2022. |
days ago |
Stored value is From = Start of day (Now - N2 days), To = End of day (Now - N1 days). N1 & N2 are the first and second filter values respectively. Example: If Now = 11:30:30 AM, 7 Sep 2022, N1 = 3, & N2 = 5. From = 12:00:00 AM, 2 Sep 2022. To = 11:59:59 PM, 4 Sep 2022. |
|
days from now |
Stored value is From = Start of day(Now + N1 days), To = End of day(Now + N2 days). N1 & N2 are the first and second filter values respectively. Example: If Now = 11:30:30 AM, 7 Sep 2022, N1 = 3, & N2 = 5. From = 12:00:00 AM, 10 Sep 2022. To = 11:59:59 PM, 12 Sep 2022. |
|
before | date |
Stored value is To = End of day (Date chosen - 1 day) Example: If Now = 11:30:30 AM, 7 Sep 2022 & Date chosen is today. To = 11:59:59 PM, 6 Sep 2022. |
days ago |
Stored value is To = End of day(Now - (N+1) days) N is the filter value. Example: If Now = 11:30:30 AM, 7 Sep 2022 & N = 3. To = 11:59:59 PM, 3 Sep 2022. |
|
after | date |
Stored value is From = Start of day (Date chosen + 1 day), Example: If Now = 11:30:30 AM, 7 Sep 2022 & Date chosen is today. From = 12:00:00 AM, 8 Sep 2022. |
days from now |
Stored value is From = Start of day(now + (N+1) days) N is the filter value. Example: If selected Date = 7 Sep 2022, & N = 3. From = 12:00:00 AM, 11 Sep 2022. |
|
in the next | days |
Stored value is From = Now, To = End of day(now + N days). N is the filter value. Example: If Now = 11:30:30 AM, 7 Sep 2022 & N =3. From = 11:30:30 AM, 7 Sep 2022. To = 11:59:59 PM, 10 Sep 2022. |
today |
Stored value is From = Start of day(Today), To = Now Example: If Now = 11:30:30 AM, 7 Sep 2022. From = 12:00:00 AM, 7 Sep 2022. To = 11:30:30 AM, 7 Sep 2022. |
|
yesterday |
Stored value is From = Start of day(Now - 1 day), To = End of day(Now - 1 day) Example: If Now = 11:30:30 AM, 7 Sep 2022. From = 12:00:00 AM, 6 Sep 2022. To = 11:59:59 PM, 6 Sep 2022. |
|
this week |
Stored value is From = Start of week (Monday of the current week), To = Now Example: If Now = 11:30:30 AM, 7 Sep 2022. From = 12:00:00 AM, 5 Sep 2022. To = 11:30:30 AM, 7 Sep 2022. |
|
last week |
Stored value is From = Start of week (Now - 7 days), To = End of week (Now - 7 days) Example: If Now = 11:30:30 AM, 7 Sep 2022. From = 12:00:00 AM, 29 Aug 2022. (Monday) To = 11:59:59 PM, 3 Sep 2022. |
|
this month |
Stored value is From = Start of Month (1st of current month), To = End of Month (Now) Example: If Now = 11:30:30 AM, 7 Sep 2022. From = 12:00:00 AM, 1 Sep 2022. To = 11:30:30 AM, 7 Sep 2022. |
|
last month |
Stored value is From = Start of Month (Now - 1 month), To = End of Month (Now - 1 month) Example: If Now = 11:30:30 AM, 7 Sep 2022. From = 12:00:00 AM, 1 Aug 2022. To = 11:59:59 PM, 31 Aug 2022. |
|
exists |
The stored value is present. This includes all values including Empty Date Time and N/A. Filter users or events where the stored value exists (Key is set). |
|
does not exist |
The stored value is not present. The filter is applied to all the values of the attribute including the values that are not available (The Key is not set). |
Special Date Filters
Special date filter filters for a specific hour, weekday, month, date of the month, and date of the year. This is useful for filtering out birthdays across years, and bill dates across months.
Special date filters are available in the drop-down next to the date attributes in the User property and the User behavior section.
Operator | Text on Dashboard | Explanation |
---|---|---|
Date |
Date |
Filter the stored dates. |
Hour of the day |
Daily where the hour/s |
Filter the stored dates based on their hour. |
Day of the week |
Weekly where the day/s |
Filter the stored dates based on their weekday. |
Day of the month |
Monthly where the day/s |
Filter the stored dates based on their day. |
Month of the year |
Yearly where the month/s |
Filter the stored dates based on their month. |
Date Month |
Yearly where the date/s |
Filter the stored values based on their date month combination. |
Special date filters are available only for user and event attributes where the data type is 'date'. Special date filters are not available in the Affinity Segmentation and Analytics filter.
Hour of the day - Daily where the hours
For hours of the day, let’s understand these filters' definitions better with examples.
Operator | Filter Value | Explanation |
---|---|---|
in the following |
-- |
Hour value of the stored date matches with one of the filter values. |
on |
hour |
Stored value is Example: If selected Hour = 12 AM. |
hours ago |
Stored value is Example: If Now = 11:30:30 AM & N =3. |
|
hours from now |
Stored value is Example: If Now = 11:30:30 AM & N =3. |
|
In between |
hour |
Stored value is Example: If selected Hour1 = 01 AM, & Hour2 = 05 PM. |
hours ago |
Stored value is Example: If Now = 11:30:30 AM, N1 = 3, & N2 = 5. |
|
hours from now |
Stored value is Example: If Now = 11:30:30 AM, N1 = 3, & N2 = 5. |
|
in the last |
n hours |
Stored value is Example: If Now = 11:30:30 AM & N =3. |
in the next |
n hours |
Stored value is Example: If Now = 11:30:30 AM & N =3. |
Day of the week - Weekly where the day
For the day of the week, let’s understand these filter definitions better with examples.
Operator | Filter Value | Explanation |
---|---|---|
is today |
-- |
Stored value is Example: If Now = 04:30:30 PM, 1 Jan 2001, Monday. |
in the following |
-- |
The weekday value of the stored date matches with one of the filter weekdays. |
on |
day |
Stored value is Example: If Day = Wednesday. |
days ago |
Stored value is Example: If Now = 04:30:30 PM, 1 Jan 2001, Monday & N = 3 |
|
days from now |
Stored value is Example: If Now = 04:30:30 PM, 1 Jan 2001, Monday & N = 3 |
|
In between |
day |
Stored value is Example: If Now = 04:30:30 PM, 1 Jan 2001, Monday. Day 1 = Tuesday & Day 2 = Tuesday. |
days ago |
Stored value is Example: If Now = 04:30:30 PM, 1 Jan 2001, Monday. N1 = 2 & N2 = 4. |
|
days from now |
Stored value is Example: If Now = 04:30:30 PM, 1 Jan 2001, Monday. N1 = 2 & N2 = 4. |
|
in the last |
N days |
Stored value is Example: If Now = 04:30:30 PM, 1 Jan 2001, Monday & N = 3. |
in the next |
N days |
Stored value is Example: If Now = 04:30:30 PM, 1 Jan 2001, Monday & N = 3. |
Day of the month - Monthly where the day
For the day of the week, let’s understand these filter definitions better with examples.
Here Date(DD) numerical date value e.g. 11, 23, 05.
Operator | Filter Value | Explanation |
---|---|---|
is today |
-- |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001. |
in the following |
-- |
Date(DD) value of the stored date matches with one of the filter dates. |
on |
day |
Stored value is Example: If selected Date = 7th. |
days ago |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001 & N = 3. |
|
days from now |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001 & N = 3. |
|
In between |
day |
Stored value is Example: If Date1 = 14th & Date2 = 23rd. |
days ago |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001, N1 = 11 & N2=19. |
|
days from now |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001, N1 = 11 & N2=19. |
|
in the last |
N days |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001 & N = 3. |
in the next |
N days |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001 & N = 3. |
Month of the year - Yearly where the month
Let’s understand these filters' definitions better with examples for the month of the year.
Operator | Filter Value | Explanation |
---|---|---|
is this month |
-- |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001. |
in the following |
-- |
The month value of the stored date matches one of the filter months. |
on |
month |
Stored value is Example: If selected Month = May. |
months ago |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001 & N = 3. |
|
months from now |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001 & N = 3. |
|
In between |
month |
Stored value is Example: If Month1 = March, Month2= October. |
month ago |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001, N1 = 4 & N2 = 7. |
|
month from now |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001, N1 = 4 & N2 = 7. |
|
in the last |
n months |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001 & N = 3. |
in the next |
n months |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001 & N = 3. |
Date-Month of the year - Yearly where the date
Let’s understand these filters' definitions better with examples for the date month of the year.
Operator | Filter Value | Explanation |
---|---|---|
is today |
-- |
Stored value is Example: If Now = 4:30 PM, 11 Jan 2001. |
on |
date month |
Stored value is Example: If Date-Month = 04 May. |
days ago |
Stored value is Example: If Now = 11 Jan 2001, 4:29 PM & N = 3. |
|
days from now |
Stored value is Example: If Now = 11 Jan 2001, 4:29 PM & N = 3. |
|
In between |
day |
Stored value is Example: If Date-Month1 = 03 March, & Date-Month1 = 10 October. |
days ago |
Stored value is Example: If Now = 11 Jan 2001, 4:29 PM. N 1 = 4 & N2 = 7. |
|
days from now |
Stored value is Example: If Now = 11 Jan 2001, 4:29 PM. N 1 = 4 & N2 = 7. |
|
in the last |
N days |
Stored value is Example: If Now = 11 Jan 2001, 4:29 PM & N = 3. |
in the next |
N days |
Stored value is Example: If Now = 11 Jan 2001, 4:29 PM & N = 3. |
Array Filters
Two types of array filters are available.
- Entire Analytics Suite
- Triggers, Preference management, Conversion goals, and Personalization attributes
Array of Strings
Description for array filters for string -
Filter Name | Explanation |
---|---|
(any of) is |
Any of the stored values is an exact match for at least one of the filter values. |
(all of) is |
All of the stored values of the array match all the filter values. |
(any of) is empty |
At least one of the stored values of the array is an empty string. |
(all of) is empty |
All of the stored values of the array are empty strings. |
is not |
All stored values of the array do not match any of the filter values. |
is not empty |
The stored value is not empty. String instance has a length greater than 0. |
exists |
The stored value is present. This includes all values including Empty Array and N/A. |
contains |
All of the stored values of the array contain all the filter values. |
does not exist |
The stored value is not present. |
(any of) contains |
One of the stored values of the array contains the filter value. |
(all of) contains |
All of the stored value contains filter value |
does not contain |
All of the stored value does not contain filter value. |
(any of) starts with |
Any of the stored values start with the filter value. |
(all of) starts with |
All of the stored value starts with the filter value. |
does not start with |
All of the stored does not start with the filter value. |
(any of) ends with |
Any of the stored values end with the filter value. |
(all of) ends with |
All of the stored value ends with the filter value. |
does not end with |
All of the stored does not end with the filter value. |
Array of Numbers
Description for array filters for numeric values -
Filter Name | Explanation |
---|---|
(any of) is equal to |
Any of the stored values is an exact match for at least one of the filter values. |
(all of) is equal to |
Stored values are an exact match for all the filter values. |
is not equal to |
Any of the stored values is not a match to any of the filter values. |
(any of) is between |
One of the stored values of the array is a match between the first filter value and the second filter value. N1 <= at least one of the stored values of the array AND the same value is < N2. |
(all of) is between |
All of the stored value of the array is a match between the first filter value and the second filter value. N1 <= all stored values of the array AND all stored values of the array < N2. |
is not between |
None of the stored values of the array matches between the first filter value and the second filter value. N1 > all stored values of the array OR all stored values of the array >= N2. |
(any of) is less than |
One of the stored values of the array is lesser than the filter value. |
(all of) is less than |
All of the stored values of the array are lesser than the filter value. |
(any of) is greater than |
One of the stored values of the array is greater than the filter value. |
(all of) is greater than |
All of the stored values of the array are greater than the filter value. |
exists |
The stored value is present. This includes all values, including Empty Array and N/A. |
contains |
The stored value contains one of the filter values. |
does not exist |
The stored value is not present in the filter value (Key not set). |
Attribute Comparison
You can now compare a user attribute to another user attribute or a constant value.
The following table lists the filters and data types supporting attribute comparison:
Data Type | Filters supporting attribute comparison |
String | is, is not |
Boolean | is, is not |
Date |
On, before, after, in the next, in the last Note: MoEngage only matches the date and not the exact time stamp for date data types. |
Number | is equal to, is not equal to, is greater than, is less than |
Array of Strings | (any of) is, (all of) is, is not, (any of) contains, (all of) contains, does not contain, (any of) starts with, (all of) starts with, does not start with, (any of) ends with, (all of) ends with, does not end with |
Array of Numbers | (any of) is equal to, (all of) is equal to, is not equal to, (any of) is less than, (all of) is less than, (any of) is greater than, (all of) is greater than |
Attribute to Attribute Comparison
You can now compare a user attribute of a specific data type with another user attribute of the same data type.
Example 1: Consider a marketer looking to identify users who haven't used their app since installing it. Comparing the First Seen and Last Seen user attributes of users can help the marketer identify the users who haven't been active on the app since installation.
Example 2: Consider a bank entity looking to identify customers with outstanding loans. For every customer, outstanding_loan_amount and loan_amount_paid_till_date are user attributes that represent the total loan amount disbursed and the total loan amount paid by the customer to date. To identify the segment of users with an outstanding loan, the bank can compare these user attributes, as in the following example.
Attribute to Constant Value Comparison
You can now compare a user attribute to a predefined constant value.
Example 1: Consider an E-commerce business looking to identify users who have spent more than $1000 on their platform while upgrading the app. The user attribute total_amount_for_upgrade represents the total amount each user has spent to upgrade the platform to date. To segment users into 'high spenders', the E-commerce business can compare this user attribute with a constant value of 1000 as shown below:
Limitations
The following features currently do not support the new segmentation filters (first/last seen, contains spaces, is empty/not empty, and user attribute comparison):
- Conversion Goal
- Business Event
- Smart Trigger & Dynamic Condition
- Flows
Though the new filters are not available in the above features, custom segments employing the new filters can still be created from the Create segment page and used in the features described above. In the upcoming phases, we will plan to support new filters for all the features in the dashboard.
Frequently Asked Questions (FAQs)
While using filter operators, specifically "Exists / Does not exist" and "Is empty / Is not empty", understanding the distinction between these operators is key to accurate segmentation:
Exists / Does not exist Operators (Focus on Attribute Presence):
-
Attribute exists: This condition is met if the attribute's key (or field name) is defined for a user or event. The actual value stored for that attribute can be anything, including an empty string (
""
) or a null/N/A value.
Example: IfEmail exists
is used, users will be included if they have an "Email" attribute, regardless of whether the email field contains "user@example.com",""
, or is null. - Attribute does not exist: This condition is met if the attribute's key is not defined for a user or event.
Is empty / Is not empty Operators (Focus on Attribute Value, primarily for Strings):
-
Attribute is empty: This is true if the attribute's key is set AND its value is an empty string (
""
).
Example:Email is empty
will find users who have an "Email" attribute, and the value stored in it is""
. -
Attribute is not empty: This operator can be less intuitive. It's true if:
- The attribute's key is set AND its value is NOT an empty string (
""
) (e.g.,Email = "user@example.com"
). - OR, the attribute's key is NOT set at all. If an attribute doesn't exist for a user, its value isn't an empty string, so it technically satisfies the "is not empty" condition.
Email is not empty
will include users withEmail = "user@example.com"
AND users who do not have an "Email" attribute at all. This is why queries likeID is not empty AND Email is not empty AND Mobile Number is not empty
might return users who don't actually have all three attributes populated, as some attributes might match by simply not existing. - The attribute's key is set AND its value is NOT an empty string (
Best Practice for Finding Attributes with Actual, Non-Empty Values:
To reliably find users where an attribute both exists (its key is present) and contains a genuine, non-empty value, you should combine both types of operators for each attribute:
Recommended Query Structure: (Attribute1 exists AND Attribute1 is not empty)
Why this works:
-
Attribute exists
ensures the attribute key is actually present for the user. -
Attribute is not empty
, when combined withAttribute exists
, effectively filters out cases where the attribute key isn't set. This leaves only the scenario where the key is set and its value is not an empty string.
Example for finding users with a populated ID, Email, and Mobile Number:
(ID exists AND ID is not empty) AND (Email (Standard) exists AND Email (Standard) is not empty) AND (Mobile Number (Standard) exists AND Mobile Number (Standard) is not empty)
This combined approach ensures that you are targeting users who have all the specified attributes tracked, and each of those attributes holds a meaningful, non-empty value. This aligns with the general guidance: "Used together (attribute exists AND attribute is not empty), both filters provide all valid values in the data that can be used for further segmentation."