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

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. 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 st

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.