DEV Community

Allen Jones
Allen Jones

Posted on Originally published at sheetrocket.com

How to Create a Client Portal for Your Agency or Freelance Business Using Google Sheets

Most agencies and freelancers share project updates the same way. They send an email. The client replies asking for the invoice.
Another email. The client asks where the latest design file is. Another email.

By the end of a project, there are forty email threads, three different shared Google Drive folders, and a client who still does not know what stage the project is at.

A client portal fixes this. Instead of scattered emails, your client gets one private link. They open it and see everything in one
place. Project status, milestones, documents, invoices, and recent activity. No login. No account to create. Just a clean, professional
dashboard that makes you look like you built something custom for them.

This tutorial shows you how to set one up
using SheetRocket and a Google Sheet in under 30 minutes.


What You Will Build

A private client portal with:

  • A dashboard overview with key project stats
  • A project milestones tracker
  • A documents section with download links
  • An invoice history with payment status
  • A recent activity feed
  • A message form to contact you
  • A private link that only your client can access

Your client never sees a spreadsheet. They see
a professional application-style dashboard. You
manage everything from a Google Sheet you already know how to use.


What You Will Need

  • A free Sheetrocket account
  • A Google account
  • 30 minutes

No code. No database. No authentication system to build.


Why Google Sheets as the Backend

The question most people ask first is why
not just use Notion or a proper project
management tool.

The answer is control and simplicity. With a Google Sheet, you own the data completely. You can structure it exactly how your business works. You can share edit access with a team member. You can have multiple sheets for multiple clients, all managed from one place you already know.

Most importantly, your client never needs to learn a new tool. They visit their private link and see their information.
That is the entire client experience.


Step 1: Copy the Client Portal

Google Sheet Template

Sheetrocket provides a ready-made Google
Sheet template for the Agency Client Portal.
It has five tabs with the right structure already set up.

Go to sheetrocket.com
and sign up for free.

Sheetrocket Landing Page

Screenshot of the Sheetrocket signup page


Once you are in your dashboard, click
Pages in the left sidebar. Then click the Portals tab at the top of the page.

Click New portal.

Screenshot of the Pages page with the Catalogues and Portals tabs visible, Portals tab selected

You will see a gallery of eight portal templates. Each one is designed for a specific business type.

Screenshot of the portal template gallery showing Agency Client Portal, Freelancer Project Portal, Property Management Portal, Coaching Portal, and others

The available templates are:

Agency Client Portal
Freelancer Project Portal
Property Management Portal
Coaching Client Portal
Accountant Client Portal
Legal Client Portal
Wedding Planner Portal
Personal Trainer Portal
Enter fullscreen mode Exit fullscreen mode

Click Agency Client Portal.


Step 2: Name Your Portal

You will be asked for two things: a portal name and an optional client name.

Portal name:   Acme Corporation Portal
Client name:   Acme Corporation
Enter fullscreen mode Exit fullscreen mode

The portal name is for your own reference
in the Sheetrocket dashboard. The client name appears in the portal itself as a personalised greeting for your client.

Screenshot of the portal naming step with Portal name and Client name fields filled in


Screenshot of portal created confirmation modal

You will also see an offer to copy the Agency Client Portal Google Sheet template. Click Copy Google Sheet template. This
opens a pre-structured Google Sheet in your Google Drive with sample data already filled in across five tabs.

Screenshot of the starter sheet offer with Copy Google Sheet template button highlighted

Click Create portal.


Step 3: Your Portal Is Ready

After creating the portal, you will see a
success screen. This is the most important
screen in the entire setup.

SheetRocket has automatically generated a
unique private link for your client. It
looks like this:

acmecorporation.sheetrocket.site?token=xK9mP2qR4nL7vB2w
Enter fullscreen mode Exit fullscreen mode

Screenshot of the success screen showing the private link prominently with a Copy client link button

Copy this link and keep it safe. This is
the only way your client can access their portal. Anyone who visits the URL without the token at the end sees an Access Denied
page. Your client's data is private by default.

Click Open in editor to continue
setting up the portal.


Step 4: See What Your Client Will See

The editor shows your portal exactly as your client will see it. It is pre-loaded with sample data so you can immediately see what the finished portal looks like.

Screenshot of the portal editor showing the agency portal with sidebar navigation, welcome header, stats row, and preview sections

The portal has a professional layout with:

A sticky header showing your agency
name and the client's name.

A left sidebar with navigation links:

Overview
Project
Documents
Invoices
Activity
Messages
Enter fullscreen mode Exit fullscreen mode

An overview dashboard showing:

Four stat cards:
  Project progress percentage
  Next deadline date
  Balance due
  Milestones completed out of total

A project progress bar

Recent milestones preview

Recent documents preview

Recent invoices preview

Recent activity preview
Enter fullscreen mode Exit fullscreen mode

Each preview section shows three items with a View all link. Clicking View all or any sidebar link takes your client to the full list for that section.

This is the experience your client
gets from a single Google Sheet.


Step 5: Fill In Your Client's

Google Sheet

Go to the Google Sheet you copied in
Step 2. You will find five tabs:

Projects
Milestones
Invoices
Documents
Updates
Enter fullscreen mode Exit fullscreen mode

Replace the sample data with your
real client's project information.

Projects tab:

Client     | Project          | Status      | Progress | Amount  | Start Date  | Deadline    | Notes
Acme Corp  | Website Redesign | In Progress | 75%      | $2,400  | Aug 1 2026  | Sep 5 2026  | Two revision rounds completed
Enter fullscreen mode Exit fullscreen mode

Milestones tab:

Client     | Project          | Milestone              | Status      | Due Date    | Completed Date | Notes
Acme Corp  | Website Redesign | Discovery and planning | Complete    | Aug 5 2026  | Aug 4 2026     | Brief signed off
Acme Corp  | Website Redesign | Wireframes and design  | Complete    | Aug 15 2026 | Aug 14 2026    | Two revisions done
Acme Corp  | Website Redesign | Development            | In Progress | Aug 28 2026 |                | Homepage done
Acme Corp  | Website Redesign | Testing and launch     | Pending     | Sep 5 2026  |                |
Enter fullscreen mode Exit fullscreen mode

Invoices tab:

Client     | Invoice  | Description              | Amount  | Status  | Due Date    | Paid Date
Acme Corp  | INV-001  | Website Design Phase 1   | $1,200  | Paid    | Aug 1 2026  | Jul 30 2026
Acme Corp  | INV-002  | Website Design Phase 2   | $1,200  | Pending | Aug 30 2026 |
Enter fullscreen mode Exit fullscreen mode

Documents tab:

Client     | Document Name      | Type     | Date Added  | URL                              | Notes
Acme Corp  | Project Proposal   | Proposal | Aug 1 2026  | https://drive.google.com/...     |
Acme Corp  | Brand Guidelines   | Design   | Aug 12 2026 | https://drive.google.com/...     |
Acme Corp  | Contract Agreement | Legal    | Aug 1 2026  | https://drive.google.com/...     |
Enter fullscreen mode Exit fullscreen mode

Updates tab:

Client     | Date        | Title                        | Description                          | Category    | Author
Acme Corp  | Aug 21 2026 | Homepage development complete | Ready for your review.               | Development | Allen
Acme Corp  | Aug 19 2026 | Design revisions applied      | All feedback incorporated.           | Design      | Allen
Acme Corp  | Aug 15 2026 | Review call completed         | Wireframes approved. Moving forward. | Meeting     | Allen
Enter fullscreen mode Exit fullscreen mode

For document URLs, paste the shareable link from Google Drive. Set the sharing to Anyone with the link can view.

Screenshot of the Google Sheet with all five tabs visible and real client data filled in


Step 6: Connect the Sheet to Your Portal

Go back to the SheetRocket portal editor.
You will see a banner at the top of the
canvas saying the portal is showing
sample data.

Click on any widget block in the canvas
to open its settings in the left panel.
Click the Data tab.

Screenshot of the left panel Data tab showing the sample data banner and Add data source button

You need to share your Google Sheet with the SheetRocket service account email before connecting it.

Find the service account email in the
Data tab. Click on "Add Data Source" for a modal to appear. You'll see the Google service account. Copy it. Go to your Google
Sheet and click Share. Paste the
service account email. Set permission to Viewer. Click Share.

Screenshot showing google service account email



Screenshot of the Google Sheets share dialog with the service account email pasted in and Viewer permission selected

Now copy the URL of your Google Sheet
from your browser. Paste it into the
Google Sheet URL field in the SheetRocket modal that opens. Click Connect.

Screenshot of the modal with the sheet URL pasted in and the Connect button visible

SheetRocket reads your sheet automatically
and runs auto-mapping to match your columns
to the portal fields. You will see a success
message showing how many columns were mapped automatically.

The canvas will update immediately to show
your real client data instead of sample data.

Screenshot of the portal canvas showing real client data: Acme Corporation, real project name, real milestone statuses

You will need to connect each widget block
separately to the correct tab in your sheet. The milestones block connects to the Milestones tab. The invoices block connects to the Invoices tab. And so on.


Step 7: Configure Access Settings

Click the Access button in the top bar
of the editor. This opens the portal access
settings panel.

Screenshot of the editor top bar with the lock icon Access button highlighted

You will see three access options:

Private link (recommended)
  Only people with your unique link 
  can access the portal.
  This is the default.

Password protected
  Visitors must enter a password.
  Good for extra security.

Private link and password
  Both required for maximum security.
  Best for sensitive financial or 
  legal data.
Enter fullscreen mode Exit fullscreen mode

For most agency use cases, private link is sufficient. Your client receives the link. They click it and see their portal.
Anyone else who tries to access the URL without the token sees an Access Denied page.

Screenshot of the Access settings panel showing the three access type options with Private link selected

The private link is shown in the panel with a copy button. This is the same link from the success screen in Step 3.

If you ever need to invalidate the link
and generate a new one, click Generate new link. Your client will need the updated link to access their portal again.


Step 8: Customise the Portal Branding

The portal shows your agency name in the header by default. To add your logo and adjust the colors, click the portal settings.

In the editor, find the portal config settings. You can set:

Agency name:     Your studio or company name
Agency logo URL: Link to your logo image
Primary color:   Your brand color
                 Used for active sidebar 
                 items and accents
Contact email:   Where client messages go
                 when they use the Messages
                 section
Enter fullscreen mode Exit fullscreen mode

Screenshot of the portal branding settings with agency name, logo URL, and primary color fields

On the Pro plan the SheetRocket branding
in the portal footer is removed. On the
Agency plan you can white label the portal
completely with your own branding.


Step 9: Preview the Portal as

Your Client

Click the Client view button in the top bar of the editor. This opens the published portal URL with your access token automatically included.

Screenshot of the top bar with the Client view button shown

You will see the portal exactly as your client sees it when they click their private link.

Screenshot of the published portal showing the sticky header with agency name, left sidebar navigation, welcome message, stats row with four cards, and preview sections

Click through the sidebar navigation:

Overview shows the dashboard with stats, progress bar, and preview sections.

Project shows the full milestones list with status badges and due dates.

Documents shows all documents with download links.

Invoices shows all invoices with
paid and pending status badges.

Activity shows the full chronological
activity feed.

Messages shows a simple form to
contact you directly.


Step 10: Share the Portal

with Your Client

Go back to your SheetRocket dashboard and
click Sites, then the Portals tab.
Find your portal card.

Screenshot of the Portals list showing the Acme Corporation Portal card with client name, Private link badge, and Copy client link button

Click Copy client link. Send it to
your client in an email.

Here is a simple email template that works:

Subject: Your project portal is ready

Hi [Client name],

I have set up a private project portal 
for you where you can track everything 
happening with your website redesign.

Your portal link:
[paste the private link here]

Bookmark this link. You can check it 
anytime for project updates, milestone 
status, documents, and invoices.

If you have any questions, use the Messages section in the portal and 
I will get back to you.

[Your name]
Enter fullscreen mode Exit fullscreen mode

When your client clicks the link, they see their portal immediately. No account creation. No password unless you set one. Just their private dashboard.


What Happens When the Project Updates

Every time something changes on the project, you update your Google Sheet. The portal updates automatically.

A milestone is completed:

Change the Status from In Progress to Complete in the Milestones tab. Add the completed date. The milestone shows with a green checkmark in the portal.

An invoice is sent:

Add a new row to the Invoices tab. Set Status to Pending. The invoice appears in the portal immediately.

A document is ready:

Add a row to the Documents tab with the file name and the Google Drive shareable link. The document appears in the portal with a Download button.

A project update happens:

Add a row to the Updates tab with the date, title, and description. It appears in the activity feed in chronological order.

Your client can visit their portal at any time and see the current state of their project. No email needed from you.
No status call required. Everything they need is in one place.


Managing Multiple Clients

If you have ten clients, you create ten portals. Each portal connects to its own Google Sheet. Each portal has its own private link.

On the SheetRocket Agency plan at
$39/month, you get unlimited portals.
All ten clients are managed from one
SheetRocket account.

Compare this to alternatives:

Building a custom portal:   $5,000 to $20,000
Basecamp:                   $99/month minimum
Softr:                      $49/month minimum
SheetRocket Agency:         $39/month flat
                            unlimited clients
Enter fullscreen mode Exit fullscreen mode

The math works in your favour the moment
you have more than one client.


Adding Password Protection for

Sensitive Clients

For clients who share sensitive financial
or legal information, you can add a password on top of the private link.

Go to the Access settings panel in the
editor. Select Private link and password.
Enter a password. Click Save.

Send your client their private link and their password separately. When they open the link, they see a password gate page. They enter the password once, and the portal opens. Sheetrocket remembers their access for seven days via a secure cookie.


Final Thoughts

A client portal changes the dynamic of client relationships. Instead of your client feeling in the dark between emails, they have a place they can go at any time to see exactly what is happening.

It also reduces the back-and-forth that takes up your time. Where is the invoice? Check the portal. What stage are we at? Check the portal. Can I download the latest file? Check the portal.

SheetRocket builds the portal from a Google Sheet you are already maintaining. There is no new system to learn. No data to migrate. You update the spreadsheet the way you always have. Your client sees the result in their portal.

Start free at
sheetrocket.com.
The free plan includes one client portal.
Upgrade to Pro at $19/month for unlimited
portals with no SheetRocket branding.


Allen Jones is the founder of SheetRocket,
a tool that turns Google Sheets into websites,
embeddable widgets, client portals, and REST
APIs. Building in public from a small town in Ghana.

Top comments (1)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.