How to turn your Google Calendar into a timesheet
Google Calendar already has every hour you worked. Here's how to extract a clean timesheet — the manual way with a pivot table, and the 2-minute way.
You already have a timesheet. You just don’t know it yet.
Every client call, every work session, every review — it’s all in your Google Calendar with exact start and end times. The problem is that Google Calendar doesn’t label events as billable, doesn’t know which client they belong to, and has no way to group them into a report.
The result: you use your calendar to track your schedule and something else entirely to build your invoice.
That something else is always slower. And it always misses hours.
The naming change that makes it work
Google Calendar events have one field that matters for billing: the name.
Add a client tag at the start. Square brackets, client name, done.
[Acme] Strategy call → billable to Acme
[Bolt][Website] Design review → billable to Bolt, Website project
[Webb][O] Third revision round → given away, not billed
The [O] tag marks time given away for free. The [F] tag marks hours already invoiced. The second bracket is the project name when a client has multiple active ones.
That’s the full convention. The bracket method guide documents every variation — but for most freelancers, [ClientName] at the front of every billable event covers 95% of what you need.
Non-billable time gets tagged too. [Admin], [Prospecting], [Learning]. Not for invoicing — for seeing the gap between total hours worked and hours billed. That gap is where the money is.
Once your events are tagged, you have two options for extracting the timesheet.
Option 1: the manual extraction
The search method — fastest when you need one client’s hours quickly.
Open the search bar. Type [Acme]. Click the date range filter. Every tagged event for that client appears with its exact duration. Copy the list to a spreadsheet, sum the durations. About 10 minutes per client per month.
The export method — when you want a full structured export.
Settings → Export. Google downloads a ZIP with .ics files, one per calendar. Each .ics is a text file where every event is a block containing DTSTART, DTEND, and SUMMARY. An ICS-to-CSV converter (several free ones exist online) turns it into a spreadsheet. From there: filter by [ClientName] in the title column, add a duration formula, sum.
The export method takes 30–40 minutes to set up the first time. After that, the template is reusable. The downside: .ics parsing tools handle timezones inconsistently, recurring events need manual cleanup, and all-day events don’t carry times. It works, but it’s fragile.
Both manual methods share the same constraint: they’re workarounds. Google Calendar wasn’t built to produce billing reports, and extracting data from it manually reflects that.
Option 2: connect via iCal URL
Google Calendar generates a private iCal URL for each calendar — a read-only link that any app can subscribe to and read in real time.
To get it: Settings → click your calendar name in the left sidebar → scroll to “Secret address in iCal format” → copy.
Paste that URL into Timescanner. It reads the calendar directly, parses the bracket tags, and generates the timesheet automatically: hours per client, hours per project, billable ratio, revenue at your configured rate. No export, no pivot table, no manual math.
Change an event title and it shows up in the next report. Connect multiple calendars if your work is split across them.
The iCal URL is read-only. Timescanner can’t modify your events. It has no access to your Google account — just the event titles and times from the calendar you connected.
What you get from a clean timesheet
When your calendar is consistently tagged, the output at the end of the month is:
- Total hours per client for the period
- Hours per project within a client
- Hours already invoiced (
[F]) vs. hours still to invoice - Hours given away (
[O]) — visible now, instead of disappearing - Effective hourly rate per client
That last one is the one that changes how you work. A client invoiced at €3,000/month looks fine on paper. A client whose calendar events total 52 hours that month is earning you €57/hour. The calendar makes that visible before the contract renews.
The end-of-month billing process gets short once your calendar is your timesheet. The reconstruction disappears. What’s left is reading the report.
Timescanner works with Google Calendar, Outlook, iCloud, Proton Calendar, Notion Calendar, Fastmail, Infomaniak, and any iCal-compatible calendar. The billing method is identical across all of them — the bracket convention works in any calendar app.
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