Published on  September 30, 2026 / 3 min read

How to Create a Client Portal With the Right Permissions

How to Create a Client Portal With the Right Permissions

Client portal permissions decide which records each person can see and what they can do with them. The core rule is simple: every client sees only their own data. Getting it right takes more than hiding rows in the interface. Permissions have to be enforced on the data itself, account by account, role by role, including the people inside your own team.

The three layers of portal permissions

1. Tenant scoping: which client

Every record belongs to a client account (a tenant), and every portal user belongs to one account. All queries are filtered by that account automatically. This is the layer that prevents cross-client leaks.

2. Roles inside a client: who at the client

A client's finance lead should see invoices; a project contributor may not. Common roles are client admin, client member and client viewer.

3. Internal roles: who on your team

Account managers see their clients, support sees tickets, finance sees billing, and admins configure the portal.

How to set up client portal permissions

Step 1: Add a client ID to every table

Projects, documents, invoices, tickets and users each carry a client account ID. Records without one should not be visible in the portal.

Step 2: Enforce the filter on the server

Apply "client ID = current user's client ID" in the data query or the platform's permission rules, not as a visual filter a user could remove. If your database supports row-level security, such as PostgreSQL RLS, it adds a second layer.

Step 3: Define client roles

RoleViewCreate/editManage
Client adminAll account records, invoicesRequests, approvals, uploadsInvite and remove users
Client memberRecords they are assigned toComments, uploads, requestsNone
Client viewerShared reports and documentsNoneNone

Step 4: Restrict fields, not just rows

Hide internal notes, margins, cost prices and staff-only statuses from portal users even on records they can see.

Step 5: Secure actions

Check permissions on every action, such as approve, upload, pay or delete, on the server. A hidden button is not a permission.

Step 6: Handle files

Uploaded files inherit the permissions of the record they belong to. Avoid public file links; use expiring, authenticated URLs.

Step 7: Set up internal access

Limit account managers to their own clients, and log when staff view client records.

Step 8: Test for leaks

Create two test clients and try to reach one's data as the other: change IDs in URLs, call the API directly, search globally and open shared file links. Repeat after every major change.

Common permission mistakes

  • Filtering by client in the interface only.
  • Guessable record IDs in URLs with no server-side check.
  • Public file links that never expire.
  • One shared login per client company.
  • Internal notes stored in fields visible to clients.
  • Forgetting to remove access when a client contact leaves.

Client portal permissions checklist

  • Every table has a client ID, and every portal query filters by it on the server.
  • Client roles are defined and assigned per user.
  • Sensitive fields are hidden from portal roles.
  • Actions are authorized on the server.
  • Files are private and linked to records.
  • Staff access is scoped and logged.
  • Leak tests pass for two test clients.
  • Offboarding removes portal access.

Build a permission-safe portal with Jet Admin

Jet Admin builds client portals on your existing data, across 200+ integrations queried in place. External users sign in and see only their own rows, with scoping enforced by the platform rather than the page layout. Roles can be set inside each client account and for your internal team, down to fields and actions. SSO, granular permissions and audit logs are on the Business plan and above, and unlimited users on every plan keeps costs flat as you add clients. See client portal templates to start from a layout, or our guide to client portal design.

Frequently asked questions

How do I make sure clients only see their own data?

Tag every record with a client ID and enforce a server-side filter on every query, file and action, then test by trying to access one test client's data as another.

What roles should a client portal have?

Usually client admin, client member and client viewer on the client side, plus account manager, support, finance and admin on your side.

Is row-level security needed for a client portal?

It is strongly recommended. Whether through the database or the portal platform, permissions must be enforced on data, not just the interface.

Should each client share one login?

No. Individual logins let you assign roles, remove access when people leave and see who did what.

Share data with clients, not between them

Start with Jet Admin for free and build a client portal with permissions enforced on your data.

What is Jet Admin

Jet Admin is the AI app builder for turning your existing data into real business software — no code required. Describe what you need, and Jet's AI Builder instantly generates the app, connected to your live database or API, with role-based access and audit logs already built in.

Teams use it to build everything from admin panels and internal tools to CRMs, customer portals, and inventory systems — on the data they already have, with no per-seat fees and no migration required.

Get started free→