Blog · July 10, 2026 · ~10 min read
Shared Google Sheet vs. HourTab for retainer client visibility: five problems with spreadsheets as client dashboards
Sharing a Google Sheet with a retainer client is the zero-cost solution to the hours visibility problem. It works, to a point. After that point — usually around the second or third client, or after the first accidental edit — the problems compound faster than the spreadsheet can absorb them.
What a shared Google Sheet can do
A shared Google Sheet gives your retainer client visibility into their hours at no additional cost. You build a tracker with columns for date, task description, and hours. You add a formula that sums the hours column. You add the monthly cap in a separate cell. You add a formula that computes hours remaining: cap minus total. You share the sheet with your client using “Viewer” access and send them the link.
This setup is free, infinitely customizable, requires no new tool subscription, and many clients are comfortable with Google Sheets. For a freelancer with one or two retainer clients who are spreadsheet-comfortable, sharing a Google Sheet is a completely reasonable approach. The baseline functionality covers the most important need: the client can check their hours without emailing you.
The problems with this setup are structural. They do not appear in the first week. They accumulate over time, across clients, and specifically at the moments when client communication is most important.
Problem 1: Clients accidentally edit the sheet
Google Sheets has two sharing modes for external viewers: “Viewer” (read-only) and “Editor” (read-write). Viewer access is what you want for clients. But Google’s sharing dialog defaults to “Editor” when you add a specific person, and even when you share with “Viewer” access, some clients attempt to edit the sheet anyway — a “commenter” permission is often misunderstood as allowing edits.
The more dangerous failure mode is when you share the sheet incorrectly. A freelancer managing three clients under time pressure sends the wrong sharing permission on one of them. The client opens the sheet and starts typing in the hours cells — not maliciously, but because they want to add a note or think they should record something. Your billing records are now corrupted. You will not notice until you generate an invoice from the sheet and the totals don’t match your time tracker.
There is no permission level in Google Sheets that gives a client read-only access to specific cells while preventing them from even attempting edits. Protected ranges help, but they generate confusing error messages for clients who try to edit, which creates a support question for you.
With HourTab, the client URL is read-only by construction. There is no edit mode, no edit button, no sharing permission to misconfigure. The URL is a view. The client cannot alter the data.
Problem 2: Spreadsheets show numbers, not progress bars
A cell that reads “8” and a label that reads “Hours remaining” convey the same information as a progress bar showing “8 of 20 hours remain.” But they do not create the same experience for the client.
A progress bar communicates retainer status visually and immediately. The client does not need to read a label, locate the correct cell, interpret the number relative to the cap, and construct a mental picture of where they stand. The bar’s fill state tells them instantly: mostly used, half used, mostly remaining. This matters most when the client is checking from a phone, from a meeting room, or from a context where they have 10 seconds of attention to spare.
Google Sheets does have a SPARKLINE function that can approximate a progress bar in a cell. You can also insert a chart. But building a progress-bar-style display in a spreadsheet that renders cleanly on mobile, loads quickly, and does not require the client to scroll or zoom requires significant design effort — and the result still lives inside a Google Sheets interface rather than a purpose-built dashboard.
HourTab’s URL displays a proper progress bar as the first element the client sees. The visual progress and numeric summary are the entire point of the interface — nothing competes with them for attention.
Problem 3: Cycle resets require manual intervention
A retainer billing cycle resets on the first of every month, or on the anniversary of the retainer start date, or on whatever schedule you and your client agreed. When the cycle resets, the “hours used” count starts over at zero and the “hours remaining” count returns to the full cap.
In a spreadsheet, this reset requires you to do something: clear the hours entries from the previous cycle, or archive them to a separate tab, or update the formula’s date range to start from the new cycle date. This is a manual step that must happen at cycle end for the shared sheet to show the client accurate information at cycle start.
If you forget to reset the sheet, or if you do it a few days late, the client sees incorrect data — either stale hours from last cycle or a confusing combination of last cycle and new cycle. This creates a client communication problem at exactly the wrong moment: the start of a new billing period is when clients are most likely to check their retainer status and plan their work requests.
HourTab handles cycle context through the CSV upload. You export the current cycle’s time entries from your time tracker, upload the CSV, and HourTab shows the client the current cycle data. The cycle reset date you set in HourTab appears in the client URL automatically. There is no “reset” step to remember.
Problem 4: Mobile experience is poor
Google Sheets on mobile is functional but not fast. When a client opens a shared Google Sheet on their phone, they encounter a mobile web interface that requires pinch-to-zoom to read small cells, horizontal scrolling to see all columns, and sometimes an “open in the Sheets app” prompt before any content is visible. None of this is a serious barrier for a client who expects to use Google Sheets. For a client who was told “here is a link where you can check your hours,” the experience is more friction than the task warrants.
The mobile problem compounds for clients who are primarily phone users — business owners, executives, creative directors who spend most of their day mobile. These are also the clients most likely to be checking their retainer status from context: a phone call where they want to know if they can approve a new request, a budget review meeting where they need a quick number. The friction of opening a spreadsheet on mobile degrades the value of the whole visibility system.
HourTab URLs are designed as mobile-first HTML pages. The progress bar, hours count, and cycle date are visible in the first screen without scrolling. The work log scrolls below for clients who want detail. The load time is minimal because the page is static HTML, not a JavaScript-heavy spreadsheet application.
Problem 5: Maintaining multiple sheets does not scale
The fifth problem is a multiplication problem. One shared Google Sheet per client means one spreadsheet to build, maintain, update, and reset per retainer client. For two clients, this is manageable. For four clients, it is a recurring task that competes with billable work. For six clients, it is a weekly workflow that requires a tracking system of its own — a list of sheets to update, a reminder to reset each one at cycle end, a process to avoid cross-contaminating client data.
Each new retainer client adds one sheet to the maintenance stack. The template-and-copy approach helps initially, but each sheet evolves differently as clients ask for different information, or as you adjust your time tracking workflow, or as billing rates change. After six months, the sheets have diverged and you have six slightly different spreadsheet formats to maintain.
HourTab manages all clients from a single dashboard. Each client gets their own URL, but you manage all of them from one place: upload CSV per client, set cycle parameters, update as needed. Adding a fifth client takes 10 minutes and generates a permanent URL immediately. The stack does not grow in complexity as the client roster grows.
What HourTab does (specifically)
The mechanism for each client is the same regardless of how many you have. You export a CSV from your time tracker — Harvest, Toggl, Clockify, or any tool with CSV export. You filter the export to the relevant client and current billing cycle. You upload the CSV to HourTab. HourTab reads the entries, computes the hours used, and updates the client URL with a progress bar, hours count, and cycle reset date.
The client receives a permanent URL at the start of the retainer relationship. They bookmark it. Every upload updates the same URL. The client never receives a new link, never has to manage a login, and never sees any data from other clients or any internal information you did not intend them to see.
The free tier supports one active retainer. HourTab Solo ($9/month) supports up to 10 active retainers with custom URL slugs and no HourTab branding. HourTab Studio ($19/month) supports unlimited retainers with a branded subdomain, two team seats, and per-client headers.
When a shared spreadsheet is still the right choice
One client who explicitly uses and prefers Google Sheets. A client who manages their business in Google Workspace and is comfortable navigating spreadsheets will find a shared Sheet perfectly adequate. The cognitive load of interpretation is low for them, the familiarity outweighs any friction, and they have no reason to prefer a different format.
You want to test the visibility workflow before committing to a tool. Setting up a shared sheet before the first retainer invoice is a reasonable way to confirm that the client will actually use a visibility tool before investing in one. If the client never checks the sheet, the visibility problem doesn’t exist in practice and no tool is needed.
Flat-fee retainers. If the retainer is priced as a fixed monthly fee for a defined scope, hours tracking may be an internal record-keeping task rather than a client-facing service. The client has no hours pool to monitor, so a client-facing visibility tool adds no value.
When to switch from a shared sheet to HourTab
The first client edit incident. The moment a client accidentally edits your tracking sheet — or asks why they can’t add a note — you have identified the permission model problem. A dedicated URL that is read-only by design eliminates this class of incident entirely.
You add your third retainer client. Two sheets are manageable. Three is when the maintenance tax starts to compound: three update workflows, three cycle resets, three slightly different formats to maintain. This is the natural switching point for most freelancers.
A client mentions difficulty checking their hours on their phone. Once you hear this from a client, you know the current system is failing for at least some of your audience. A purpose-built URL with a mobile-optimized display eliminates that friction before it costs a retainer renewal.
Invoice friction increases. If clients begin questioning invoice amounts because the hours at invoice time don’t match what they remember seeing in the sheet, there is a cycle-reset or data-update problem in the spreadsheet workflow. The more brittle the update process, the more likely a discrepancy. Retainer billing best practices require that client and freelancer are working from the same hours data. A spreadsheet that drifts from the source of truth is a liability at invoice time.
Migrating from a shared sheet to HourTab
The migration is minimal. You do not need to import your historical spreadsheet data into HourTab. HourTab works from CSV exports of your time tracker, which generates fresh data for each cycle upload. The migration is:
Step 1: Create a HourTab account and set up each retainer client with their monthly hours cap and cycle start date. This takes about 5 minutes per client.
Step 2: Export the current cycle’s time data from your time tracker as a CSV. Upload it to HourTab. The client URL is generated immediately.
Step 3: Share the HourTab URL with the client. A simple note: “I’ve switched to a new tool for your retainer tracking. This link is your hours dashboard going forward — same info, easier to use on mobile. Bookmark it.”
Step 4: Deprecate the shared spreadsheet. If clients were actively using it, leave it accessible for a cycle as a transition measure. After the first invoice under the new system, the sheet can be archived.
The ongoing workflow replaces the manual sheet-update step with a CSV export from your time tracker and upload to HourTab. For most freelancers, this is a comparable amount of effort with a substantially better client-facing result: a progress bar instead of a cell value, a cycle reset date displayed automatically, no accidental-edit risk, and a mobile-friendly display that loads without friction.
For freelancers who want to understand the full retainer client reporting workflow, the HourTab URL is one component of a broader communication practice — the piece that handles the mid-cycle self-service question so that client communication can focus on work rather than on status updates.
HourTab gives your retainer clients a live hours URL that’s read-only, mobile-optimized, and updates from a CSV upload. Start free →