Who Owns a Record Created from a Custom Frontend
Learn who Knack sets as the owner of a record when it's created by import, by the Knack MCP Server, or from a custom frontend, and why it matters for data access control.
What You'll Learn
Record ownership in Knack is set by the Owned By field, and who ends up as the owner depends on how the record was created. This article shows the owner you'll get from each method, when it affects what your users can see, and how to set the right owner when one user creates a record for someone else.
Who Owns a Record, by How It Was Created
| How the record was created | Owned By |
|---|---|
| CSV import in the Knack Builder | App Builder |
| Knack MCP Server, for example a frontend builder migrating data | App Builder |
| Custom frontend using the signed-in user's Knack session | The signed-in user |
App Builder is one of Knack's system users. It stands in for records that no signed-in user created.
Why Ownership Matters
Data access control can give a role different access to records it owns versus all other records. If a role can only see its own records, ownership decides what each user sees.
A record owned by App Builder isn't owned by any user. So if your users can only see records they own, they won't see migrated or imported records, even ones that belong to them.
If every role in your app has the same access to all records, ownership doesn't change what anyone sees.
Ownership isn't the same as a connectionA credential can be connected to a provider without being owned by that provider's user account. Access rules based on ownership look at Owned By, not at your connection fields.
Fixing Ownership on Migrated Records
If your access rules depend on ownership, update Owned By on migrated records after the move so each record belongs to the right user. You can do this with a batch update in the Knack Builder.
Plan this before you migrate. It's easier to decide who should own each record while you still have the source data in front of you.
When a User Creates a Record for Someone Else
When a signed-in user adds a record from your frontend on someone else's behalf, Knack sets the user who created it as the owner. The person the record is about doesn't become the owner automatically.
For example, if your front desk staff books an appointment for a patient, the appointment is owned by the front desk user, not the patient. If patients can only see records they own, that patient won't see their appointment.
To fix this, set Owned By to the person the record belongs to when it's created.
What needs to exist first
- The person must have a user account in Knack. A record can only be owned by a user.
- The record needs a way to identify that person, like a connection to their patient record or a field with their email.
Ask your frontend builder to set the owner
Here's a prompt you can give your frontend builder:
When a user submits a form that creates a record for another person, set that record's Owned By to the connected person's account.
On submit:
1. Take the email of the person connected to the new record.
2. Find the matching user account in Knack by that email.
3. Update the new record's Owned By field to that account.
If no matching account is found, don't guess. Show the user a clear message and leave Owned By unchanged.
When you're done, tell me which table and fields you used.
Check that it worked
- Sign in to your published app as the user who creates records for others, like a front desk user, and create a test record for a test patient.
- Open the table in the Knack Builder and check the Owned By column. It should show the patient, not the front desk user.
- Sign in as the test patient and confirm they can see the record.
For records that already exist, update Owned By with a batch update in the Knack Builder.
How to Check Who Owns a Record
Open the table in the Knack Builder and scroll to the Owned By column. Knack adds it to every table automatically.
Knack also tracks Created By and Updated By. These system fields are hidden by default. To see them, select the ... menu next to the table name, then select Show System Fields. The setting applies to one table at a time.
To test your frontend, add a record from your app while signed in, then find it in the Builder. Owned By should show the user you signed in as.
Check ownership before you rely on "own records" accessIf Owned By shows App Builder on records your users should see, those users will get empty screens. An empty screen can look like there's simply no data, so check the Owned By column directly.
Next Steps
- Understanding the Owned By Field explains the field itself and how Knack sets it.
- Data Access Control covers setting access for owned records and all other records.
- Multi-Tenant Apps with a Custom Frontend: Choosing the Right Setup shows how ownership fits into apps that serve several locations or clients.
- Migrating an Existing Base44 App to Knack shows where ownership fits in a full migration.
Updated 13 days ago

