# Filters

[Didn't we already mention you can implement logic in your flows?](https://docs.appmixer.com/kb/appmixer-studio-features/implementing-logic) Some clever person once said that repetition is the key to mastery. Let's, therefore, once again uncover the strength of another Utility module. This time, we'll talk about Filters.

{% embed url="<https://youtu.be/CAiRW6g1xQk>" %}
Utility modules – Filters
{% endembed %}

As outlined above, Filters represent an effective way to implement logic into your flows. Just drag & drop the Filters utility module to see all the options that are there for you to discover.

![Implementing logic by using the "Filters" modul](https://660555879-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Meyy9fJyhzsrd3q4-5N%2F-MgAM6J3-JfuKgrBM0om%2F-MgAO-9IMFqrO_UrAXE8%2Fgif-filters-1.gif?alt=media\&token=2f72e75d-642f-45e5-b7ba-1d45b6bd76f3)

As you can see, there are multiple components that help you incorporate some decision-making processes into your flows. Let's explain all of them.

{% tabs %}
{% tab title="Logic" %}
**Contains**\
A message passes through this filter if a value in the "Data" field contains the value in the "Contains" field. Note that typically, you would select your "Data" field to be a variable representing some data from a previous component back in the chain and "Contains" field to be either a hardcoded value or another variable. Values can be text, numbers or dates.

**Equal**\
A message passes through this filter if a value in the "Data" field equals the value in the "Equals" field. Note that typically, you would select your "Data" field to be a variable representing some data from a previous component back in the chain and "Equals" field to be either a hardcoded value or another variable. Values can be text, numbers or dates.

**Greater than**\
A message passes through this filter if a value in the "Data" field is greater than the value in the "Greater than" field. Note that typically, you would select your "Data" field to be a variable representing some data from a previous component back in the chain and "Greater than" field to be either a hardcoded value or another variable. Values can be text, numbers or dates.

**IsNotEmpty**\
A message passes through this filter if the data in the "Field" field is not empty. This is especially useful when checking if a variable contains data or if it is empty.

**LessThan**\
A message passes through this filter if a value in the "Data" field is less than the value in the "Less than" field. Note that typically, you would select your "Data" field to be a variable representing some data from a previous component back in the chain and "Less than" field to be either a hardcoded value or another variable. Values can be text, numbers or dates.

**Modulo**\
A message passes through the filter if the remainder after division of the value in the "Data" field by the value in the "Divisor" field is zero.

**NotEqual**\
A message passes through this filter if a value in the "Data" field does not equal the value in the "Does not equal" field. Note that typically, you would select your "Data" field to be a variable representing some data from a previous component back in the chain and "Does not equal" field to be either a hardcoded value or another variable. Values can be both text, numbers or dates.

**Range**\
A message passes through this filter if a value in the "Data" field falls into the range specified in the "Minimum value" and "Maximum value" fields. Values can be numbers or dates.
{% endtab %}
{% endtabs %}

To fully understand Filters, we recommend looking at an example that we presented in one of the previous sections.

{% content-ref url="../implementing-logic" %}
[implementing-logic](https://docs.appmixer.com/kb/appmixer-studio-features/implementing-logic)
{% endcontent-ref %}

[Next, we'll look at another Utility module, Scheduling](https://docs.appmixer.com/kb/appmixer-studio-features/utility-modules/scheduling).
