> ## Documentation Index
> Fetch the complete documentation index at: https://docs.softr.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Conditional Filters

> Setting up conditions to filter the list data.

The conditional filtering feature allows you to filter the list, as well as other dynamic blocks, based on the defined conditions.

<Info>Conditional filtering is also used when you want to display a main list of items, and upon selecting a specific item, show its details along with its associated sub-items. Learn about [Linked List](/building-blocks/vikC2AWEpQGkZd4jGyoVxo/linked-list/bWjTdKhbftofSEKRSxMFz9). </Info>

It's available through **Conditional Filters** in the block settings sidebar under the **Source** section.

<Frame>
  <img src="https://mintcdn.com/softr-2b8a27e1/VMGEt-PtN3_foPwS/user-groups-and-permissions/images/conditional-filters/image1.png?fit=max&auto=format&n=VMGEt-PtN3_foPwS&q=85&s=d57cf91b7fe9dc83cf0f304dc2e24af7" alt="Notion image" width="860" height="1130" data-path="user-groups-and-permissions/images/conditional-filters/image1.png" />
</Frame>

Now, let's see how it works.

First of all, from the dropdown selector at the top, you can choose whether **any** or **all** of the defined conditions should be met for filtering the information.

<Frame caption="“Any” or “All” of the conditions">
  <img src="https://mintcdn.com/softr-2b8a27e1/VMGEt-PtN3_foPwS/user-groups-and-permissions/images/conditional-filters/image2.png?fit=max&auto=format&n=VMGEt-PtN3_foPwS&q=85&s=d9c2f31953bf8d37be270be801c79ce2" alt="“Any” or “All” of the conditions" width="832" height="552" data-path="user-groups-and-permissions/images/conditional-filters/image2.png" />
</Frame>

Additional conditions can be joined with:

* AND (when "All" is selected)

* OR (when "Any" is selected)
  <Frame>
    <img src="https://mintcdn.com/softr-2b8a27e1/VMGEt-PtN3_foPwS/user-groups-and-permissions/images/conditional-filters/image3.png?fit=max&auto=format&n=VMGEt-PtN3_foPwS&q=85&s=94c101d611e30f0471120401ee70c978" alt="Notion image" width="838" height="860" data-path="user-groups-and-permissions/images/conditional-filters/image3.png" />
  </Frame>

Moving on, let's see how the **Condition** is configured. There are three fields in **Condition Settings:**

## **1. Field**

Here, you need to select a field from the specified data source base, for which the condition will be defined.

## 2. Condition

<Frame>
  <img src="https://mintcdn.com/softr-2b8a27e1/VMGEt-PtN3_foPwS/user-groups-and-permissions/images/conditional-filters/image4.png?fit=max&auto=format&n=VMGEt-PtN3_foPwS&q=85&s=1cf6ab547eca53e2402619ca63d64623" alt="Notion image" width="796" height="824" data-path="user-groups-and-permissions/images/conditional-filters/image4.png" />
</Frame>

The following options are available for defining a relationship between the [Field](/building-blocks/vikC2AWEpQGkZd4jGyoVxo/list-block/pQhPYuA28VXr5tLLFBcbCU) and the [Value](/building-blocks/vikC2AWEpQGkZd4jGyoVxo/list-block/pQhPYuA28VXr5tLLFBcbCU).

**Text-like** **Fields**, e.g. emails, formulas, URLs, single select fields – can be used with the following available conditions:

* **Is** – the Field value needs to match the Valueexactly

* **Is not** – the Field value has any value apart from the Value

* **Contains** – the Field value partially matches the Value

* **Does not contain** - the Field value doesn’t partially match the Value. It checks if the given Value is not present within the Field value

* **Is any of** –the Field value is any of the Value(s). Multiple values can be added

* **Is none of** – the Field values have any other value apart from the Value(s). Multiple values can be added

* **Is empty** – the Field value is empty

* **Is not empty** – the Field value is not empty. Has some value

* **Starts with** – the Field value starts with the Value

* **Ends with** – the Field value ends with the Value

**Numeric Fields** can be used with the following available conditions:

* \=

* ≠

* \>

* \<

* ≥

* ≤

* Is between *(inclusive of min/max)*

* Is empty

* Is not empty

**Array-like Fields**, e.g. multi-select fields, linked records, tags, lookup fields can be used with the following available conditions:

* Includes any of

* Includes all of

* Includes exactly

* Includes none of

* Is empty

* Is not empty

**Boolean Fields**, e.g. checkbox fields:

* Is

* Is not

* Is empty

* Is not empty

<Info>At the moment Date fields can be used with the same conditions as Text-like Fields. </Info>

## 3. Value

Here, you have two options. Let's consider each one separately.

### Entering a specific value

You can enter a specific value for the selected field so that only the records having that value are displayed.

<Tip>If the **value contains a space**, you'd need to copy it from somewhere else instead of typing it in.</Tip>

Let's say we have a list of employees in [Airtable](/data-sources/1YYStCJukT15Lh2j93qo9A/airtable/jHX7kfH7QvkVcELQvS3VoX) and want to display only the ones whose position is Project Manager.

<Frame caption="A list of employees in Airtable">
  <img src="https://mintcdn.com/softr-2b8a27e1/VMGEt-PtN3_foPwS/user-groups-and-permissions/images/conditional-filters/image5.png?fit=max&auto=format&n=VMGEt-PtN3_foPwS&q=85&s=2a57c599f72a15b17f625703360cbada" alt="A list of employees in Airtable" width="2086" height="794" data-path="user-groups-and-permissions/images/conditional-filters/image5.png" />
</Frame>

Below you can see how we apply a conditional filter to show only the entries that meet this condition.

<Frame caption="Applying a conditional filter to the list">
  <img src="https://mintcdn.com/softr-2b8a27e1/VMGEt-PtN3_foPwS/user-groups-and-permissions/images/conditional-filters/image6.gif?s=3030cf5468a2628f652cf03f52a17d85" alt="Applying a conditional filter to the list" width="2880" height="1414" data-path="user-groups-and-permissions/images/conditional-filters/image6.gif" />
</Frame>

### **Using Logged-in user's parameters**

Using this option, you can set a condition to filter the list for each logged-in user personally, so that each user only sees entries related to him/her.

By default, you'll have user's **Email** and **Email-Domain** options here. However, if you've [connected users to a data source](/add-and-manage-users/pxnkp9H3qyEVMF6XUceqnj/syncing-users-with-a-data-source/hshRGygHr4T33EnaLntGf9), all the fields from the data source will also become available for your choice. Below, you can see how we add fields from the connected Airtable table.

<Frame caption="Fields added from the connected Airtable base">
  <img src="https://mintcdn.com/softr-2b8a27e1/VMGEt-PtN3_foPwS/user-groups-and-permissions/images/conditional-filters/image7.gif?s=ae3cd148a894d22ee0eec216bd68dafc" alt="Fields added from the connected Airtable base" width="2880" height="1414" data-path="user-groups-and-permissions/images/conditional-filters/image7.gif" />
</Frame>

Let's consider a specific example to make it clear how this works and in which cases it can be applied. Let's imagine you have a task list on [Airtable](/data-sources/1YYStCJukT15Lh2j93qo9A/airtable/jHX7kfH7QvkVcELQvS3VoX) with such fields as **Assignee, Description, and Status**. The **Assignee** field contains the emails of the users to which the task is assigned.

<Frame caption="Task list on Airtable">
  <img src="https://mintcdn.com/softr-2b8a27e1/VMGEt-PtN3_foPwS/user-groups-and-permissions/images/conditional-filters/image8.png?fit=max&auto=format&n=VMGEt-PtN3_foPwS&q=85&s=5caec1ca425d6a5042319cc8129e7c80" alt="Task list on Airtable" width="1149" height="479" data-path="user-groups-and-permissions/images/conditional-filters/image8.png" />
</Frame>

To be able to view their tasks, the users need to log into the system and navigate to the page with the list. However, you want each user to see only his/her tasks, and that can be achieved with a single condition. In **Condition Settings** we are going to set the **Field** to **Assignee** and **Action** to **Logged in User's Email**. This way the logged in user will only see those entries of the list, where the **Assignee** field corresponds to his/her email address. The below GIF illustrates this.

<Frame caption="Testing the conditional filter">
  <img src="https://mintcdn.com/softr-2b8a27e1/VMGEt-PtN3_foPwS/user-groups-and-permissions/images/conditional-filters/image9.gif?s=8ab92dbc7564b2d46c7b0a8751ea1dd4" alt="Testing the conditional filter" width="2880" height="1488" data-path="user-groups-and-permissions/images/conditional-filters/image9.gif" />
</Frame>

That's it. This way, you can set a condition for any of the fields in your list and filter the list accordingly for your logged in users.

<Tip>More attributes will be added soon to allow for more advanced filtering based on additional user attributes such as user roles, statuses, and so on.</Tip>

Now, let’s consider some specific value use cases to see how you can handle them.

### Use Case: **Using a Checkbox field in a Conditional Filter**

Airtable has a Checkbox field type which you might want to use in a conditional filter.

<Tip>The list block doesn't have a Checkbox field type (the [Table](/building-blocks/vikC2AWEpQGkZd4jGyoVxo/table-block-/j7rGwu7J7zuU69h3bZ7HFe) block has it though), but you can still use it in a conditional filter (if you have it on Airtable) even without displaying it.</Tip>

If you want to display the records that have the checkbox checked, you can use the **is not empty** condition as shown below. And vice versa, if you want to filter the unchecked records, you can use the **is empty** condition.

<Frame caption="'is not empty' condition for showing checked items">
  <img src="https://mintcdn.com/softr-2b8a27e1/VMGEt-PtN3_foPwS/user-groups-and-permissions/images/conditional-filters/image10.png?fit=max&auto=format&n=VMGEt-PtN3_foPwS&q=85&s=7da171fa9ca4e647a5b27bd6ae7d4581" alt="&#x22;is not empty&#x22; condition for showing checked items" width="892" height="532" data-path="user-groups-and-permissions/images/conditional-filters/image10.png" />
</Frame>

## Security

<Tip>Softr viability checks and record conditional filters are applied on the server side, and there is no way to trick the system. Learn more about [Softr App Security](/security/ummZ2CWNHXZCHzsZwbEwET/softr-app-security/1xC7Hgkvo67AnHKyebr1uC).</Tip>
