Google Calendar for time tracking (no timer)

Google Calendar already logs every meeting and work session. Add one naming rule and it becomes a billing tool — no timer, no extra app required.

8 min read Adrien Updated on 14/03/2026

You have 50 events in Google Calendar this month. Client meetings, work blocks, calls, internal stuff. Everything that happened, when it happened.

And yet, when it’s time to invoice, you open a blank spreadsheet.

Google Calendar already did the work. You just haven’t figured out how to read it for billing.

Why Google Calendar doesn’t track time by default

Google Calendar is excellent at what it’s designed to do: tell you where to be and when. It records everything you schedule with near-perfect accuracy.

But it has no concept of billing. An event called “Call with Alex” tells you nothing about which client, whether it’s billable, or what project it belongs to. You can color-code events, create multiple calendars, add descriptions — none of that gives you a billing report.

The missing piece isn’t another app. It’s a naming convention.

The naming convention that turns Google Calendar into a time log

Add brackets around your client name at the start of every billable event.

[Acme] Strategy call instead of Strategy call [Bolt][Website] Design review instead of Design review [Acme][O] Fourth revision instead of Fourth revision

The bracket tags give you three things at a glance: client, project (optional), and billing status — [F] for already invoiced, [O] for time given away for free. The bracket naming convention guide has the full reference.

This doesn’t require a separate work calendar, different colors per client, or any structural change. Google Calendar’s search function becomes your billing filter: search [Acme], filter by month, and every billable event for that client appears instantly.

What to do (and what to skip)

Tag every client event as you create it. Two or three extra characters at the start of the event name. [Acme] Kickoff call. The first week, you’ll miss some. Backfill at the end of the day from memory or from your email. After two weeks, it’s reflex.

Tag your non-billable time too. [Admin], [Prospecting], [Learning]. These don’t go on invoices, but they make your total working hours visible. If you logged 38 hours in Google Calendar last week and billed 24, the 14-hour gap is now auditable — not just a feeling.

Don’t create separate calendars per client. It feels organized and it’s actually worse. You have to switch calendars every time you add an event. If a client’s project ends, you have an orphaned calendar. The bracket in the event name is simpler, survives calendar exports, and works with any calendar reader including Timescanner.

From Google Calendar to a billing report

Once events are tagged, you have two options.

Manual: use the Google Calendar search bar. Type [Acme]. Set a date range. Every event for that client is listed with times and durations. Sum them. This takes about 10 minutes per client per month — significantly less than reconstructing from memory or Slack.

Automated with Timescanner: connect Google Calendar via its iCal URL and get the report generated automatically.

To get your iCal URL in Google Calendar: Settings → click your calendar name in the left sidebar → scroll to “Secret address in iCal format” → copy the URL. Paste it into Timescanner once. Every billing report after that is automatic.

The report shows: hours per client, hours per project, hours marked [F] (already invoiced), hours marked [O] (given away). No manual math, no timer ever needed.

One thing to know about Google Calendar’s iCal URL

Google generates a private iCal URL for each calendar. It’s read-only — it gives Timescanner access to your event data, not your Google account. The same URL is used by any calendar app that subscribes to your calendar.

If you reset this URL (you can do it in Google Calendar settings), you’ll need to update it in Timescanner. It happens rarely, but worth knowing.

What the first three months look like

Month 1: ~80% tag coverage. A few events missed, mostly the unexpected ones. Still enough data to invoice accurately.

Month 2: near-complete coverage. The naming pattern is reflex now. You notice when you forget.

Month 3: billing at the end of the month takes 15 minutes. The rest of the time, you don’t think about it. Your calendar is tracking your time automatically, because it always was — you just finally gave it the structure it needed to be useful.

What you learn about your time after three months

The billing report is useful. What it reveals about your patterns is more useful.

After three months of consistent tagging, most freelancers notice the same things.

Which clients take more time than the invoice reflects. A client that pays €2,000/month looks good on paper. A client that generates 35 hours of meetings, emails, and revisions at that price is costing you €57/hour — less than your rate. The calendar data makes this visible before the contract renews.

Which project types you systematically underprice. Design review rounds run long. Kickoff calls expand. Discovery phases absorb hours that weren’t in the brief. Once you can see the pattern in your calendar history, your next estimate corrects for it automatically.

When your hours are actually highest. Most freelancers assume they work more during busy seasons. The calendar data often surprises them — the busiest months by logged hours aren’t always the highest-revenue months. The gap is the real rate problem in action.

This visibility doesn’t require any extra work. It’s a side effect of tagging your events, which you’re already doing for billing.

How to handle recurring events

Some events repeat every week — a standing sync with a client, a regular strategy call. In Google Calendar, you can edit the title of the recurring series once and every future instance gets the update.

For recurring billable events: tag the series title with [ClientName] when you create it. All future instances are tagged automatically. If the client changes, edit the series from that point forward.

For past recurring events you haven’t tagged yet: edit each event individually, or batch-edit the series going forward and manually adjust the previous month’s total. Timescanner only reads events in the date range you select — you don’t need to backfill your entire calendar history.

Managing multiple calendars in Google

Many freelancers keep multiple Google calendars: personal, work, a shared team calendar. The bracket naming convention works across all of them.

The simplest setup: put all work-related events in a single calendar, tag them with [ClientName]. This gives you one iCal URL to paste into Timescanner.

If you need to keep calendars separate — personal events in one, client work in another — you can connect multiple iCal URLs to Timescanner. One connection per calendar.

What you don’t want: a separate Google Calendar per client. It sounds organized. In practice, switching calendars adds friction every time you create an event. The single-calendar + bracket tag approach is simpler to maintain and works better at end of month.

Privacy and data

Google Calendar’s iCal URL is read-only. When you paste it into Timescanner, Timescanner can read your event titles and times — it cannot modify, delete, or create events. It has no access to your Google account, attachments, or event descriptions.

The URL itself is private and not guessable. You can revoke it at any time from Google Calendar settings (Settings → your calendar → Reset in “Secret address in iCal format”). If you do reset it, you’ll need to update the URL in Timescanner.

This is the same mechanism any calendar app uses to sync — your phone’s calendar app uses an identical connection to display Google events.

Frequently asked questions

Can I use Google Calendar for time tracking? Yes. Google Calendar already records every meeting, work block, and client call with exact times. Add [ClientName] at the start of every billable event and you have a structured time log. Read it manually with the search filter or connect your iCal URL to Timescanner for an automatic billing report.

How do I get my iCal URL from Google Calendar? Settings → click your calendar name in the left sidebar → scroll to “Secret address in iCal format” → copy. Paste it into Timescanner once. The URL is read-only and private.

Should I create separate Google Calendars for each client? No. It adds friction every time you create an event and leaves orphaned calendars when projects end. The bracket naming convention ([ClientName] in the event title) is simpler, works across all calendars, and survives calendar exports.

How long does it take to develop the tagging habit? Most freelancers reach near-complete coverage within two to three weeks. First week: ~80% coverage. Second week: automatic. By month two, you notice when you forget — which means the habit is established.


Timescanner works with Google Calendar, Outlook, iCloud, Proton Calendar, Fastmail, Infomaniak, and any iCal-compatible calendar. How the iCal standard works is the same across all of them — the billing method doesn’t change.

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