Time tracking settings

Overview
This page maintains the activity types — the time categories chosen from when recording time. Each carries a label, code, billability, sort order and active state.
Small but consequential: the activity type helps decide whether an hour is worth money.
Core tasks
Create an activity type. Label and code; the code is the short form for lists and reports.
Set billability — or let it inherit. Three options:
| Setting | Effect |
|---|---|
| Billable | time of this type is chargeable in principle |
| Not billable | time of this type is not — internal meetings, for instance |
| Project type default | left empty: billability comes from the project type |
The third option is the interesting one. An activity type such as "consulting" can be billable on a customer engagement and non-billable on an internal initiative — with inheritance, that needs no two categories. The project type supplies the default.
Maintain order and active state. The order governs the display in the picker; deactivating takes a type out of the offering without touching existing bookings.
Fields in detail
The What it does column answers what changes in the system — not what the field is called. The grey name behind the label is the API field: the same thing runs under that name through automation, import and AI tools.
Time category
| Field | Required | Values / format | What it does |
|---|---|---|---|
Name name | yes | text, max. 100 characters | What the recorder sees in the selection. |
Code code | yes | text, max. 50 characters | The short identifier for reporting and export. Do not change it once time is booked on it — otherwise old reports run empty. |
Billable by default defaultBillable | no | yes/no | What billable is pre-filled with when this category is chosen. A default only — it stays changeable on the entry. |
Hourly rate hourlyRateAmount | no | amount, 0 or greater | The selling rate per hour for this activity. It only applies when no price list takes precedence — customer, contract and project come first. Empty = no rate of its own for this activity. |
Order sortOrder | no | number | Position in the selection. What is needed daily belongs at the top. |
Active active | no | yes/no | Off means no longer selectable; booked time keeps the category. The right route for an activity that no longer exists. |
Rounding rule
Rules apply from specific to general: a contract rule beats a project rule, which beats the general one.
| Field | Required | Values / format | What it does |
|---|---|---|---|
Project projectId | no | an existing project | Which project the rule applies to. Empty means all. |
Contract contractId | no | an existing contract | Which contract the rule applies to. Contracts often carry their own rounding — this is where it lives. |
Increment (minutes) increment | yes | greater than 0 | Which multiple is rounded to. 15 means quarter hours. |
Direction mode | yes | none, up, down, nearest | Which way to round. Up is the usual choice for customer billing, nearest the fair one for internal reporting; none leaves the minutes as recorded. |
Active active | no | yes/no | Off means the rule is skipped and the next more general one applies. |
Settings & permissions
- Module
module.timetracking. - Permission
time.category.manage. - Few clear types beat many fine ones. Offering twenty activity types yields twenty different
interpretations — and a report that separates nothing.
- Deactivate rather than delete — existing time entries keep their type.
FAQ & troubleshooting
Time is not billable although it should be. Check the activity type. If it is set to project type default, the project type decides.
An activity type does not appear when recording. It is deactivated.
We want to change the type of an old booking. For locked entries that only works through reversal and re-booking, see Time tracking.
How many activity types make sense? As few as can be told apart reliably. Anything regularly chosen wrongly distorts reporting more than it refines it.