How to track time across multiple clients

Four clients, 30 calendar events, no structure. How to turn your existing calendar into a per-client billing record — without a separate app.

6 min read Adrien

It’s the last day of the month. You open your calendar to figure out what to bill each client.

Forty events. Half of them say “Meeting” or “Deep work.” You have no idea which client most of them belong to. So you start cross-referencing with email threads, Slack history, and a few notes you wrote three weeks ago. Two hours later, you have a rough estimate. You still don’t trust it.

This isn’t a time management problem. It’s a naming problem.

The tracking problem scales with client count

One client: you can reconstruct from memory. You remember the project, the calls, roughly how many hours.

Four clients: impossible without a system. The weeks blur. Client A had two big pushes. Client B had three calls and a round of revisions. Client C’s project ran over. Client D sent a brief that needed a full day of research. Try to reconstruct that accurately three weeks later and you’ll underestimate every single one.

The hours that disappear aren’t dramatic individually. A 15-minute call that wasn’t labelled. A feedback round you absorbed into a longer session. An email thread that ran 45 minutes and never became a calendar event. That’s the gap between what you worked and what you invoice. For most freelancers with four or more active clients, it runs to 10–20 hours a month.

Your calendar already has most of the data

Here’s the thing: you’re probably already documenting 60–70% of your billable time without trying. Every scheduled call is in your calendar. Every working session you blocked off is in your calendar. Every client call is in your calendar.

The data is there. It just has no structure.

An event called “Meeting” doesn’t tell you it was for client A. “Deep work” doesn’t tell you it was billable. You have the duration. You don’t have the client.

One naming change fixes this. Add your client’s name in brackets at the start of every work-related event. [Acme] Strategy call. [Bolt] Deep work — proposal. [Webb] Feedback review. That’s the full system.

The bracket naming convention documents the complete syntax — how to mark already-invoiced hours with [F], how to tag time offered for free with [O], how to add project sub-tags. The core rule takes about two minutes to learn.

The one rule that makes it work at scale

With one client, the naming convention is almost too simple. Every event gets the same tag.

With four clients, one rule matters above all: tag the event at creation, not at recall.

When you add a call to your calendar, add [Acme] in the same gesture. When you block two hours of focus time, tag it to the client you’re working for. Don’t wait until end of month and try to remember which client that Tuesday morning session belonged to. You won’t remember.

The cost of tagging at creation: five seconds. The cost of reconstructing at end of month without tags: hours, with errors.

In practice this means:

  • When a call gets booked, tag it as you add it
  • When you block focus time, tag it to the client whose work you’ll be doing
  • When you switch to a different client mid-morning, create a separate event for the new block

You don’t need to create events for every five-minute task — the noise kills the signal. Tag sessions, calls, and working blocks. Anything under 15 minutes either groups into the surrounding block or gets absorbed into the overhead.

The “which client gets this hour?” problem

Multi-client work creates a specific type of ambiguity: sessions that span clients, or time that belongs to no one.

The clearest example: you spend 90 minutes prepping for a call with client A, then realize midway you also reviewed something for client B. What do you do?

Don’t try to split a single event. Create two blocks instead. [Acme] Call prep (60 min) and [Bolt] Proposal review (30 min). The total matches. You don’t need to be exact to the minute — close enough is accurate enough for billing purposes.

Admin time — invoicing, accounting, generic emails — is the other ambiguous category. Tag it [Admin] or leave it untagged and absorb it into overhead. Most freelancers don’t bill admin time. The important thing is to make that decision deliberately, not by accident because you couldn’t figure out what to tag it.

What month-end looks like with proper structure

After four to six weeks of consistent tagging, billing becomes mechanical.

Filter your calendar by [Acme]. You get a complete list of every event tagged to Acme. Sum the durations. That’s your billable hours for Acme this month. Same for every client.

If you used sub-tags like [Acme][Website], you have a breakdown by project. If you marked invoiced hours with [Acme][F], the unbilled balance is everything without [F]. The calendar is the record. Nothing needs to be reconstructed from memory.

Timescanner automates this step. You connect your calendar once via the iCal URL — the private share link any major calendar service generates — and each report gives you a per-client breakdown: total hours, hours by project sub-tag, unbilled hours, and the invoice amount at your hourly rate. For four or five clients, that review takes 20 minutes. Without the tagging structure, it takes several hours and produces estimates you can’t fully trust.

The gap that stays

No system captures 100% of your time. With consistent tagging, the realistic coverage is 85–90% of your billable hours.

The remaining 10–15% is the work that genuinely happened outside your calendar: the Slack call you took without blocking time, the email thread that expanded into a two-hour rabbit hole. These are the hours where the billable vs non-billable ratio matters most. Freelancers who run their first billing report after a month of tagging almost always find that their billed hours are 15–20% lower than their actual working hours — not because they forgot to send invoices, but because those hours never made it into any record.

The naming convention closes most of that gap. A 10-minute weekly calendar scan catches most of what’s left. The residual is much smaller than what most multi-client freelancers are currently writing off every month without noticing.


Timescanner reads any iCal-compatible calendar and generates per-client billing reports automatically — Google Calendar, Outlook, iCloud, Proton Calendar, Notion Calendar, Fastmail, and others.

Timescanner

Your calendar already knows how much you worked.

No timers. No new habits. Timescanner reads your calendar — Google Calendar, Outlook, iCloud, and more — and generates your billing reports automatically.

Start free trial — 30 days, no credit card