Record Ownership: Each User Sees Only Their Own
Point a table at the link that says who owns a record, and each portal user sees only their rows. Works through lookups too, for tables that reach your user table indirectly.
This is the question every client portal has to answer on day one: how do I make sure client A never sees client B's records?
Record ownership answers it structurally, using the links already in your base.
What it does
Per table and per role, record visibility is one of two settings:
- Only their own records: each signed-in user sees the rows they own
- Everyone: the table shows all records the role's other permissions allow
Ownership is defined by an ownership field, which is the linked-record field pointing at your user table. When a table has more than one such link, Owner and Assignee for example, pick the one that decides: left alone, the first link in Airtable field order is used.
Why it matters
The alternative approaches all leak eventually. Separate views per client multiply with every new client. A filter on a client name field breaks the day two clients share a name or someone edits the cell. A portal per customer is a portal per customer.
Ownership scopes by identity instead. The signed-in user is a row in your user table, and the link is what ties a record to that row, so the rule holds however many clients you add and whatever they are called.
Because it is enforced before records are sent to the browser, an unowned record is not filtered out on screen. It never arrives.
Ownership through a lookup
Not every table links to your user table directly. A Structures table might link to Cities, and Cities to Members, so the person is two hops away.
A table can own records through an Airtable lookup field that reaches the user table indirectly, which means an indirectly linked table can still be scoped per user without adding a denormalized link column to your base.
A lookup is never selected for you. You opt into it explicitly, because a lookup reaching the user table by accident is exactly the kind of thing that should not silently become a permission.
How it works
Set record visibility on the table's Access tab, per role, and pick the ownership field. Then open the portal as a real user and confirm you see their rows and only their rows.
Ownership composes with the rest: it narrows to the user's records, and a record filter can narrow further to, say, the ones still open. The record ownership guide covers both, including the lookup case.
Who it is for
Anything where the data is per person: freelancer portals, client portals, sales rep portals where each rep works their own accounts, and membership portals where a member sees their own record and nobody else's.
Try it on your own base
Connect Airtable, build a portal, and share it. Seven days free, no card needed.
Related guides and examples
Record Filtering: Show Only the Rows That Apply
Set conditions on any portal table so a role only ever sees the records that match, with values that can resolve from the person looking. Composes with record ownership and role permissions.
FeaturePortal Logins Without Airtable Seats or Passwords
Portal users sign in with their email address and a 6-digit code. They never need an Airtable account, a CollabPortals account, or a password.
Use caseFreelancers
Give freelancers and contractors a self-service portal to manage their profiles, track projects, and log timesheets, all powered by your Airtable base.
GuideNew Feature: Rename the Words Your Airtable Portal Uses
Set what one row is called on any table and your portal rewrites itself around it, from the create button to the delete prompt to the empty state.