Skip to main content
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: A collection of data elements. MoEngage supports two types: String Arrays and Numeric Arrays, with a maximum limit of 254 elements per array as selectable values while filtering.
  • 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

String Filters

Boolean Filters

Numeric Filters

For the table below - N, N1, and N2 are numeric, and N2 > N1.

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)

Location-Triggered Filters

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
All date-time filters work in the App time Zone, specified in Settings.
(Settings -> App -> General -> General Settings -> Account Settings -> TimeZone )

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. attribute.png event.png 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.

Day of the week - Weekly where the day

For the day of the week, let’s understand these filter definitions better with examples.

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.

Month of the year - Yearly where the month

Let’s understand these filters’ definitions better with examples for the month of the year.

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.

Array Filters

Two types of array filters are available. Array filters are not supported for:
  1. Entire Analytics Suite
  2. Preference management, Conversion goals, and Personalization attributes

Array of Strings

Description for array filters for string -

Array of Numbers

Description for array filters for numeric values -

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:

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. AttributeComparison_Example1.gif 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. AttributeComparison_Example2.gif

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: constant value.gif

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)

The difference is between a missing field and a blank value.
  • Does Not Exist: The attribute key was never created or tracked for the user (for example, a “Loyalty_ID” field is completely missing from User A’s profile).
  • Is Empty: The attribute key exists on the profile, but the value stored is an empty string (for example, User B has a “Loyalty_ID” field, but it contains no text: "").
To ensure you target users with genuine data, you should always combine the Exists and Is Not Empty operators using AND logic. This prevents the system from accidentally including users who simply don’t have the attribute at all.
  • Example: To find users with a valid phone number, use: (Phone Number EXISTS) AND (Phone Number IS NOT EMPTY)
  • Why this works: Exists confirms the field is on the profile, and Is Not Empty ensures that the field isn’t just a blank string.