Skip to main content

For agencies, freelancers and B2B teams

Give every client a private status page, powered by the Sheet you already update.

Agencies, freelancers, print shops and B2B suppliers track projects and orders in Google Sheets. FlexTable shows each logged-in client only their own rows, like project stages, deliverables, invoices and delivery dates, so you stop answering "any update?" emails.

Free on WordPress.orgNo coding30-day money-back guarantee
Synced from Client tracker 2026 · Google Sheets
Signed in as jordan@northwind.coOnly your rows
Your projectsSearch…
ProjectStageNext milestoneInvoice
Website redesignIn reviewNov 20Paid
SEO retainerIn progressMonthly report, Dec 1Due Nov 30
Brand refreshScheduledKickoff, Jan 8Not issued
Showing 3 of 3 entries123
Rows for 37 other clients are hidden

Sound familiar?

Your tracker is up to date. Your clients just can't see it.

Half my inbox is clients asking for a status update I already wrote in a spreadsheet.
The agency owner
I can't share the tracker sheet because every client is in it.
The project manager
Proper client portal software costs more than the problem it solves.
The freelancer

How it works

A client portal in three steps

No new project management tool. Keep updating your Sheet; FlexTable shows each client their slice of it.

1

Track work in one Google Sheet

One row per project, order or deliverable, with a column for the client's email or username.

2

Turn on User-Specific Display

Match rows to the logged-in WordPress user by email, username or name.

3

Give clients a login

Each client signs in and sees only their own rows. Everyone else gets a login prompt.

User-Specific DisplayPro

One Sheet, a private view for every client

FlexTable compares the logged-in user with a column in your Sheet and shows only the matching rows. The search box is removed, so clients can't browse anyone else's records.

  • Match by username, email address or name
  • Clients with several projects see all of their rows
  • Values must match exactly, so emails work best
  • Update the Sheet and every client's view changes
Signed in as orders@brightprint.comOnly your rows
Your print ordersSearch…
OrderItemQtyStatus
#4471Business cards1,000Shipped
#4502Trade-show banner2Printing
#4519Flyers A55,000Awaiting proof
Showing 3 of 3 entries123
Orders from other customers are hidden
Search Only DisplayPro

Order tracking without logins

Not every customer needs an account. Publish a lookup page where customers enter an order or ticket number and see just that order's status, carrier and delivery date.

  • Search one column, like Order No.
  • Nothing shows until a valid number is entered
  • Status updates appear as soon as the Sheet changes
Track your orderEnter the order number from your confirmation email
10482Search
1 record found
ItemCustom oak desk
StatusOut for delivery
CarrierDHL Express
ExpectedNov 9, 2026
The full list stays hidden. Visitors only see the row that matches their search.
Login promptPro

Visitors who aren't signed in see a login prompt

Choose what non-logged-in visitors see: a custom login message with your own button text and URL, or no table at all. Your client data stays behind the login.

  • Custom message, button label and login URL
  • Or hide the table completely
  • Protected View for internal team tables
Client portal
Please sign in to see your projectsYour project status, files and invoices are private to your account.Sign in

Features that matter here

Everything a lightweight client portal needs

Live from your tracker

Update a row in the Sheet and the client's view updates. No double entry.

Match by email or username Pro

Use whatever identifier your Sheet already has. Emails are the most reliable.

Private by default Pro

Login prompt or hidden table for anyone who isn't signed in.

Projects and invoices in tabs Pro

Show several Sheet tabs, like Projects and Invoices, in one tabbed table.

Exportable Pro

Let clients download their own list as CSV, Excel or PDF.

Works on phones

Clients can check status from anywhere.

Also used for

Client portalsProject status pagesOrder trackingInvoice listsDelivery schedulesSupport ticket statusWarranty lookupMembership records

FlexTable Pro: MCP server

Or just ask your AI assistant to build it.

Connect Claude, ChatGPT (Codex), Cursor or VS Code to FlexTable through its MCP server. Describe the table you need, and your assistant syncs the Google Sheet, styles the table, manages its columns and publishes the page for you.

Works withClaude DesktopClaude CodeChatGPT (Codex)CursorVS Code
AI assistant · FlexTable MCP connected• Connected
Create a client status table from the "Client tracker 2026" Sheet, show each logged-in client only their own rows by email, and publish it on the Client Portal page.
Synced Google Sheet “Client tracker 2026”, 112 rows
Enabled User-Specific Display, match by email
Applied theme Brand
Published page /client-portal/
Done. Clients can sign in at /client-portal/ and see only their own projects.

Illustrative example of a FlexTable MCP session.

FAQ

Frequently asked questions

Answer "any update?" before they ask.

Turn your project or order tracker into a private client portal. Free to start.