KW Knowledge base

Timesheets

Logging time across tickets, projects, and ad-hoc work, with week / day views, billable flagging, and CSV export.

Mitch Wigham
Updated 24 June 2026 · 6 views

What Is the Timesheets Module?

The Timesheets module is the platform's unified time-tracking surface — for ticket work, project work, and ad-hoc work that doesn't belong to either. It's the only place to log general time entries (admin, training, meetings) that aren't tied to a specific ticket or project.

Where to find it: Sidebar → Timesheets or /timesheets. Requires the timesheets feature.

Layout

The timesheet view defaults to the current week. Use the Prev / This week / Next pill-group to navigate, and the + Log time action to record a new entry.

A 5-card KPI strip at the top shows:

  • Total — all logged minutes for the visible week.
  • Billable — minutes flagged billable = true.
  • Tickets — minutes logged against a ticket.
  • Projects — minutes logged against a project.
  • Manual — minutes logged as a general entry (no ticket or project).

Logging Time

Click + Log time. The form asks for:

  • KindTicket, Project, or General.
  • Date — defaults to today; backdate if logging after the fact.
  • Duration — hours and minutes (e.g. 1h 30m).
  • Subject — short label, shown in day-bucket headers.
  • Description — optional longer note.
  • Billable — checkbox, on by default for project work; defaults from the ticket's billable flag for ticket work.
  • Linked record — the ticket, project, or — for General — no link.

Click Log time. The entry appears in the day-bucket for the date you picked, and the KPI strip updates.

Editing & Deleting Entries

Click the pencil icon on a day-bucket entry to edit. Click the X to delete.

  • Agents can edit or delete their own entries for up to 24 hours after creation.
  • MANAGER and ADMIN can edit any entry at any time (useful for catching up after a holiday).

Day Buckets

Each day in the visible week is a card with the day's total at the top. Inside, entries are listed with the subject, kind icon, billable flag, and duration.

Click + Add on a day card to log a new entry that defaults to that day.

Time Tracking on Tickets

Logging time on a ticket can be done two ways:

  1. From the ticket detail page → Log time button (or the clock icon in the sidebar). The form pre-fills the ticket link.
  2. From the Timesheets page → + Log time with Kind = Ticket and the ticket selected.

Both produce the same TimeEntry row; the second is for "I'm catching up my timesheet at end of day" workflows.

Time Tracking on Projects

Same pattern — from a project's detail page (the Time card) or from the Timesheets page with Kind = Project. Project time entries are surfaced in project reports and (when billable) roll up into customer billing.

General Entries

Use General entries for work that doesn't belong to a ticket or project: admin, training, internal meetings, learning, or off-the-clock support. General entries are always non-billable.

Exporting & Reporting

Click Export CSV to download the visible week as a CSV. Columns: date, agent, kind, subject, description, billable, duration (minutes), linked ticket / project.

The CSV is useful for:

  • Payroll (filter by agent in the timesheet first, then export).
  • Customer billing review (filter by project, then export).
  • Utilisation analysis (filter by agent + date range).

API Access (for external payroll / BI)

Time entries are first-class API objects. A common external use is syncing time to a payroll system (e.g. Xero, Sage) or pushing into a BI tool for utilisation reports.

# Authenticated.
TOKEN=$(curl -s -X POST https://portal.kwgroup.org.uk/api/auth/login \
  -H 'content-type: application/json' \
  -d '{"email":"you@example.com","password":"...","mfaCode":"123456"}' \
  | jq -r .accessToken)

# Pull your own time entries for a date range (as the logged-in user).
curl -s -H "authorization: Bearer $TOKEN" \
  "https://portal.kwgroup.org.uk/api/helpdesk/time?from=2026-06-01T00:00:00Z&to=2026-06-08T00:00:00Z"

# Admins / Managers can pull entries for a specific agent.
curl -s -H "authorization: Bearer $TOKEN" \
  "https://portal.kwgroup.org.uk/api/helpdesk/time?agentId=<userId>&from=2026-06-01T00:00:00Z&to=2026-06-08T00:00:00Z"

Time entries are tenant-scoped — the API only returns entries for organisations the authenticated user is a member of. An ADMIN in tenant A cannot see tenant B's time entries.

See Also

Still need help?

Log a support ticket and the team will pick it up from this page.