---
title: 'How to Build a Client Portal with Airtable and Softr'
description: 'Build a branded client portal — Airtable backend, Softr frontend, user authentication, row-level permissions, file sharing, and project visibility.'
canonical_url: 'https://www.business-automated.com/tutorials/build-client-portal-airtable-softr'
md_url: 'https://www.business-automated.com/tutorials/build-client-portal-airtable-softr.md'
last_updated: 2026-09-09
---

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](/airtable-consultant) as the backend and [Softr](https://www.softr.io/) 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](/tutorials/how-to-build-client-portal-airtable-softr).

## 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 |
| --- | --- |
| **Email** | 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

1. In Softr, click **Create New App** and choose a Client Portal template (or start blank).
2. **Settings → Data sources → Connect Airtable.**
3. Authenticate with your Airtable account and grant access to the workspace.
4. Pick the bases you'll use.
5. Softr generates internal data references for every table.

## Step 3: Set Up User Authentication

1. In Softr, go to **Users → User groups**.
2. Create a user group called **Clients**. Source = Airtable, Table = Clients, Email field = Email.
3. Add a Login page and a Sign Up page to your Softr app (most templates include them).
4. 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:

1. Click the block to edit.
2. Open **Filters**.
3. 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:

1. Add a **Form block** to the Files page.
2. Configure it to create a new record in the Files table.
3. Map the File attachment field to a Softr file-upload input.
4. Set hidden field defaults: `Client = Logged-in User`, `Uploaded At = Now()`, `Status = "Pending Review"`.
5. 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](/tutorials/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:

1. **Test as Client A.** Log in, browse every page. Verify you see only Client A's data.
2. **Test as Client B.** Log in, browse every page. Verify zero overlap with Client A.
3. **Test as a logged-out user.** Verify protected pages redirect to login.
4. **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.
5. **Test file uploads.** Confirm uploaded files land on the right client's record.
6. **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](/tutorials/how-to-build-crm-in-airtable), [client onboarding with Make](/tutorials/automate-client-onboarding-airtable-make), [reporting dashboards guide](/tutorials/airtable-client-reporting-dashboards), and [permissions guide](/tutorials/how-to-setup-airtable-permissions). For a custom client portal build done by our team, [get in touch](/contact).


## Sitemap

See the full [sitemap](/sitemap.md) for all pages.
