The bracket method for calendar time tracking
The [Client] naming convention turns any calendar into a billing tool. All tags, examples by profile, and answers to the most common setup questions.
It’s the last day of the month. You open your calendar to rebuild your billing hours.
The first event says “Meeting.” The second says “Deep work.” The third says “Call.” You have 60 of them. You have no idea which client half of them belong to.
You tracked your time. You just can’t read it.
This is the problem the bracket convention solves. Not a new app, not a new process — just a naming pattern that turns the events you’re already creating into structured billing data.
Why calendar events contain no billing information
A calendar is designed for scheduling, not for accounting. When you create an event, the only required field is a name. There’s no “client” field, no “billable yes/no” toggle, no project code.
So most people name their events in a way that makes sense in the moment. “Call with Sarah.” “Design work.” “Review feedback.” These names are perfect for scheduling. They’re useless for billing.
The bracket convention adds billing metadata to the event names you’re already writing, without changing how your calendar works.
The convention: four tag types
A bracket tag is a word surrounded by square brackets, placed at the start of the event name. You can stack up to three.
[Client] — the minimum. Every billable event should have at least a client tag.
[Acme] Strategy call — 45 min billable to Acme
[Bolt] Kickoff call — 1h billable to Bolt
[Client][Project] — when you work on multiple projects for the same client. Keeps billing separated without creating separate calendar categories.
[Acme][Website] Design review — 2h
[Acme][App] Bug fix — 1.5h
[Client][F] — “facturé” (invoiced). Marks hours that have already been billed. Useful when you invoice in batches and want to track what’s already been sent.
[Bolt][F] Monthly reporting — 3h already on last invoice
[Client][O] — “offert” (offered). Marks time you gave away — a freebie, a goodwill revision, work that went beyond scope. Not billed, but tracked so you can see the real cost.
[Acme][O] Third revision round — 1.5h beyond contract
You can combine project and status: [Acme][Website][F] means project Website, already invoiced. [Acme][Website][O] means project Website, offered for free.
Examples by profile
The tags stay the same. How people use them varies.
Developer
[Startup] Architecture review — 2h
[Startup][API] Build authentication — 4h
[Startup][API][F] Deploy to production — 1h
[Agency][Frontend] Bug fixes — 3h
[Agency][O] Emergency support call — 30min
A developer with two clients sub-totals by project when invoicing. The [F] tag marks what’s been billed so mid-month checks stay clean.
Designer
[Brand][Identity] Moodboard — 3h
[Brand][Identity] First draft — 5h
[Brand][Identity][O] Revision 4 — 2h (scope was 3 revisions)
[Studio] Creative direction call — 1h
[Studio][Packaging] Mockups — 4h
The [O] tag documents scope overruns without requiring a conversation in the moment. It’s in the calendar, timestamped.
Consultant
[BigCorp][Audit] Stakeholder interviews — 4h
[BigCorp][Audit] Data analysis — 6h
[BigCorp][Audit][F] Final report delivery — 3h
[Nonprofit] Advisory call — 1h
[Nonprofit][O] Follow-up docs — 45min
A consultant marks delivered milestones with [F] so it’s clear at a glance what’s been invoiced versus what’s still running.
Rules and edge cases
Tag order: always [Client] first, then [Project], then [F] or [O]. The order matters — Timescanner groups by the first tag, sub-groups by the second.
Accents and special characters: fine. [Société], [Björn & Partners], [Agência] all work. Your calendar stores them correctly, Timescanner reads them correctly.
Spaces inside brackets: fine. [Big Client Co] is treated as a single client name. Don’t use brackets inside brackets.
Long client names: pick an abbreviation and use it consistently. If you write [NDVG] in January and [Northeast] in February, Timescanner will treat them as two separate clients.
Private events: any event without a [Client] tag is ignored. Your personal appointments, dentist, lunch — all invisible to Timescanner. It only processes the iCal events you explicitly share via a read-only URL.
All-day events: they work, but duration is ambiguous. Use timed events for billing. Reserve all-day events for non-billable context like deadlines or travel days.
Recurring events: tag them once when you create the series. If a single occurrence needs the [O] flag, edit that event individually.
Non-billable overhead: tag it too — [Admin], [Prospecting], [Learning]. Nothing billed to any client, but it makes your billability ratio visible at the end of the month.
What Timescanner reads from your tagged events
Once your events follow the convention, Timescanner connects to your calendar via a read-only iCal URL. It doesn’t store your events — it reads them on demand.
For each billing period:
- Groups all events by
[Client]tag - Sub-groups by
[Project]tag when present - Sums durations per group, excluding
[O]hours from the billable total - Separates
[F]hours (already invoiced) from hours still to bill - Shows offered time as a separate line — billed hours vs. actual time spent
The output: a billing summary per client, broken down by project. End-of-month invoicing becomes a 15-minute task.
Timescanner works with any iCal-compatible calendar — Google Calendar, Outlook, iCloud, Proton Calendar, Fastmail, Infomaniak, and more. How the iCal standard works and where to find your URL is covered in the iCal billing guide. If you use Google Calendar specifically, this guide covers the iCal URL setup and the search workflow.
The only habit is the one you already have
You’re already naming calendar events. The bracket convention is a naming pattern, not a new tool or a new habit.
The first week, you’ll forget a tag or two. That’s fine. Even 80% coverage gives you enough data to invoice accurately.
For the initial setup and the reasoning behind the calendar method, this guide covers how and why it works. This article is the reference you come back to when you add a new client, hit an edge case, or want to double-check the exact tag syntax.
One convention. Any calendar. Billing data without a timer.
Timescanner reads any iCal calendar and generates billing reports from your tagged events. No timer required.
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