Feature documentation
Time Tracking & Billing
Hours logged where the work happened, recorded where the money is.
Technicians log time in the portal and it lands in the PSA as a real time entry — with work type, work role and billable status. Time logged in the PSA flows back the other way. The thread itself answers the question every time-and-materials reader has: how long did this take, and does it bill?
Three ways to log time
Use the Log Time panel on a ticket, attach hours to a reply as you send it, or run the global timer from the header and log the tracked minutes against any ticket. Free-form durations are accepted — 0.30h and 18 minutes are as valid as a tidy quarter hour.
The time panel reconciles both systems
The entries list shows every entry the PSA holds plus anything the portal logged that has not landed yet. Each row states which system it came from, its sync status, and — when the PSA rejected it — the provider’s own error verbatim, with a retry that re-sends the original entry rather than asking anyone to re-type it.
- Totals count only time the PSA actually holds, so the figure reconciles with the provider’s summary.
- Edit and delete synced entries from the portal; aggregates are recomputed from the PSA after every change.
- A rejected entry is kept, flagged, and retryable — logged work is never silently lost.
Setting it up: a worked example
Time logging needs one piece of setup per PSA connection, because providers disagree about who may own an entry. Open Dashboard → PSA Connections → your connection → Sync settings → Time entry defaults, then:
- Time entry technician — the person portal-logged time is filed under. Pick a real technician (for example "Jane Cooper", an engineer who works tickets), NOT the API or administrator account: Autotask refuses to let its own integration user own time, and rejects the entry outright.
- Default work role — leave it on "the technician's own role" unless you have a reason not to. Autotask only accepts a role that technician actually holds, so a role picked from the full list can be one that pairing does not exist for.
- If a configured role turns out not to belong to that technician, the portal uses a role they do hold rather than losing the entry — and if they hold none at all, it says so plainly instead of returning the provider's raw error.
- ConnectWise is less strict: it needs a member, and the work role is optional.
When the PSA says no
A rejected entry is kept, flagged, and retryable — the technician's work is never discarded because a provider was unhappy. The row carries the provider's own message, refreshed on every attempt, so a retry that fails for a new reason shows the new reason rather than the one from last time.
Time on the reply itself
When a reply logs time, the entry is linked to that exact note and the thread shows the duration and billable status directly on the reply card. PSA-side time entries appear in the thread the same way, so the conversation and the timesheet tell one story. Clients never see any of it — hours are billing data and are stripped server-side from the client view.
Keep your PSA. Upgrade your client experience.
Desk Portal gives your clients a modern support experience while your team continues working in the PSA they already know.