Notion as a Time Tracking Tool
Notion as a time tracking tool uses Notion's database feature to log time entries with properties for date, client, project, hours, rate, and description - giving freelancers a flexible, customizable tracking system within a tool they may already use for project management and notes.
Why Use Notion for Time Tracking?
Notion has become the Swiss Army knife of productivity tools. Many Dutch freelancers (zzp'ers) already use it for:
- Project management (kanban boards, task lists)
- Client documentation and wikis
- Meeting notes and agendas
- Business planning and goal tracking
If Notion is already your daily driver, adding time tracking means one fewer tool to manage. Everything lives in one workspace.
Setting Up a Time Tracking Database
Step 1: Create the Database
Create a new full-page database in Notion. Name it "Time Tracking" or "Urenregistratie."
Step 2: Configure Properties
Add these properties to your database:
| Property | Type | Purpose |
|---|---|---|
| Date | Date | When the work was performed |
| Client | Select | Client/company name |
| Project | Select | Project or engagement |
| Description | Title | What was done |
| Hours | Number | Duration in decimal hours |
| Rate | Number | Hourly rate in EUR |
| Amount | Formula | Hours × Rate |
| Billable | Checkbox | Whether to invoice this entry |
| Invoiced | Checkbox | Whether this has been billed |
Step 3: Set Up the Amount Formula
In the Amount formula property, enter:
prop("Hours") * prop("Rate")
This automatically calculates the monetary value of each entry.
Step 4: Create Useful Views
This is where Notion shines. Create multiple views of the same data:
Table View (Default): All entries in chronological order. Good for daily logging.
Calendar View: See your entries on a calendar. Useful for spotting days without any logged hours.
Board View by Client: Group entries by client to see at a glance how much time each client is getting.
Filtered View: Current Month: Filter to the current month for quick monthly totals.
Filtered View: Uninvoiced: Filter where Invoiced = unchecked and Billable = checked. This shows you exactly what needs to be billed.
Advanced Setup
Client Database with Relations
Instead of a Select property for clients, create a separate "Clients" database with:
- Client name
- Contact person
- Hourly rate (default)
- KVK number
- VAT ID
Then use a Relation property to link time entries to clients. This lets you:
- Pull the default rate automatically using a Rollup
- See all time entries per client in the client's page
- Store client details once, not on every entry
Project Database
Similarly, create a "Projects" database related to both Clients and Time Tracking:
- Project name
- Client (relation)
- Budget hours
- Status (Active/Completed/Paused)
Use a Rollup property on the project to show total hours logged, remaining budget, and total amount.
Templates
Create entry templates for recurring work:
- Standard entry: Pre-filled with your most common client and rate
- Meeting: Default 1-hour duration with "Meeting" as description prefix
- Admin: Pre-filled with billable = unchecked
Templates save time when logging entries throughout the day.
Notion's Limitations for Time Tracking
No Built-in Timer
Notion doesn't have a start/stop timer. You need to either:
- Manually enter start/end times and calculate duration
- Use an external timer and log the result in Notion
- Install a third-party browser extension that adds timer functionality
This is the biggest drawback compared to dedicated tracking tools.
Mobile Experience
While Notion has a mobile app, creating database entries on mobile is slower than using a dedicated time tracking app. If you frequently need to log time on your phone, Notion may frustrate you.
Performance with Large Databases
Notion databases can slow down when they grow beyond a few thousand entries. For a freelancer logging 20 entries per week, that's about 2 years before performance might become noticeable. Consider archiving old entries to a separate database periodically.
No Offline Support
Notion requires an internet connection. If you need to log time while offline (on a plane, in a dead zone), you'll need a workaround like a quick note that you transcribe later.
Connecting Notion Time Tracking to Accounting
The hours in Notion are valuable, but they need to reach your accounting system for invoicing. Here's how:
Manual Transfer
Open your Notion time tracking database, filter for uninvoiced billable entries, and manually create invoices in Moneybird, Simplicate, or e-Boekhouden. Time-consuming but straightforward for low volumes.
Notion API
Notion has a REST API that allows reading database entries programmatically. If you're technical, you can build a script that:
- Queries your time tracking database
- Filters for uninvoiced entries
- Pushes them to your accounting system's API
- Marks entries as invoiced in Notion
Synkr Integration
Synkr supports Notion as a source connector. You authorize Synkr to access your Notion workspace via OAuth, select your time tracking database, and map properties to standard fields. From there:
- Pull entries from your Notion database
- Review them in Synkr's interface
- Push to your accounting system
- Entries are marked to prevent duplicate syncing
The key advantage: no coding required, and you review every entry before it hits your accounting.
Notion vs. Other Time Tracking Options
| Feature | Notion | Toggl | Google Sheets | Excel |
|---|---|---|---|---|
| Timer | No | Yes | No | No |
| Custom fields | Extensive | Limited | Unlimited | Unlimited |
| Mobile app | Good (not ideal for entries) | Excellent | Decent | Decent |
| Cost | Free / €8/mo | Free / €9/mo | Free | Microsoft 365 |
| Relations/rollups | Yes | No | No | Limited |
| Views (table/calendar/board) | Yes | Limited | Manual | Manual |
| API | Yes | Yes | Yes | Yes (Online) |
| Offline | No | Yes | Yes (with setup) | Yes |
For a more detailed tool comparison, see Toggl vs. Clockify vs. Google Sheets and our best time tracking apps overview.
Tips for Effective Notion Time Tracking
1. Log Daily
Don't wait until the end of the week. Open your time tracking database each morning (or create a daily habit reminder) and log entries as you complete work. The accuracy of your records depends on timeliness.
2. Use Quick Entry Templates
Create a button or template that pre-fills common fields. Reducing the friction of creating an entry makes it more likely you'll actually do it.
3. Set Up a Weekly Review
Create a filtered view showing the current week's entries. Review it every Friday:
- Are all days accounted for?
- Are descriptions clear enough for invoicing?
- Is billable/non-billable tagged correctly?
- Do the total hours make sense?
4. Track Non-Billable Hours Too
Even if you won't invoice for admin, learning, or acquisition time, tracking these hours helps you meet the Dutch urencriterium (1,225 hours) for the zelfstandigenaftrek. It also gives you insight into your true billable ratio.
5. Archive Quarterly
Move entries older than 3-6 months to an "Archive" database. This keeps your main database fast and your views clean. You can still access archived data when needed.
6. Connect to Your Dashboard
Create a Notion dashboard page that embeds filtered views:
- This week's entries
- Current month's total hours and revenue
- Uninvoiced entries
- Top clients by hours
This gives you an at-a-glance overview without digging through database views.
When Notion Works Best for Time Tracking
Notion time tracking is ideal when:
- You already use Notion extensively
- You value flexibility over polish
- You have fewer than 30 entries per week
- You don't need a real-time timer
- You want relations between time entries, clients, and projects
If you need timers, mobile-first tracking, or are logging high volumes, a dedicated tool like Toggl paired with a sync to your accounting system will likely serve you better.
The best approach is the one you'll actually use every day. If that's Notion - use it, and sync the data to where it needs to go.