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.
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.
You will see a gallery of eight portal templates. Each one is designed for a specific business type.
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
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
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.
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.
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
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.
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
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
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
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
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 | |
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 |
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/... |
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
For document URLs, paste the shareable link from Google Drive. Set the sharing to Anyone with the link can view.
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.
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.
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.
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.
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.
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.
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.
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
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.
You will see the portal exactly as your client sees it when they click their private link.
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.
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]
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
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.