Time Tracking & Timesheets
Overview
Time tracking lives at Configuration → Time (/configuration/time). You record work as time entries, entries roll up into weekly timesheets that run Monday through Sunday, members submit each week, and a timesheet approver approves or rejects it. Approved billable time feeds reports, CSV exports, and draft Stripe invoices (see PSA Integrations & Billing).
Each entry can carry an optional agent, ticket, and category, plus a billing status: unclassified, billable, non_billable, or logging_only. Everything on this page is scoped per organization: roles, hourly rates, and entries all belong to the organization you are working in.
Roles and who grants them
Two privileges control the time-tracking and billing workflow. Both are granted per organization from the Roles & privileges card on Configuration → Time, and only a workspace owner can manage them. Org admins who are not owners cannot manage roles.
| Privilege | What it allows |
|---|---|
timesheet_approver | Review, approve, and reject every member's timesheets; set hourly rates; run reports; export CSV. Not implied by admin or owner. |
billing_approver | Generate draft Stripe invoices. Not implied by anything else, including owner. Owners can grant it to themselves. |
You are a workspace owner if any of these is true: you created the workspace, you were granted the workspace_owner privilege (an additional owner), or your membership carries the Clerk owner role. The creator's ownership can never be revoked.
Grant a role (owner walkthrough)
- Sign in as a workspace owner and go to Configuration → Time
- Open the Roles & privileges card. If the card is not shown, you are not an owner of this workspace
- Select the member you want to grant the role to
- Select the role (
timesheet_approverorbilling_approver) and grant it - Repeat in each organization that needs the role. Grants do not carry over between organizations
Tracking time
Entries come from three sources: the timer, manual entries, and auto-capture.
The timer
- On Configuration → Time, start the timer when you begin work. You can have one running timer at a time
- Stop it when you finish; the elapsed time becomes an entry
- Set the entry's agent, ticket, category, and billing status as needed
Manual entries
- Create a new entry and enter the duration and description
- Optionally attach an agent, ticket, and category
- Set the billing status, or leave it
unclassifiedand let an automation classify it
Auto-capture
When you finish a live session, remote desktop session, shell session, or file transfer, ET Ducky automatically creates a draft time entry attributed to the dashboard user who ran it. There is no minimum duration. The entry's source is labeled live_session, remote_desktop, shell, or file_transfer. Captured entries start out unclassified; a classification automation (next section) can set their billing status and category for you, so the week is already tidy when you go to submit it.
Set up billable classification
Instead of classifying captured entries by hand, create an automation that does it the moment an entry is captured.
- Go to Systems → Automations and click + New Rule
- Set the trigger to Time Entry Captured (
time_entry_captured) - Add conditions to scope the rule. Condition fields:
source,clerk_user_id,agent_id,duration_seconds,ticket_id,description,time_entry_id. Example:sourceequalsremote_desktopAND the agent is taggedclient-x - Set the action to Classify Time Entry, choose the billing status (billable, non-billable, or logging only), and optionally a category
- Save the rule and make sure it is enabled
Classify Time Entry only applies while the entry is still a draft; once an entry has been submitted it is no longer changed by the rule. See Automations for conditions, multiple actions, and run history.
Submitting a week
Timesheet weeks run Monday through Sunday. Submit each week when it is complete:
- On Configuration → Time, open the week you want to submit
- Review your entries and fix any that are unclassified or missing details
- Stop any running timer you want included; running timers are skipped at submission
- Submit the week. Your draft and rejected entries for that week flip to
submitted
If the approver rejects the week, it reopens: edit the entries and resubmit the same week.
Approving timesheets
Approval requires the timesheet_approver privilege. Approvers see every member's timesheets.
- On Configuration → Time, open a submitted week
- Review the entries and their billing statuses
- Approve the week, or Reject it with a note explaining what to fix. Rejected weeks reopen for the member to edit and resubmit
Rate snapshots
Approval snapshots each entry's current hourly rate. Later rate changes never alter past invoices: an entry approved at $150/hour stays $150/hour on every report and invoice draft built from it, even if the member's rate changes afterward.
Hourly rates
Rates are set by the timesheet approver in dollars per hour, per member per organization. The same person can have different rates in different client organizations. Because approval snapshots the rate (above), change rates whenever you need to; already-approved weeks keep the rate they were approved at.
Reports and CSV export
Reports are approver-only. They total time per member and per category, with a billable/non-billable split and dollar amounts, and can be exported as CSV. Members with the billing_approver privilege additionally see a Generate invoice draft button on the report card, which creates a draft Stripe invoice from approved billable time; see PSA Integrations & Billing for the Stripe setup.
Visibility and Smart Reports
Members see only their own entries. The timesheet approver sees everyone's. The same gate applies in Smart Reports and Data Explorer: the TimeEntries dataset is visible only to timesheet approvers. Everyone else gets the message "This data source requires the timesheet_approver privilege".
Troubleshooting
Why can't I see the Roles & privileges card?
You are not a workspace owner. The card is owner-only; being an org admin is not enough. An existing owner can make you an additional owner by granting the workspace_owner privilege.
Why is the TimeEntries dataset rejected in Smart Reports / Data Explorer?
You do not have the timesheet_approver privilege in this organization. Ask a workspace owner to grant it from Configuration → Time → Roles & privileges.
Why did my rejected week reopen?
By design. Rejection puts the week back into an editable state so you can correct the entries and resubmit. Read the approver's rejection note, fix the entries it mentions, and submit the week again.
Related
See PSA Integrations & Billing for forwarding time and billing events to your PSA and generating draft Stripe invoices, and Automations for the Time Entry Captured and Timesheet Submitted triggers and the Classify Time Entry, Push Time Entry to PSA, and Create Invoice Draft (Stripe) actions.