Blog · June 6, 2026 · ~9 min read

Client hours dashboard: what retainer clients actually want to see

You’re paying a freelancer on retainer — say, 20 hours a month. You’re about to ask them to tackle something new, but before you send the email you want to know: do I still have capacity this cycle, or am I about to trigger an overage? The way you find out right now is almost certainly to send an email and wait. This is not how it should work.

A client hours dashboard solves this. Not a login portal, not a PDF report emailed monthly, not a shared spreadsheet tab that’s three weeks out of date. A URL you can open in five seconds before your next meeting that tells you exactly where you stand. This piece explains what a good client hours dashboard actually shows, why most freelancers don’t provide one today, and what to do about it if yours doesn’t.

The question you keep asking

If you’re on a monthly retainer arrangement, you probably ask some version of the same question every few weeks: “How many hours do I have left?” or “Am I close to my cap?” or “When does my retainer reset?”

This is a completely reasonable question. You’ve committed a fixed monthly fee for a fixed block of time. That block is a resource with a value attached to it. Knowing how much of it you’ve used and how much remains is basic budget visibility — the same visibility you’d expect from any other recurring subscription or service.

The problem is that freelancers don’t typically have a standard mechanism for surfacing this. They track their hours internally in Toggl, Harvest, or a spreadsheet. That data lives on their side of the relationship. Getting it to you requires an active step: someone exports a report, formats it into something readable, and emails it to you. When that step requires effort, it gets done monthly at best, and sometimes not at all until you ask.

Every time you send “hey, where are we at on hours?” your freelancer stops what they’re doing, opens their time tracker, runs a report, and replies. That’s 10–15 minutes of their time every time you ask. Multiply that across multiple clients per month and it adds up to hours of admin that isn’t captured anywhere. As a client, you shouldn’t have to ask. As a freelancer, this is exactly the kind of admin that a shared URL eliminates entirely.

What clients actually need to see

The information a retainer client needs is simple. There are four pieces, and only four:

1. Hours used this cycle. Not project-to-date. Not year-to-date. This cycle. The relevant window is the current billing period — whatever date range your retainer covers this month. Hours logged before this cycle reset are not relevant to your current capacity question.

2. Hours remaining. Derived directly from the first: cap minus used. This is the number that drives the decision you’re actually making. If you have 8 hours remaining and you want to ask for a feature redesign that typically takes 12 hours, you need to know that before the conversation starts. If you have 8 hours remaining and you want to ask for a quick copy update that takes 30 minutes, you can ask without worrying.

3. When the cycle resets. The remaining-hours number has no meaning without knowing how soon the window closes. Eight hours remaining with three weeks left in the cycle is different from eight hours remaining with two days left. The reset date anchors the capacity question to a timeframe.

4. What’s been worked on. A brief log of recent entries: date, description, duration. Not an invoice. Not a detailed breakdown by task category. Just enough to confirm that the hours logged correspond to real work you can recognize — “Aug 7: onboarding call (1h), Aug 12: landing copy revisions (2h), Aug 15: API sync debug (3h).” This closes the trust loop and makes the hours remaining number meaningful rather than abstract.

Everything beyond these four pieces is overhead. Project health indicators, profitability metrics, comparison to prior months — these might be interesting to your freelancer or to you in a quarterly review. They’re not what you need before a meeting when you’re wondering whether to send a new request.

What clients don’t want

It’s useful to be specific about the formats that don’t work, because most freelancers default to one of them.

Monthly PDF reports. These solve the “end of cycle” question, not the “right now” question. By the time the report arrives, you might be two weeks into the next cycle or three weeks past the decision point where it would have been useful. PDF reports answer historical questions. You’re asking a live question.

Login portals. FreshBooks, Bonsai, and HoneyBook all have some version of a client-facing portal. The problem isn’t that portals are bad tools — they’re fine for invoice review and contract signing. The problem is that they require you to remember a login, navigate to the right section, and interpret a view that’s designed around billing history, not retainer capacity. That’s friction you don’t want for a question you’re asking every few weeks. And even in the best portal implementations, the retainer hours burn-down view often doesn’t exist.

Shared spreadsheets. A Google Sheet your freelancer maintains manually is better than nothing, but it depends entirely on your freelancer remembering to update it consistently. If updating requires them to manually enter numbers after each session, it will eventually fall behind — maybe not immediately, but when they’re busy, the sheet update drops. You then have a dashboard that is sometimes accurate and sometimes not, and you don’t know which.

Toggl or Harvest share links. Some freelancers will share a Toggl report link or a Harvest project view as an attempt to give you visibility. The issue is that these tools show time entries in date ranges, not retainer cycle burns. Tracking client hours effectively for a retainer context requires a cycle-aware display, not a date-range report. A shared Toggl link forces you to know the start date of the current cycle, understand the retainer cap, and do the subtraction yourself. That’s three steps for a question that should take one.

The right shape: a URL you bookmarked at the start

The most useful client hours dashboard is the simplest possible format: a URL you open in a browser tab. No login. No navigation. Just the four pieces of information described above, updated in real-time as your freelancer logs hours.

Think of it like a shared order-tracking page. When you order something online, you get a link you can open to check the status at any point. You don’t have to email the retailer to ask “where is my package?” The URL is the answer. The retainer hours question should work the same way.

The interaction pattern for a client checking their retainer status should be: open the bookmark, read the number, close the tab. That’s it. If the process is longer than that, it will only happen when the client is actually frustrated enough to email — which means by the time they check, they already feel like they’re operating blind.

For this to work, the URL needs two properties. First, it must not require a login — a login introduces a password-memory step that creates enough friction to make email feel easier. Second, it must reflect the current cycle automatically — meaning your freelancer doesn’t have to do anything to update it; when they log a session in their time tracker, the number on the URL changes. Otherwise you’re back to depending on someone remembering to update a spreadsheet.

What good looks like in practice

Here’s what a client hours dashboard should look like when you open it:

At the top: your name or company name, the retainer cap (e.g. “20 hours / month”), a progress bar showing how much has been used, and the reset date. Something like:

Acme Corp — June 2026
12 of 20 hours used • 8 hours remain • resets July 1
[————————————————————————————————————————————————————————————— ]

Below the progress bar: a log of this cycle’s entries in reverse chronological order.

Jun 14 — Site performance audit — 2.5h
Jun 10 — Weekly sync + Q3 roadmap review — 1h
Jun 7 — Landing page copy revisions — 3h
Jun 3 — New intake form implementation — 4h
Jun 1 — Onboarding call — 1.5h

That’s the whole page. No nav, no login form, no summary statistics you didn’t ask for. The goal is that you can read it in under five seconds and answer your own question.

You’d receive this URL at the start of your retainer relationship — ideally as part of a structured client onboarding process where your freelancer sets expectations about how hours tracking works. You bookmark it. Every time you wonder about your balance, you open the bookmark. No email required.

Why most freelancers don’t provide this today

It isn’t that freelancers don’t want to give their clients visibility. Most do — client visibility reduces billing disputes, reduces the “how many hours left?” emails, and makes retainer renewals easier. The problem is that building and maintaining a client-facing hours view is harder than it looks.

The naive solution is a shared Google Sheet. As discussed above, manual updates eventually fail. The more robust solution — building a web-accessible dashboard that syncs with time tracker data — requires either a third-party tool or custom development. Most freelancers aren’t going to build their own dashboard. And until recently, there wasn’t a tool specifically designed to solve this one problem.

The all-in-one tools (Bonsai, HoneyBook, Plutio, FreshBooks) include client portals, but as noted, those portals are shaped for billing visibility, not retainer-capacity visibility. They show invoice history, not hours burn-down. Retainerkit, the most purpose-built option in the category, starts at $49/month and is designed for agencies managing 10+ client relationships — not the solo freelancer with 3–5 retainer clients who wants to give each of them a URL.

The gap in the market is narrow and specific: a lightweight tool that turns a time tracker CSV into a public retainer-hours URL, with no client login required, at a price point a solo practitioner can justify. That gap is exactly what HourTab fills.

How to ask your freelancer for a client hours dashboard

If your current retainer setup doesn’t include any form of hours visibility, here’s a way to bring it up without it feeling like a criticism.

Frame it as a workflow request, not a trust issue. Something like: “It would help me to be able to check where we are on hours before I send you new requests. Is there a way you could share a link I can bookmark?” This is true — it’s a practical workflow improvement for you — and it’s easy for your freelancer to act on if they have the right tool.

Most freelancers will respond positively to this request. The hours data is already tracked somewhere on their end. What they need is a mechanism to make it visible to you without ongoing manual effort. Point them toward a tool that generates a shareable URL from their existing time tracker exports and the problem solves itself.

If they ask what that looks like, the answer is simple: a URL that shows hours used, hours remaining, the reset date, and a log of what’s been worked on. No login required. Updated automatically. That’s it.

Closing note for freelancers reading this

If you landed here from the freelancer side of the search, the insight is this: your retainer clients are looking for exactly the dashboard described above. They may not use the phrase “client hours dashboard” when they think about it, but the question they keep emailing you — “how many hours do I have left?” — is the same question this page answers.

Giving your clients a URL they can bookmark is one of the highest-leverage things you can do for retainer client retention. A client who can see their remaining capacity at any moment is a client who uses their retainer, understands its value, and renews. A client who has to email to get this information tends to underutilize their capacity or feel vaguely uncertain about whether the retainer is worth the fee. The mechanics of tracking client hours for this purpose aren’t complex — the gap is almost always in making that data visible.

HourTab: the URL your client should already have

HourTab is built exactly for this use case. You log time (or import a CSV from Toggl or Harvest), set a monthly cap per client, and get a public URL your client can open without logging in. The URL shows hours used, hours remaining, the cycle reset date, and the work log. Nothing else.

The free tier gives you one active retainer and one share URL — enough to try it with your biggest retainer client and see what the experience is like on both sides of the relationship. No credit card required.

Give your client the URL →