Time Tracking
The bridge between work and money. Every hour logged in ACOS is linked to a project, classified as billable or non-billable, and used to calculate your real project margin. No spreadsheet. No re-entry.
Why Time Tracking Matters
Without accurate time data, project profitability is guesswork. ACOS uses time entries to calculate two things that determine whether your business is healthy:
- Revenue — billable hours × billing rate = what you can charge the client. This becomes invoice line items.
- Cost — all hours × cost rate = what that work costs internally. Even non-billable time has a cost.
The difference between revenue and cost is gross profit. Margin is gross profit as a percentage of revenue. ACOS shows you this in real time on every project — so you know whether you're winning or losing before the month ends.
Resistance to logging time is the #1 reason operational software fails at service companies. ACOS makes time entry as fast as possible: the timer is always in the top bar, the mobile view is optimized for quick logging, and logging from a task pre-fills everything automatically.
Two Ways to Log Time
Method 1 — Live Timer
The timer widget lives permanently in the top navigation bar, visible on every page of the app. Use it when you want to track time as you work.
Click Start Timer in the top bar
Select a project from the dropdown. Optionally select a specific task. Optionally add a description. Click Start.
Work normally
The elapsed time counter (HH:MM:SS) runs live in the top bar. You can navigate to any page — the timer keeps running.
Stop the timer
Click Stop in the top bar. A review form appears pre-filled with the project, task, description, and calculated hours. Verify the billable toggle and click Save.
Timer persistence
The running timer state is stored in your browser (Zustand with localStorage). If you refresh the page or close and reopen the browser tab, the timer continues from the original start timestamp. It does not stop until you explicitly click Stop.
Only one timer can run per user at a time. Starting a new timer automatically stops the previous one. The previous entry is saved with the hours elapsed at the moment the new timer starts.
Method 2 — Manual Entry
Use manual entry when you need to log time retrospectively — for work done yesterday, on a meeting that just finished, or when you forgot to start the timer.
Click Log Time anywhere
The button appears in the top bar, on any task detail, and on the project Finance tab. All open the same form.
Fill in the form
Date (default today), project, task (optional), description (optional), hours (e.g. 1.5 for 1h30m or 1:30 in time format), billable toggle.
Save
The entry is created. The project's profitability fields update within seconds via a background task.
Time Entry Fields
| Field | Required | Notes |
|---|---|---|
| Date | Yes | Defaults to today. Can be any past date (deletion restrictions apply after 7 days — see below). |
| Project | Yes | Searchable dropdown. Shows projects you are assigned to. |
| Task | No | Searchable dropdown filtered to the selected project. Pre-fills when logging from Task Detail. |
| Description | No | Short note about what you worked on. Appears on the invoice line item if included. |
| Hours | Yes | Decimal (1.5) or time format (1:30). Minimum 0.1h (6 minutes). |
| Billable | Yes (toggle) | Defaults to true. Non-billable time still costs money — it affects margin. |
Billable vs Non-Billable Time
Every time entry is either billable or non-billable. This distinction is critical for accurate profitability:
| Billable | Non-Billable | |
|---|---|---|
| Adds to revenue? | ✓ (hours × billing rate) | ✗ (billed_amount = 0) |
| Adds to cost? | ✓ (hours × cost rate) | ✓ (hours × cost rate) |
| Appears on invoice? | ✓ When invoice generated | ✗ |
| Affects margin? | ✓ Improves margin | ✓ Reduces margin |
Non-billable time affects margin because the cost is real even though you're not charging the client. Examples of correctly non-billable work: internal team meetings, project management overhead beyond what's agreed, learning time, rework caused by your own mistakes.
The billing rate for each entry is determined by: (1) the ProjectMember billing rate override if set, (2) the service default rate if a task is linked to a service, (3) your organization's default billing rate. The cost rate follows the same priority order.
Weekly Time Grid
At /time/ (My Time in the sidebar), you see a weekly grid showing Monday through Sunday as columns. Each day shows:
- Total hours for that day (billable + non-billable)
- Individual time entries as rows with a project color dot, description, and hours
- A quick-add button for each day column
- A weekly summary at the top: total billable hours, non-billable hours, and total
Navigate between weeks using the previous/next arrow buttons. The current week is the default view.
Team Time View
Managers and Admins can view the Team Time section at /time/team/. This shows a monthly utilization breakdown per team member:
- Hours logged by each person (billable and non-billable split)
- Utilization rate (billable hours ÷ 160 available hours per month × 100)
- Color-coded bars: green below 80%, amber 80–100%, red above 100%
- Month selector to navigate history
The Team Time view requires Manager, Admin, or Owner role. Regular Members can only see their own time data.
Editing and Deleting Time Entries
Editing entries
Click any time entry to edit it. All fields can be changed. Editing an entry triggers a recalculation of the linked project's profitability.
Deleting entries — the 7-day rule
Team members (Member role) can delete their own time entries only within 7 calendar days of the entry date. After 7 days, deletion requires Manager, Admin, or Owner role. This rule prevents accidental or retroactive manipulation of invoiced hours.
Time entries linked to a paid invoice cannot be modified directly — they are locked once is_invoiced = true. If you need to correct a billed entry, contact an Admin. The correction should be handled via a credit note or adjustment invoice.
How Time Flows to Invoices
When you generate an invoice from a project (Project → Finance tab → Generate Invoice), ACOS pulls all time entries where:
is_billable = trueis_invoiced = false- Entry is linked to this project
These entries are grouped into invoice line items. When the invoice is marked Paid, ACOS sets is_invoiced = true on all linked entries. They will not appear on future invoices for the same project.
Roles & Permissions
| Action | Member | Manager | Admin | Owner |
|---|---|---|---|---|
| Log own time | ✓ | ✓ | ✓ | ✓ |
| View own time entries | ✓ | ✓ | ✓ | ✓ |
| Edit own entries (within 7 days) | ✓ | ✓ | ✓ | ✓ |
| Delete own entries (within 7 days) | ✓ | ✓ | ✓ | ✓ |
| Edit/delete entries older than 7 days | ✗ | ✓ | ✓ | ✓ |
| View team time (project-scoped) | ✗ | ✓ | ✓ | ✓ |
| View all org time entries | ✗ | ✗ | ✓ | ✓ |
Best Practices
- Log time daily. Reconstructing a week's worth of time on Friday is less accurate and more annoying than logging as you go.
- Use the timer for deep work sessions. Use manual entry for meetings, calls, and short tasks.
- Always set the billable toggle correctly. Incorrect billable status is the most common source of margin calculation errors.
- Link to a task when possible. Time entries linked to tasks give you actual vs estimated hour data that's valuable for future project scoping.
- Review your weekly time grid each Friday. Missing days or suspiciously low hours usually mean forgotten entries.
- For project managers: set a reminder to review team time entries weekly before invoicing. Gaps in time entries mean you may be under-billing.
FAQ
The timer ran overnight by accident. What should I do?
Stop the timer. The system will calculate an unreasonably large number of hours. Edit the time entry immediately to correct the hours before saving — do not save it as-is. If you already saved it, edit it through the weekly grid view.
I need to split a large block of time across two projects. Can I do that?
You cannot split a single timer entry across projects. Stop the timer, create one manual entry for the first project, and another for the second project with the correct hours each.
Why can't I see all projects in the project dropdown when logging time?
The dropdown only shows projects where you are listed as a team member. If a project is missing, ask an Admin or Manager to add you to that project in Project → Settings → Team.
Can I log time for another team member?
No. Each time entry is attributed to the logged-in user. If you need to correct someone else's entry, a Manager or Admin can edit it directly.
What is the minimum time entry I can log?
0.1 hours (6 minutes). There is no maximum — you can log a 10-hour entry if needed.