When you share a Notion database with a team, every person sees the same view by default. If you want each user to see only their own data without manually adding a filter each time, you need a method that applies a user-specific filter automatically. Notion does not offer a built-in “current user” filter, but you can achieve this using a formula that checks the current user’s email address or name against a person property. This article explains how to create a database view that shows only the current user’s items using a formula-based filter.
The core technique relies on the prop("Person") == "email@domain.com" logic, but because Notion formulas cannot directly reference the logged-in user, you must create a helper database or use a workaround with a rollup and a single-row reference table. This guide covers the exact steps to set up a filter that works for each user without manual intervention.
By the end of this article, you will have a Notion database view that displays only the records where the current user is assigned. You will also learn how to avoid common pitfalls such as broken formulas or incorrect filter logic.
Key Takeaways: Creating a User-Specific Filter in Notion
- Formula property with
prop("Person") == prop("Current User Email"): Compares the assigned person to a reference value stored in a helper database. - Single-row helper database with a rollup: Stores the current user’s email address and feeds it into the main database formula.
- Filter by formula checkbox: Hides rows where the formula returns false, showing only the current user’s records.
Why Notion Cannot Filter by Current User Directly
Notion’s filter system operates on fixed values. When you apply a filter like Person contains "John", that filter is static — it uses the exact text you typed. Notion does not have a dynamic variable for the logged-in user in its filter menu. This limitation means you cannot simply select a “current user” option from a dropdown.
To work around this, you need a formula that compares the person property in your database to a value that represents the current user. Since formulas cannot directly read the user’s identity, you must store that identity in a separate database and use a rollup to bring it into the formula. This method works because the rollup value updates when the user changes the reference record.
The Helper Database Concept
Create a small database with a single row. This row contains a text property where you manually enter the current user’s email address. Each user who opens the workspace must update this row to their own email. Alternatively, you can use a formula that extracts the email from a person property that the user sets once. The key is that the helper database provides a single value that your main database formula can reference.
Steps to Create a User-Specific Default Filter
Follow these steps to build the filter. You need two databases: a main database containing your data with a person property, and a helper database with one row that stores the current user’s email.
- Create the helper database
In your Notion workspace, create a new database. Name it something like “User Helper.” Add a text property called “Email.” Create exactly one row in this database. In that row, enter the email address of the current user (for example,john@example.com). This row will be updated manually by each user when they want the filter to apply to them. - Add a rollup property in the main database
Open your main database. Add a new property of type “Rollup.” Name it “Current User Email.” Set the rollup to pull from the “User Helper” database. Choose the “Email” text property as the source. Set the rollup aggregation to “Show original.” This rollup will display the email address from the single row in the helper database. - Create a formula property to compare persons
Add another property of type “Formula.” Name it “Is Current User.” In the formula editor, enter the following formula:prop("Person") == prop("Current User Email"). Replace “Person” with the exact name of your person property. Replace “Current User Email” with the exact name of your rollup property. This formula returns true when the person assigned matches the email in the helper database. - Change the formula output to a checkbox
By default, a comparison formula returns true or false as text. To use it in a filter, convert the output to a checkbox. Wrap the formula in anif()statement:if(prop("Person") == prop("Current User Email"), true, false). This makes the property show a checked checkbox when true and an empty checkbox when false. - Create a filtered view
Click the “Add a view” button in your main database. Name the view “My Items.” Add a filter: select the “Is Current User” property, set the condition to “is checked.” The view now shows only rows where the formula returns true — that is, only rows assigned to the email in the helper database. - Save the view as the default
Close the database and reopen it. The “My Items” view should be active. To make this the default view for the current user, click the view name dropdown and select “Set as default view.” Each user must repeat the process: update the helper database with their email, create their own view, and set it as default. The default view is per Notion account, not per workspace.
Common Issues and Workarounds
Even with correct setup, you may encounter problems. Below are the most frequent issues and how to resolve them.
Formula Returns False for All Rows
If the formula always shows false, check that the person property contains an email address. Person properties in Notion store the user’s name and email. The formula compares the full person object to a text string. This mismatch causes the comparison to fail. To fix this, extract the email from the person property using the email() function. Change the formula to: email(prop("Person")) == prop("Current User Email"). This extracts the email part and compares it to the text value.
Rollup Shows No Value
If the rollup property displays nothing, ensure the helper database has exactly one row. If there are multiple rows, the rollup may show an error or an empty value. Also confirm that the rollup source property name matches exactly. Rename the text property in the helper database to “Email” and update the rollup configuration.
Filtered View Shows Wrong Data After Changing User
When a different user logs in and updates the helper database row with their email, the rollup updates automatically. However, the filtered view may still show the previous user’s data until the page is refreshed. Instruct each user to refresh the browser tab after changing the email in the helper database.
Formula-Based Filter vs Manual Filter: Comparison
| Feature | Formula-Based Filter | Manual Filter |
|---|---|---|
| Setup time | 15 minutes initial, then per-user email update | 30 seconds per view |
| User-specific | Yes, after updating helper database | No, same filter for everyone |
| Maintenance | Low after initial setup; email must be kept current | None, but users must reapply filter each time |
| Scalability | Works for any number of users with one helper database | Each user must create their own view manually |
| Error prone | Formula must be correct; helper database must have one row | Low risk of error |
The formula-based approach is best for teams where each member needs to see only their own data without manual filtering. The manual method is simpler for small teams or temporary use cases.
You can now set up a Notion database view that automatically filters for the current user. The key steps are creating a helper database with a single email row, adding a rollup and a formula that compares the assigned person to that email, and then filtering by the formula checkbox. Remember to use the email() function in the formula to avoid person-object mismatch. For advanced setups, consider using a button property that lets users update the helper database email with one click, eliminating the need to manually edit the helper database row.