Skip to content
Get the weekly tip

How to Set Up a Time Tracking System in Notion for Billable Hours

Setting up time tracking in Notion helps freelancers and consultants log billable hours, calculate project costs, and prepare invoices—all in one workspace without monthly subscription fees.

Freelancer reviewing time tracking data on laptop screen

Quick answer

  1. Create a Time Entries database with properties for client, project, date, start/end times, and billable status
  2. Add formula properties to auto-calculate duration in hours and billable amounts based on your hourly rate
  3. Build filtered views by client, project, and billing period to generate invoices quickly
  4. Set up relation properties to link time entries to your client and project databases
  5. Use templates and keyboard shortcuts to log new time entries in under 30 seconds

If you bill clients by the hour, tracking time accurately makes the difference between getting paid fairly and leaving money on the table. Notion’s database features let you build a custom time tracking system that calculates billable amounts, filters by client or project, and prepares invoice data—without paying for another SaaS tool.

This guide walks you through building a Notion time tracking template from scratch. You’ll set up the database structure, formulas for automatic calculations, and filtered views that show you exactly what to invoice each client.

Why Track Time in Notion Instead of a Dedicated App

Dedicated time tracking apps often charge €10–20 per month and live in yet another browser tab. If you already use Notion for client management, project notes, or task lists, keeping your time log in the same workspace eliminates context switching.

Freelancer working on laptop with time tracking template open
Photo by Andrea Piacquadio on Pexels

Notion’s databases let you link time entries directly to client records and project pages. When you open a client’s page, you see all logged hours in one place. You can also customise properties, formulas, and views to match your exact billing workflow—hourly, daily retainers, or mixed rates.

The trade-off is manual entry: Notion doesn’t run a live stopwatch (though you can use a phone timer and log the result). If you prefer automatic tracking with desktop agents, stick with tools like Toggl or Harvest. But if you’re happy logging hours after each session, Notion gives you total control and no recurring fees.

What You Need Before You Start

You’ll create three connected databases: Clients, Projects, and Time Entries. If you already have a client database (for example, from a Notion CRM template for freelancers), you can reuse it and skip that step.

Decide your billing structure. Write down your standard hourly rate and any special rates for specific clients or project types. You’ll use these numbers in formula properties.

Choose your billing period. Will you invoice weekly, bi-weekly, or monthly? This determines how you’ll filter time entries when preparing invoices.

Step 1: Create the Clients Database

Add a new database in Notion and name it “Clients.” Set the default view to Table. This database stores basic client information and hourly rates.

Stopwatch and notebook on desk for logging billable hours
Photo by MART PRODUCTION on Pexels

Add these properties:

  • Client Name (Title) – the company or person you’re billing
  • Email (Email) – for sending invoices
  • Hourly Rate (Number, formatted as currency) – your standard rate for this client
  • Status (Select) – options like Active, On Hold, Completed

Each client gets one row. If you work with multiple contacts at the same company, use the Email property for the main billing contact.

Step 2: Create the Projects Database

Add a second database called “Projects.” This connects each project to a client and lets you track billable versus non-billable work.

Add these properties:

  • Project Name (Title)
  • Client (Relation to Clients database) – link each project to one client
  • Project Type (Select) – options like Consulting, Design, Development, Research
  • Billable (Checkbox) – checked by default; uncheck for internal or pro-bono projects
  • Status (Select) – options like Active, Completed, On Hold

When you create the relation property, Notion will ask if you want to add a rollup in the Clients database. Say yes; this creates a “Projects” relation on each client page, showing all linked projects automatically.

Step 3: Create the Time Entries Database

This is your main time log. Add a third database called “Time Entries” and set it to Table view initially (you’ll add other views later).

Add these properties:

  • Task / Description (Title) – a short note like “Client call re: Q1 budget” or “Wireframe revisions”
  • Date (Date) – the day you did the work
  • Start Time (Text) – use 24-hour format, e.g. “09:00”
  • End Time (Text) – e.g. “10:30”
  • Project (Relation to Projects database)
  • Client (Rollup from Project → Client, Show original) – this auto-fills the client name once you select a project
  • Billable (Rollup from Project → Billable, Show original) – inherits the project’s billable status; you can override it per entry if needed
  • Hourly Rate (Rollup from Client → Hourly Rate, Show original)

Now add two formula properties to calculate duration and cost automatically.

Step 4: Add Formulas to Calculate Hours and Amount

Create a property called “Duration (Hours)” and set its type to Formula. Paste this formula:

if(empty(prop("Start Time")) or empty(prop("End Time")), 0, 
  dateBetween(
    parseDate(prop("Date").format("YYYY-MM-DD") + " " + prop("End Time")), 
    parseDate(prop("Date").format("YYYY-MM-DD") + " " + prop("Start Time")), 
    "minutes"
  ) / 60
)

This calculates the difference between start and end times in hours. If either time is blank, it returns 0.

Create a second formula property called “Billable Amount” with this formula:

if(prop("Billable"), prop("Duration (Hours)") * prop("Hourly Rate"), 0)

This multiplies duration by your hourly rate only if the “Billable” checkbox is checked. Non-billable entries return €0.

Format both formula properties as numbers. Set “Billable Amount” to currency format (euro or your preferred currency).

Step 5: Build Filtered Views for Invoicing

You’ll create several views of the Time Entries database to group and sum hours by client or billing period.

Add a new view called “By Client” and set the view type to Table. Group by “Client” and add a sum at the bottom of the “Billable Amount” column. This shows total billable charges per client.

Add another view called “This Month (Billable)” and filter it to show only entries where:

  • Billable = Checked
  • Date is within This month

Sort by Date descending. Group by Client. Add sums for “Duration (Hours)” and “Billable Amount.” This view becomes your monthly invoice worksheet.

Create a “Last Month” view with the same filters, but change the Date filter to “Last month.” Use this at the start of each month to prepare invoices for the previous period.

If you invoice weekly or bi-weekly, duplicate one of these views and adjust the Date filter to “This week” or “Past 2 weeks.”

Step 6: Set Up a Template Button for Quick Entry

Logging time should take seconds, not minutes. Notion’s template buttons let you pre-fill common fields.

Open the Time Entries database. Click the ▼ arrow next to “New” and select “New template.” Name it “Log Time.”

Pre-fill the Date property to “Today” (Notion’s default). Leave Start Time, End Time, and Description blank—you’ll fill those each time.

If most of your work is for one or two main clients, pre-select the Project property. Otherwise, leave it blank.

Save the template. Now when you click “New” in the Time Entries database, you’ll see a “Log Time” button. Click it to create a new entry with the date already set.

For even faster logging, add the template button to your Notion sidebar. Open the Time Entries database, click the three dots (•••) in the top right, and select “Add to favorites.” Pin the “This Month (Billable)” view for quick access.

How to Log a Time Entry in Under 30 Seconds

Open the Time Entries database. Click your “Log Time” template button or create a new entry.

Fill in the description: a short phrase like “Reviewed Q1 analytics” or “Client call—budget questions.”

Enter Start Time and End Time in 24-hour format (e.g., “14:00” and “15:30”). If you worked in blocks, log each block as a separate entry for accuracy.

Select the Project. The Client, Billable status, and Hourly Rate will populate automatically via rollups. Check that “Billable” is ticked if this work should be invoiced.

The “Duration (Hours)” and “Billable Amount” columns update instantly. Close the entry and you’re done.

Linking Time Tracking to Your CRM and Project Pages

Because you used relation properties, every client and project page now shows linked time entries. Open any client page and you’ll see a “Time Entries” rollup (Notion created this when you made the relation). Toggle it to Table view to see all logged hours for that client.

This two-way link eliminates the need to search or filter. When a client emails asking “How much time did you spend last week?”, open their page and you have the answer in seconds.

If you already track clients in a Notion CRM template, link your Time Entries database to that CRM’s Clients table. Your time log and pipeline live side by side.

Ready-made Notion template

Scrum Board PRO

A complete agile project-management system in Notion: sprint board, backlog with MoSCoW priorities, bug tracker, sprint planner with burndown, meeting notes and reports. Set up in 10 minutes, no monthly subscription.

Get the template ($30) →

Generating an Invoice from Your Time Log

Notion won’t create a PDF invoice for you, but it gives you all the data you need to copy into your invoicing tool or email.

Open the “Last Month” view (or whichever billing period you use). The view is already grouped by Client, with sums for hours and amount.

Click a client group to expand it. You’ll see every billable entry: date, description, duration, and amount. Copy this list into your invoice template, Google Doc, or accounting software.

If you track invoices in Notion, add an “Invoices” database with a relation to Clients. When you create an invoice, link it to the client and include a rollup of time entries for that period. You’ll have a complete audit trail from time log to payment. Tools like AI invoice and expense tracking systems can automate the next step if you need PDF generation and payment reminders.

Advanced: Tracking Multiple Rates and Discounts

Some projects have special rates. Instead of storing a single “Hourly Rate” on the Client page, add a “Rate” property (Number, currency) directly to the Time Entries database.

Keep the “Hourly Rate” rollup from the Client database as a default. Then add a new formula called “Effective Rate:”

if(empty(prop("Rate")), prop("Hourly Rate"), prop("Rate"))

This uses the entry-specific “Rate” if you filled it in, or falls back to the client’s standard rate. Update your “Billable Amount” formula to multiply prop("Effective Rate") instead of prop("Hourly Rate").

For discounts or bulk hours, add a “Discount %” property (Number) and adjust the formula:

if(prop("Billable"), 
  prop("Duration (Hours)") * prop("Effective Rate") * (1 - prop("Discount %") / 100), 
  0
)

Leave “Discount %” blank for full-rate entries; enter 10 for a 10 % discount.

Using Notion Templates to Speed Up Setup

Building these databases from scratch takes 30–45 minutes. If you want a faster start, look for free or paid Notion time tracking templates online. Check that any template includes formula properties for automatic calculations and relation links to client/project databases.

Many freelancer-focused templates bundle time tracking with invoicing, expense logs, and project management. For example, Notion templates for freelancers often include these features pre-configured.

If you run an agile team and want time tracking alongside sprint boards and backlogs, Scrum Board PRO (€30) includes a complete project-management system in Notion: sprint board, backlog with MoSCoW priorities, bug tracker, sprint planner with burndown, meeting notes and reports. It sets up in 10 minutes with no monthly subscription.

Once you have a template, customise it by renaming properties, adjusting formulas, or adding your own views. Notion’s flexibility means you’re never locked into someone else’s workflow.

Tips for Consistent Time Logging

Log time daily, not weekly. Waiting until Friday to remember Monday’s tasks leads to guesswork. Set a 5 PM reminder to fill in any missing entries before you close your laptop.

Use descriptive task names. “Client work” won’t help you or the client months later. Write “Drafted Q1 content strategy” or “Debugged checkout flow.” Future you (and your invoices) will thank you.

Review your time log weekly. Open the “This Week” view every Friday. Check for blank fields, accidental duplicates, or entries marked non-billable by mistake.

Link time entries to meeting notes. If you track meetings in Notion (for example, with a meeting agenda template), add a relation from Time Entries to your Meetings database. You’ll see exactly how much time each recurring call costs.

Comparing Notion Time Tracking to Other Tools

Notion works best if you want an all-in-one workspace and don’t mind manual entry. Dedicated time trackers like Toggl, Clockify, or Harvest offer automatic timers, browser extensions, and calendar integrations that Notion lacks.

Notion’s advantage is zero ongoing cost and complete customisation. You own the data, control the formulas, and integrate time tracking with your CRM, project boards, and finance tracker. If you already manage clients and projects in Notion, adding time tracking keeps everything in one place.

If you need automatic tracking or integrations with tools like Jira or Asana, use a dedicated app and export the data to Notion monthly for invoicing. Some freelancers run a timer in Toggl and copy the weekly summary into their Notion time log.

Connecting Time Tracking to Financial Reporting

Once you log billable hours, you can link them to income tracking. If you use a Notion finance tracker, create a relation from your Invoices database to Time Entries. Each invoice shows the underlying time log, and your dashboard displays total billable hours alongside revenue.

Add a “Paid” checkbox to your Invoices database. When a client pays, check it. You can then filter Time Entries to show only unpaid hours, giving you a real-time accounts receivable view.

For expense tracking and tax prep, pair your time log with an invoice and expense system. Tools like AI-powered invoice and expense trackers can auto-categorise costs and generate reports for your accountant.

Using Dashboards to Monitor Billable Utilisation

Freelancers and consultants often aim for 20–30 billable hours per week. A Notion dashboard can show you if you’re on track.

Create a new page called “Dashboard” and add linked views of your Time Entries database. Use filters and date ranges to display:

  • This Week (Billable): sum of Duration (Hours), filtered to This week and Billable = Checked
  • This Month (Billable): same filters, but This month
  • By Client (This Month): grouped by Client, showing which clients consumed the most time

Add a text block with your weekly target (e.g., “Target: 25 hours”) and compare it to the “This Week” sum each Friday. If you’re consistently under target, you know you need to prospect for more work or reduce non-billable tasks.

For more dashboard ideas, see Notion dashboard ideas for small business owners.

Troubleshooting Common Issues

Duration formula returns 0 or incorrect hours: Check that Start Time and End Time are in 24-hour format (e.g., “14:00” not “2:00 PM”). The formula expects plain text in HH:MM format. If you work past midnight, split the session into two entries (one ending at “23:59”, the next starting at “00:00” the following day).

Billable Amount is blank: Verify that the “Billable” checkbox is ticked and that the “Hourly Rate” rollup shows a number. If the client page has no rate entered, the rollup will be empty and the formula returns 0.

Rollup properties don’t show data: Open the relation property settings and confirm the relation is to the correct database. If you renamed databases, Notion might lose the link. Delete and recreate the relation if needed.

Views don’t filter correctly: Date filters like “This month” update automatically, but if you duplicated a view, check that you updated the filter values. “Last month” and “This month” look identical in the filter UI; hover to see the actual setting.

Extending Your Time Tracking System

Once you’re comfortable logging hours, add features like:

  • Tags for task types: Add a “Task Type” multi-select (Meeting, Email, Design, Development, Admin) to analyse where time goes. Use a grouped view to see how much time you spend in meetings versus deep work.
  • Estimated vs actual hours: Add an “Estimate (Hours)” property to projects. Compare the sum of actual logged hours to your estimate. This helps you quote more accurately on future projects.
  • Non-billable tracking: Create a separate view for non-billable entries (Billable = Unchecked). Review it monthly to see if internal tasks or freebies are crowding out paid work.
  • Integration with project timelines: If you use a Notion roadmap template or sprint planning template, link time entries to epics or sprints. You’ll see which features consumed the most hours.

Keep the system simple at first. Add complexity only when you feel a clear need.

Resources for Further Learning

Notion’s official help center has video tutorials on databases, relations, and formulas. Search “database relations” and “formula property” to learn the underlying concepts.

If you want to see how other freelancers and agencies use Notion, explore the Notion templates category on Digitify for setup guides and real-world examples.

For broader workflow ideas, Notion for remote teams shows how to combine time tracking, project boards, and documentation in one workspace.

Frequently asked questions

Can I track time automatically in Notion?

Notion doesn't have a built-in timer or automatic tracking. You log start and end times manually, or use a separate timer app (like Toggl or a phone stopwatch) and record the result in Notion. If you need automatic desktop or mobile tracking, use a dedicated time tracker and export the data to Notion weekly.

How do I calculate billable hours in Notion?

Use a formula property that subtracts your start time from end time, then divides by 60 to convert minutes to hours. Multiply the result by your hourly rate in a second formula to get the billable amount. The formulas update automatically whenever you change start or end times.

Can I use Notion for client invoicing?

Notion stores and calculates invoice data (hours, amounts, client details) but doesn't generate PDF invoices or send payment reminders. You can copy the data from a filtered Notion view into your invoicing tool, accounting software, or a Google Doc template. Some freelancers link Notion to tools like Zapier or Make to automate invoice creation.

Is there a free Notion time tracking template?

Yes, Notion's template gallery and community sites offer free time tracking templates. Search "time tracking" in Notion's template picker, or look for freelancer templates that include time logs, client databases, and project lists. Check that any template uses formulas to auto-calculate hours and amounts, not manual entry.

How do I track multiple hourly rates in Notion?

Add a "Rate" property to your Time Entries database. Use a formula to check if a custom rate is entered; if not, fall back to the client's standard rate from a rollup. This lets you override the rate on a per-entry basis for special projects or discounted work.

Can I export time tracking data from Notion?

Yes. Select a view or the entire database, click the three-dot menu, and choose "Export." Notion exports to CSV or PDF. CSV files open in Excel or Google Sheets, where you can format invoice reports or import into accounting software. Exports include all visible columns and rows based on your filters.