Every services business eventually gets asked the same thing: "Can I see what's happening with my project?" Most agencies, consultancies, and ops teams handle this with weekly status emails, ad-hoc Loom videos, or one-off shared docs — and burn 4–6 hours/week on it. A real client portal replaces that hour-by-hour drip with a self-service experience clients actually like.
The fastest way to build one in 2026 is Airtable as the backend and Softr as the frontend. This guide is the full build: schema, authentication, row-level permissions, design, and the security checks that prevent data leaks. For our shorter overview, see how to build a client portal.
Why Airtable + Softr
Other portal-building options exist (Stacker, Noloco, Glide), but Softr wins for most client-portal use cases in 2026 because:
- Airtable-native. Deep integration that "just works" — no API glue code.
- Template library. Dozens of portal templates as starting points.
- Authentication and permissions built in. Logged-in-user filters are first-class.
- Polish out of the box. Designs look good without designer effort.
- Predictable cost. $29–$269/month covers most small-to-medium portal use cases.
You build a custom portal in code only when you have requirements Softr genuinely can't meet — pixel-perfect custom UI, complex multi-tenant logic, or a brand requirement for fully bespoke front-end.
Step 1: Design the Airtable Schema
Before touching Softr, get the Airtable schema right. A client portal typically needs:
| Table | Purpose |
|---|---|
| Clients | One record per client. The Softr user table. |
| Projects | One record per engagement, linked to Clients. |
| Tasks or Deliverables | Project-level work items. |
| Files | Documents shared with the client (or attached to Projects). |
| Invoices | Billing records, linked to Clients and Projects. |
| Messages (optional) | Client-portal communication log. |
Critical fields on every table
Every table that clients view must have a clear "who can see this?" field that maps to the Clients table:
- Projects.Client — linked record to Clients.
- Tasks.Client — formula or rollup from Projects → Client (so tasks inherit the client).
- Files.Client — same pattern.
- Invoices.Client — direct linked record.
The Client field is the security boundary. Every Softr block filters on it.
Clients table essentials
| Field | Purpose |
|---|---|
| The login identifier — required by Softr | |
| Name | Display name in the portal |
| Logo | Optional — for branded portal pages |
| Primary Contact | Single line text |
| Status | Active / Inactive / Archived — drives Softr access |
| Plan / Tier | If different clients see different features |
Step 2: Connect Softr to Airtable
- In Softr, click Create New App and choose a Client Portal template (or start blank).
- Settings → Data sources → Connect Airtable.
- Authenticate with your Airtable account and grant access to the workspace.
- Pick the bases you'll use.
- Softr generates internal data references for every table.
Step 3: Set Up User Authentication
- In Softr, go to Users → User groups.
- Create a user group called Clients. Source = Airtable, Table = Clients, Email field = Email.
- Add a Login page and a Sign Up page to your Softr app (most templates include them).
- Enable email login (Softr handles passwords; the password isn't stored in Airtable).
Now when a client signs up:
- Softr creates the password (stored in Softr's auth system).
- Their email matches a row in your Clients table.
- They're authenticated as a member of the Clients group.
For first-time users, the cleanest flow is to pre-create the Clients table row when a project is sold, then send the client a Softr invitation link.
Step 4: Build the Portal Pages
Most portals need three to five pages:
Dashboard (logged-in user's home)
- Welcome block with the client's name.
- List block: Active Projects filtered to
Project.Client = Logged-in User. - List block: Recent Files filtered to
File.Client = Logged-in User. - List block: Open Invoices filtered to
Invoice.Client = Logged-in User.
Projects page
- List block with all projects, filtered to logged-in user.
- Each row links to a Project Detail page.
Project detail page
- Detail block showing project name, status, dates, summary.
- List block: Tasks filtered to the project.
- List block: Files filtered to the project.
Files page
- List block of all files, filtered to logged-in user.
- File names link to download/preview.
- Form block for uploading new files back to the client's File records.
Invoices page
- List block of invoices, filtered to logged-in user.
- Status badges (Paid, Outstanding, Overdue).
- Link to PDF or to a Stripe payment link.
Step 5: The Logged-In-User Filter
This is the single most important setup step. On every list and detail block:
- Click the block to edit.
- Open Filters.
- Add a filter:
<Client field> equals Logged-in User → Email.
If the filter is missing on any block, that block leaks data — every client sees every other client's records. Verify this on every page before launch.
Linked-record auth (alternative)
For more complex setups, instead of matching emails, link the Clients table row to the logged-in user via Softr's user record and filter on the linked record. Slightly more robust against email-collision edge cases. Use whichever Softr's current templates default to.
Step 6: File Uploads (Two-Way)
To let clients upload files back through the portal:
- Add a Form block to the Files page.
- Configure it to create a new record in the Files table.
- Map the File attachment field to a Softr file-upload input.
- Set hidden field defaults:
Client = Logged-in User,Uploaded At = Now(),Status = "Pending Review". - Save.
On submit, the file uploads to Airtable's attachment field and the record appears in your operations view immediately.
Step 7: Notifications
Connect the portal to your operations workflow with Airtable automations:
- New file uploaded by client: Slack notification to the account manager.
- Invoice marked Overdue: Email to client with a payment link.
- Project status changes to Complete: Email to client with a satisfaction survey.
See our Airtable automation guide for the full pattern library.
Step 8: Brand the Portal
Softr's design controls cover most branding needs:
- Logo and favicon.
- Color scheme matching your brand.
- Custom fonts (Google Fonts library).
- Custom domain (portal.yourcompany.com) — set up via your DNS.
For per-client white-labeling (each client sees their own logo), use the Clients table's Logo field as the page header source — Softr renders it dynamically.
Comparison: Softr vs Alternatives
| Tool | Strengths | When to Choose |
|---|---|---|
| Softr | Airtable-native, polished templates, easy auth | Most client portal use cases |
| Stacker | Deeper relational logic, more dev-friendly | Complex permissions, more custom UI |
| Noloco | More flexible blocks, better forms | Mid-complexity with non-standard requirements |
| Glide | Mobile-first, broader data sources | Mobile-primary use cases |
| Custom (Next.js + Airtable API) | Total control | Production SaaS where portal is product |
For 90% of services-business client portals, Softr is the right answer.
Security Checks Before Launch
The single most important pre-launch checklist:
- Test as Client A. Log in, browse every page. Verify you see only Client A's data.
- Test as Client B. Log in, browse every page. Verify zero overlap with Client A.
- Test as a logged-out user. Verify protected pages redirect to login.
- Test the URL manipulation attack. As Client A, copy the URL of a Project Detail page, modify the record ID in the URL, and try to access Client B's project. Softr's filters should block this.
- Test file uploads. Confirm uploaded files land on the right client's record.
- Test password reset. Confirm the flow works end-to-end.
If any of these fails, do not launch. Fix the leak and re-test.
Common Mistakes
Mistake 1: Forgetting the logged-in-user filter on a block. The most common security mistake. Audit every block.
Mistake 2: Storing client passwords in Airtable. Don't. Softr manages auth — Airtable should only hold profile data.
Mistake 3: Granting Airtable workspace access to clients. Defeats the point. Clients access via Softr only.
Mistake 4: One Clients table that mixes prospects and current clients. Use Status to filter, or split tables. Prospects shouldn't see portal pages.
Mistake 5: Launching without monitoring. Set up an automation that alerts you if a client logs in for the first time, uploads a file, or hits a 404 — catch UX issues early.
Troubleshooting
Client can't log in. Email doesn't match the Clients table (case sensitivity, typos), or the password reset email went to spam.
Client sees an empty dashboard. The logged-in-user filter is too strict — maybe filtering on a field that's empty for that client. Test the filter against a known record.
File upload fails. File too large (Softr/Airtable have limits), or the field mapping is wrong. Confirm the form block's field is mapped to an Attachment field in Airtable.
Page loads slowly. Softr fetches data on every page load. For large tables (1000+ rows), use Softr's pagination or filter aggressively.
Two clients with the same email. Email is the login key — duplicates break auth. Add validation on the Clients table to prevent this.
Next Steps
A working client portal is one of the highest-ROI builds a services business can ship — it eliminates a recurring weekly time sink and improves client satisfaction in ways clients notice. Once the portal is live, the natural extensions are:
- Adding a messaging or comment layer for in-portal communication.
- Connecting the portal to your billing system for self-service invoice payment.
- Adding a knowledge base or onboarding library scoped per client tier.
For broader patterns, see our build CRM in Airtable guide, client onboarding with Make, reporting dashboards guide, and permissions guide. For a custom client portal build done by our team, get in touch.