Sending relevant messages to customer segments is key to increasing engagement and sales. Filters let you create customer segments in a powerful, flexible and human-readable way. Here are some basic use cases to get you started:

Use Case Filter
Get at-risk customers tag_active = 'at_risk'
Get customers with predicted customer lifetime value of more than $2000 clv > 2000
Get customers who made only one purchase no_of_purchases = 1
Get customers who have not bought since 31 December 2015 last_purchase < '2015-12-31'
Get at-risk customers with customer lifetime value of $500 or more tag_active = 'at_risk' and clv >= 500
Get customers in cluster 1 or 2 cluster_id = 1 or cluster_id = 2
Get customers who signed up yesterday first_signup = {{date:1d}}
Get customers who bought less than 4 weeks ago last_purchase > {{date:4w}}

Creating a basic filter

Use our filtering interface (Insight - Customers - Create Filter) to get a sense of how to create customer segments. You can get a good idea of how filters work by playing around.

If you decide to venture into the advanced realm, read more below.

Creating an advanced filter


Expressions are the basic building block of a filter. They take the following form:

{{field}} {{operator}} {{value}}

For instance, in the expression below, last_purchase is the field, < is the operator and '2015-12-31' is the operator. This filters customers whose last purchase date is before 31 December 2015.

last_purchase < '2015-12-31'

Expressions can be chained using 'and' and 'or' operators and can be excluded using the 'not' operator.

Read more about fields, operators and values.


Fields form part of an expression. You can filter on the following fields. Note that fields are only available if data is collected in your store.

Label Field Name Description
Age age Age of customer, if available.
Churn churn_rate Probability (from 0 to 1) that a customer is at risk.
CLV clv Predictive customer lifetime value, the expected present value of future purchases of a customer.
First name first_name First name of a customer.
First signup date first_signup Date that customer registered for store account.
Gender gender M (male) or F (female), if available.
Language language Language choice of a customer.
Last name last_name Last name of a customer.
Last purchase last_purchase Date of most recent purchase.
Last signin date last_signin Date of most recent sign-in.
Lifecycle tag_active Classifies customers into one-time (one_time), active (active), at-risk (at_risk) or lost (lost). A customer is considered active if his churn rate is less than 0.5, at-risk when between 0.5 and 0.9 and lost when more than 0.9.
Number of purchases no_of_purchases Number of purchases a customer to date.
Purchase status tag_purchase Classifies customers into newly registered (new_register) or existing customers (new_customer).
Segment tag_segment Classifies customers into VIP (vip), core (core), customers with potential (potential) and non-core (non_core) customers according to our predictive segmentation algorithm.
Total purchase amount total_purchase Total dollar value of purchases from a customer to date.
Categories (Only available for particular stores) tag_categories The set of categories for all the products the customer has traded.



You can use the arithmetic operators such as equality (=), less than or equal to (<=), more than or equal to (>=), less than (<) and more than (>) to filter customers that meet certain criteria.

Here are a list of operators:

Operator Symbol Description
Equals = Equality.
Equals (case insensitive) ~= Case sensitive equality.
Regex ~~ Checks if field matches regular expression.
Greater than > Strictly greater than.
Greater than or equal >= Greater than or equal to.
Less than < Strictly less than.
Less than or equal <= Less than or equal to.
Contains contains Field contains a certain string.
Contains (case insensitive) ~contains Field contains a certain case-insensitive string.
Starts with startswith Field starts with a certain string.
Starts with (case insensitive) ~startswith Field starts with a certain case-insensitive string.
Ends with endswith Field ends with a certain string.
Ends with (case insensitive) ~endswith Field ends with a certain case-insensitive string.
Is null isnull Field is null.
Chaining Operators

Often, you need to run complex queries that are the result of many expressions. You can chain two or more expressions using logical operators 'and' and 'or'. They work like logical operators in mathematics and you can use parenthesis () to indicate which expressions should be evaluated first.

Not Operator

You can use the 'not' operator to exclude the results of expressions. The 'not' operator appears in front of an expression, like so:

not tag_active = 'active'

The expression above filters customers who are not active.


Values can be strings, numbers or dates.


Strings should be wrapped with apostrophes (') or double quotes (").


Numbers are integers and decimals. They do not have to be wrapped in quotes.


Metisa supports four types of dates. Dates should be provided in the format below and text should be wrapped with apostrophes (') or double quotes (").

Type Description Format
Date Dates with year (YYYY), month (MM) and day (DD) and no time component. "YYYY-MM-DD"
Naive datetime Date with a time component in hours (HH), minutes (MM) and seconds (SS) but without a timezone component. "YYYY-MM-DDTHH:MM:SS"
Timezone aware datetime Datetime with a specified timezone offset (+hh:mm). "YYYY-MM-DDTHH:MM:SS+hh:mm"
Relative dates Specified number of days (d), weeks (w), months (m) or years (y) prior to today. e.g. {{date:4w}} returns the day 4 weeks prior to today. {{date:2y}}