Filter lists with groups and dynamic values
This guide is for app makers building in the NotionApps builder.
Use it when a list should show a working set that is more than one fixed condition — nested and / or / not groups, values that change with the person or the clock, or a value that comes from the published URL.
If you only remember one sentence:
In Filtering, add conditions and groups, pick a value type for each condition, then Publish. The live list only returns rows that match.
What you can do
Section titled “What you can do”| Job | What to use |
|---|---|
| Always hide Archived | Fixed value |
| Show each employee their store | Logged-in user property |
| Show rows assigned to the signed-in person | Logged-in user |
| Show related rows for the parent record | Current row / Current row property (related lists on Details) |
| Show due today / this week / this month | Today, Now, Start of week, Start of month |
| Show rows that match a shared link | URL parameter |
| Combine those rules | + Add group with and, or, or not |
Before you start
Section titled “Before you start”- Open a List (View Items) or List (Update Items) screen.
- Keep the right-hand inspector on Content → Filtering.
- Do not use Screen Visibility for “which rows appear.” Visibility only decides who can open the screen.
Step 1 — Add a condition
Section titled “Step 1 — Add a condition”- Click + Add Filtering.
- Set Filter by to a property on this list’s database.
- Set Condition (equals, is not empty, is after, …).
- Set the value type (see the table below).
Step 2 — Choose a value type
Section titled “Step 2 — Choose a value type”| Value type | What NotionApps compares against | Typical use |
|---|---|---|
| Fixed value | The exact value you type or pick | Status is Open |
| Logged-in user | The signed-in Users row itself | Assigned To equals the current person |
| Logged-in user property | A property on the signed-in user (Pro+) | Store equals the user’s Store |
| Current row | The parent record on a related list | Assets whose Location is this Location |
| Current row property | A property on that parent record | Tasks whose Store equals the Location’s Store |
| Today | Start of today in the app timezone | Due Date is today |
| Now | The current time | Last seen is before now |
| Start of week | Monday 00:00 (ISO week) | Created is on or after this week |
| Start of month | The first day of this month | Invoice date is this month |
| URL parameter | A query key on the published URL | Store equals ?store=north |
Current row / Current row property appear on related lists (a list component on a Details screen). They do not appear on a top-level nav list, because there is no parent row.
Step 3 — Nest groups (and / or / not)
Section titled “Step 3 — Nest groups (and / or / not)”A single list of conditions is often enough. Use groups when you need parentheses.
- Click + Add group.
- Set the group connector to and, or, or not.
- Click + Add condition inside the group.
- Nest another group if needed. Groups can be 3 levels deep.
not wraps one child (one condition or one nested group) and inverts it.
Example: open North work, or anything assigned to me that is not archived:
(Store equals North AND Status equals Open)OR(Assigned To equals Logged-in user AND NOT Status equals Archived)Step 4 — Filter a list from a URL
Section titled “Step 4 — Filter a list from a URL”- Add a condition (for example Asset Name equals).
- Set the value type to URL parameter.
- Enter the Parameter name (for example
store). Use a short lowercase name with no spaces. - Publish.
- Open the published list with and without the query:
https://your-app.notionapps.com/assetshttps://your-app.notionapps.com/assets?store=northDo not use these reserved keys as filter parameter names: cache_bust, sim_user_id, debug, live.
This is not the same as Prefill Create Forms from a URL. Prefill fills fields on an Add form. URL parameter on a list decides which rows appear.
Step 5 — Save, publish, and test
Section titled “Step 5 — Save, publish, and test”- Save the builder as usual.
- Publish.
- Open the live app (not only preview).
| What you configured | How to test |
|---|---|
| Logged-in user / user property | Log in as two people with different values |
| Today / week / month | Confirm a row that is due today appears, and yesterday does not |
| URL parameter | Open the list with the query, then without it (expect an empty list when missing) |
| Current row | Open two different parent Details records and confirm the related list changes |
Filtering vs the other three controls
Section titled “Filtering vs the other three controls”| Control | Who it is for | What it decides |
|---|---|---|
| Filtering (this page) | You, the maker | Which rows appear on this list |
| In-App Filtering | End users | Extra chips they can change while browsing |
| Screen Visibility | You, the maker | Whether someone can open the screen at all |
| Data Restriction | You, the maker | Database-wide tenancy for every screen on that database |
Troubleshooting
Section titled “Troubleshooting”| What you see | Likely cause | What to do |
|---|---|---|
| Everyone sees all rows | Still using Fixed value, or not published | Change the value type; Publish; hard-refresh |
| Everyone sees zero rows | URL param missing, user property blank, or types do not match | Add ?param=, fill the user profile, or align property types |
| No Logged-in user property in the menu | Per-list allow switch is Off, or plan is below Pro | Turn the switch On, or upgrade |
| No Current row in the menu | You are on a top-level list | Open the related list on a Details screen |
| Preview looks right, live does not | Not published | Publish again |