Whether its for billing clients or time management, tracking your time is really essential to teams and individual professionals. And with recent enhancements to formulas, along with the new Button property , we can finally track time within our cohesive Notion systems.
So I’m going to share a simple and powerful framework that’s inspired by the most popular time-tracking apps, like Toggl and Harvest.
First, I’ll walk through the system in its polished final form.
And then for you Notion power users, we’ll take a quick look under the hood to see how it works.
And for you to add the system to your own workspace, it’s available in two templates:
You know my #1 rule for using Notion is to:
Structure all information in related master databases, then access it through contextually filtered views.
At the crux of our time-tracking system is a database of Time Entries.
And each entry relates to either a Project or Company, which are master databases in the Bulletproof framework and nearly every workspace I develop.
That allows us to summarize the logged time by project or company, and generate insightful reports for invoicing, managing retainers and other needs.
So the system comprises three database:
And there’s actually a fourth database that serves technical needs behind the scenes, which I’ll explain for those technically inclined users.
You’ll typically manage time entries from linked views within projects or companies, but let’s open it directly to explore its properties.
So within our Projects database, you’ll see a field for each project’s Billable Rate. Then we have Total Hrs. logged, Billable Hrs. logged, and the Total Fee, which multiplies the billable hours by the fee.
Within the database-centric approach of the Bulletproof framework, you could easily connect this to Invoices and other financial databases to track paid, unpaid and unvoiced hours.
And then right from any project, we can click “Create Time Entry” to start a new time entry that’s automatically related to that project.
And then the project opens, and within it, you can see a filtered view of it’s time entries, with the total hours summed at the bottom.
The new entry is running, and we can click “Start // Stop” to stop it. And at any point, we can provide context within the Comments property.
And then the Companies database works similarly. It’s typically used for clients. Rather than tracking billable hours and fees, it manages prepaid hours. That could be ad hoc or a monthly retainer.
So the Reserved Hrs. property contains those prepaid hours. I simply maintain a running total, but for monthly retainers, you could automatically add hours each month, or you could adjust the view to manage only the current month’s time.
Then Logged Hrs. totals the time entries related to the company, and Remaining Hrs. subtracts Logged from Reserved.
Just like projects, we can “Create Time Entry” for any company. That opens the company’s page, where you’ll find two linked views of Time Entries: one for the current month, and another with all entries, grouped by month.
Back in the Time Entries database, we have three reporting views:
Each group’s toggle summarizes its hours.
And you’ll typically want to specify a time frame. I’ve made that easy with a Month Offset property, where the value is 0
for the current month, -1
for the previous month and so forth.
Each reporting view is pre-filtered for that property, so as you wish, you can simply adjust the value.
And there you have a robust time-tracking system that connects to your broader Notion ecosystem, with the core features of dedicated time-tracking apps.
Grab it as a standalone template or as part of the Bulletproof Workspace.
Now for those of you with an advance understanding of Notion databases, let’s take a quick look at how this system works.
So, in the Projects database, the “Create Time Entry” button is configured to:
The button in Companies works the same way, but it also unchecks the Billable property.
And lastly, the Time Entries database has an automation that creates a new timestamp when an entry is created. That automatically starts the timer.
So that’s a quick look at the engine of the system. Definitely duplicate it for a closer inspection and comment with any questions.