Worked time
Worked time counts from when an agent opens a session until they update it: a reply, an internal note, a status change, a close, an assignment, a merge and so on. The time is credited at the update. For an agent’s next update on the same session, only the time since their previous update counts, and never time from before their working day began, so nothing is counted twice. Time spent looking at a session without updating it is shown separately as viewing, not as worked time. Each update carries two measures:- Focused time (the default): time the agent was actively working on that session.
- Open time: time the session was open in the agent’s browser tabs, focused or not, the way ticket-tab timers count it. Use it to compare with numbers from a ticket-based tool.
What is recorded
- Availability changes: every time an agent’s status changes, from any source: the status menu, the Members page, the public API, calendar or helpdesk sync. Custom statuses such as Lunch or Break are included by name. Removing a member from the workspace records them going offline.
- Focused time: a stretch starts when an agent works in the OpenCX dashboard and ends at their last mouse or keyboard input. It only runs while the tab is visible, the window has focus, and the agent used mouse or keyboard in the last two minutes. A locked screen, a second window, or time away never counts. Each stretch belongs to the session that was open, or to no session.
- Open time: a stretch runs while a session is open in a browser tab, focused or not, and ends when the agent moves to another session or closes the tab. Time while the computer sleeps never counts.
- Updates: replies, internal notes, closes, reopens, assignments, tags, statuses, snoozes, priority changes and merges on each session, by the agent who made them. Replies sent through the public API in an agent’s name are not counted as that agent’s work.
Build your dashboard
Ask Companion in your own words, for example:- “How much did each agent work yesterday, in seconds?”
- “Show me the raw update table for Sam yesterday.”
- “What’s each agent’s open time over the last 7 days, with overlaps removed?”
- “Show average handle time per update by agent this month.”
- “How much time did agents spend viewing sessions they didn’t update?”
- “How many hours was each agent online last week, excluding Lunch?”
- “Who is working on which session right now?”
- “Build a timesheet dashboard with a row per agent, a day timeline and a CSV export.”
Updates by one agent on one session in the same second count as one update: its time is on one row, and the others are empty. When sessions are merged, time spent on a merged session counts toward the session it was merged into, including chains of merges and merges made after the work:
effective_session_id is the session the time belongs to, and session_id keeps the one the agent had open. A status lasts until the agent’s next change, so an agent who went online yesterday is still online today with no new row. An empty status_name is the built-in Online or Offline state. Reports reflect the latest synced data, so the last minute or two can take a moment to appear.