Time Tracking

Track billable hours with built-in timer, then convert entries to invoices automatically.

Overview

Time tracking features:

  • Built-in timer with start/stop
  • Manual time entry
  • Link to tasks and projects
  • Billable vs non-billable tracking
  • Convert to invoice line items
  • Detailed reports

Using the Timer

Start Tracking

  1. Navigate to Agency OS → Time Tracking
  2. Select a Project and Task
  3. Add optional description
  4. Click Start Timer

Stop Tracking

  1. Click Stop Timer
  2. Review the time entry
  3. Edit if needed:
    • Adjust start/end time
    • Add notes
    • Mark as billable
  4. Click Save Entry

Manual Time Entry

Add past work that wasn't tracked in real-time:

  1. Click Add Manual Entry
  2. Select Project and Task
  3. Enter:
    • Date - When work was done
    • Hours - Duration
    • Description - What was accomplished
    • Billable - Toggle billable status
  4. Click Save Entry
POST /wp-json/agency-os-ai/v1/time-entries { "project_id": 5, "task_id": 23, "user_id": 3, "start_time": "2026-03-31T09:00:00", "end_time": "2026-03-31T12:30:00", "description": "Homepage design mockups", "billable": true, "hourly_rate": 150.00 }

Time Entry Fields

Field Type Description
project_id integer Associated project
task_id integer Associated task
user_id integer Team member who tracked time
start_time datetime When tracking began
end_time datetime When tracking ended
duration integer Duration in seconds
description string Work description
billable boolean Can be invoiced
hourly_rate decimal Rate for this entry
invoiced boolean Has been invoiced
invoice_id integer Linked invoice

Getting Unbilled Entries

View all time entries ready for invoicing:

GET /wp-json/agency-os-ai/v1/time-entries/unbilled?client_id=15 Response: { "entries": [ { "id": 12, "project_name": "Website Redesign", "task_name": "Design mockups", "date": "2026-03-28", "hours": 4.5, "description": "Created homepage concepts", "amount": 675.00 } ], "total_hours": 4.5, "total_amount": 675.00 }

Billable vs Non-Billable

Type Description Invoicable
Billable Client-facing work Yes
Non-Billable Internal work, admin No

Reports

Generate time reports by:

  • Project - Hours per project
  • Team Member - Hours per user
  • Date Range - Custom time periods
  • Client - Hours per client

API Endpoints

GET /wp-json/agency-os-ai/v1/time-entries

List time entries. Params: project_id, task_id, user_id, billable, from_date, to_date

GET /wp-json/agency-os-ai/v1/time-entries/unbilled

Get unbilled entries for invoicing. Params: client_id, project_id

POST /wp-json/agency-os-ai/v1/time-entries

Create time entry.

PUT /wp-json/agency-os-ai/v1/time-entries/{id}/mark-invoiced

Mark entry as invoiced.

Related Documentation