Welcome to Time Progress Support
Everything you need to get the most out of Time Progress — from your first login to advanced API integrations.
Quick Start Guide
Get your workspace, team, and agent running in a few minutes.
API Documentation
Complete reference for the Agent Ingestion API and Public API v1.
Managing Categories
Organize apps and websites into productive, neutral, and unproductive buckets.
Frequently Asked Questions
Find answers to the most common questions.
Popular Articles
🔌 Agent Ingestion API
How the desktop agent enrolls, syncs activity, and uploads screenshots.
🔑 Public API v1
Read workspace users, devices, activity, and daily aggregates with Bearer tokens.
📸 Screenshot Privacy & Settings
Understand blur, visibility delay, retention, and storage options.
💰 Payroll Runs
Compute pay from attendance data, handle adjustments, and send payslips.
Quick Start Guide
Set up Time Progress for your team in five steps.
1 Create your account
Go to https://www.timeprogress.com/register, enter your email and password, and verify your email. The first user becomes the workspace owner.
2 Complete the onboarding wizard
Name your workspace, pick your timezone/country, choose automatic or manual monitoring, and set screenshot preferences.
3 Install the desktop agent
Download the Windows installer or portable ZIP from Agent → Downloads (or from the onboarding finish step). Run the installer, accept the monitoring disclosure, and sign in with your email and password. The agent starts tracking automatically.
4 Invite your team
Open Team, click Invite Member, enter an email, and choose a role. The invitee accepts via a secure link and is added to your workspace.
5 Configure categories and view the dashboard
Use Settings → Categories to rate apps and websites. Then open the Dashboard to see live activity, productivity scores, top apps, and meeting analytics.
Workspace Setup
How to configure your Time Progress workspace.
Onboarding wizard
New users see a 4-step wizard: create workspace, configure monitoring, invite team members, and finish / download the agent.
Timezone & week start
Set the workspace timezone in Settings. This affects attendance boundaries, shift limits, and the day used for daily aggregates. Choose the first day of the week for weekly reports.
Monitoring mode
- Automatic: the agent tracks whenever the user is within their configured shift window.
- Manual: the user starts and stops tracking from the tray or floating panel.
Workspace tokens
Generate workspace tokens in Settings → Tokens for legacy device enrollment via the /api/v1/agent/register endpoint. Tokens can be revoked at any time.
Web Authentication
How users sign in and prove their identity.
Email & password
The default sign-in method. Passwords are hashed with bcrypt. Sessions use secure, HTTP-only cookies.
Multi-factor authentication (MFA)
Users can set up TOTP-based MFA from Settings. After entering the correct password, a 6-digit code from an authenticator app is required. MFA is also enforced when enrolling the desktop agent via email/password.
Invitation-based access
Admins invite users by email. The recipient clicks a secure tokenized link, creates a password, and joins the workspace automatically.
Role-based access
Roles include Owner, Admin, Manager, Team Lead, HR, Contributor, Time Reporter, Viewer, and Auditor. Permissions are enforced by the role-permission matrix and can be overridden per tenant.
Team Management
Invite, manage, and secure your workspace members.
Team directory
View active members and pending invitations. Each row shows name, email, role, status, last-seen info, and a quick-info modal.
Invitations
- Go to Team and click Invite Member.
- Enter the email and choose a role.
- Pending invitations can be cancelled.
- The invitation email is branded and contains a secure acceptance link.
Roles
Built-in roles: Owner, Admin, Manager, Team Lead, HR, Contributor, Time Reporter, Viewer, Auditor. You can also customize the role-permission matrix in Settings → Roles.
Member actions
- Change role or status (active / disabled).
- Reset password.
- Edit profile: name, email, employee ID, timezone, payroll currency/rate, schedule flags.
- Set remote log level for agent debugging.
- Delete member (owner cannot be deleted).
Dashboard
Your real-time command center for team productivity.
Date ranges
Filter by today, yesterday, this week, last week, this month, last month, or a custom range.
KPI cards
- Active time & idle time
- Productivity score
- Uncategorized percentage
- Total users & active devices
- Screenshot count
Visualisations
Top apps, top window titles, top domains, top categories, category tree chart, sunburst chart, team timeline, and per-app timeline.
Live status & meetings
See who is online/offline, their last seen time, and today's tracked seconds. Meeting analytics include total meeting time, count, average duration, idle overlap, hourly/weekly breakdown, and app usage during calls.
Activity Tracking
What the agent records and how it is classified.
Captured data
The agent records the foreground application name, window title, browser URL (with the browser extension), active/idle state, and aggregate input counters (keystrokes, mouse clicks, moves). It does not capture keystroke content, passwords, clipboard, files, webcam, microphone, or location.
Classification
Each activity is classified as Productive, Unproductive, or Neutral based on the workspace category rules. Uncategorized time is shown separately so admins can fine-tune rules.
Meeting detection
Meetings are detected from window titles for Microsoft Teams, Zoom, Google Meet, Webex, Skype, GoTo, BlueJeans, and Slack huddles.
Idle time
Idle time is calculated from OS input events and merged into continuous idle intervals. A configurable threshold (default 300s) determines when tracking pauses.
Attendance & Schedules
Track presence, shifts, and manual time.
Attendance grid
View attendance by day, week, month, or custom range. Status can be present, absent, late, or partial.
Scheduled shifts
Create recurring (weekly) or one-off schedules with start/end times and working-hours limits. Schedules are timezone-aware.
Manual / offline time
Users can submit offline time requests with a reason and duration. Managers approve or reject them from the attendance page.
Export
Export the attendance grid to CSV for payroll or external reporting.
Reports
Generate detailed reports for every layer of your workforce data.
Available reports
| Report | Description |
|---|---|
| Hours Worked | Per-user daily hours |
| Productivity | Productive / unproductive / neutral percentages and score |
| Attendance | Expected start, actual start, last seen, total hours, status |
| App Usage | Time spent per application |
| Website Usage | Time rolled up by host/domain |
| Project & Tasks | Time per project and task by assigned users |
Export & print
All reports support CSV export. Project & Tasks also supports PDF export. A dedicated print layout is available for clean hard copies.
Screenshots
Visual proof-of-work with privacy controls.
Gallery
Browse screenshots by user and date with pagination. Each screenshot shows the app, title, URL, activity percentage, keyboard/mouse percentage, and productivity percentage.
Privacy controls
- Blur: screenshots can be blurred at capture time.
- Visibility delay: a configurable delay (default 15 minutes) before screenshots appear in the gallery.
- Retention: automatic deletion after the configured number of days.
Project/task assignment
Assign a screenshot's duration to a project and task for accurate client or project billing.
Storage
Screenshots can be stored locally or in Wasabi / any S3-compatible object store with presigned URLs.
Projects & Tasks
Attribute time to client work and internal initiatives.
Projects
- Create, edit, archive, and delete projects.
- Set time limits per week, month, etc.
- Assign all members or specific users.
- Auto-detect projects from activities where configured.
- Export projects to CSV.
Tasks
Each project can have tasks. Users select the current project/task from the agent's floating panel so activity and screenshots are tagged automatically.
Payroll
Compute pay directly from attendance data.
Payroll runs
Create a run for a date range. Time Progress computes pay from each user's rate, rate period (hourly, daily, monthly, yearly), and scheduled hours.
Overtime & adjustments
Apply overtime and short-hour rules per user. Add manual adjustments to any line item. Lock previous pay runs when a new run is created.
Payslips
Send payslip emails to every user in a run with one click.
AI Insights
Understand team wellbeing and focus trends.
Daily AI reports
Generate per-user daily reports that include productivity score, focus score, burnout risk, top distraction, and a written narrative.
AI providers
If Azure OpenAI is configured, narratives are generated by GPT. Otherwise a heuristic fallback generates the narrative locally from the day's data.
Billing
Manage plans, trials, and payments.
Plans
Choose from Free, Starter, Business, or Enterprise plans. Each plan has different feature limits.
PayPal checkout
Upgrades use PayPal orders and capture. A webhook endpoint verifies payment status server-side.
Trial lifecycle
New workspaces start with a 14-day free trial. Reminder emails are sent 3, 2, and 1 days before expiry. Expired free-trial workspaces are automatically suspended.
Privacy / GDPR
Respect user data rights.
Data export
Users can export their own data as JSON: devices, activity logs, screenshots, AI reports, and audit logs.
Data deletion
Submit a deletion request from Privacy. Admins see pending requests and can action them.
Settings & Admin
Configure the workspace and monitor health.
Branding
Set the workspace display name, logo URL, and primary color for a white-label experience.
SSO
Configure SAML, Azure AD, or Okta fields for single sign-on.
Monitoring settings
Toggle screenshots, set the screenshot interval, blur, retention days, and monitoring mode.
API keys & tokens
Create workspace tokens for agent enrollment and public API keys (tpk_...) with read/write scopes.
Category builder
Manually map apps to categories, bulk assign, use regex rules, or let the AI-assisted builder suggest categories.
Logs
View debug logs with level/search filters and audit logs with action filters. Prune logs older than 30 days.
Email Automation
One daily cron job powers all transactional emails.
Cron endpoint
A single endpoint, /cron/daily?token=..., runs once per day and handles every automated email.
Email types
- Weekly timesheet: sent on the last day of each tenant's configured week with tracked hours, productive time, productivity score, project hours, and a category pie chart.
- Trial expiry reminders: 3, 2, and 1 days before a free trial ends.
- Welcome email: sent when a new tenant/workspace is created.
- Plan-paid confirmation: sent after a successful upgrade.
- Invitation email: sent when a team member is invited.
- Payslip email: sent per payroll run.
Mail drivers
The built-in mailer supports a log driver for development and raw SMTP for production. All sends are recorded in the email_logs table.
Browser Extensions
Capture the websites your team is working on.
Supported browsers
Chrome and Edge use Manifest V3. Firefox uses Manifest V2. Standalone ZIP files are available for Chrome, Edge, and Firefox.
What it tracks
The content script reports the active tab URL and title every 5 seconds. Internal browser URLs (chrome://, edge://, about:, extension pages) are ignored.
How it connects
The extension polls the agent's local control endpoint (127.0.0.1:17681/status) and only sends heartbeats to the local ActivityWatch server while the agent reports it is running. Tab/window/focus changes trigger an immediate heartbeat.
Desktop Agent
The local app that powers Time Progress tracking.
Core tracking
Tracks foreground app, window title, active/idle state, and aggregate input counters. Captures periodic full-screen screenshots (if enabled). The browser extension supplies tab URLs/titles.
ActivityWatch integration
Bundles aw-server-rust, aw-watcher-window, and aw-watcher-afk. Events are bucketed as window, idle, browser, input, and meeting.
Sync & offline support
SQLite buffers events and screenshots offline. Data drains when the network returns. Exponential backoff protects the server on failure.
Tray & floating panel
The tray shows today's time, sync status, and controls. The floating panel provides play/pause, project/task selection, and a live timer.
Security & compliance
Device tokens are stored in the OS credential manager (Windows Credential Manager / keyring) with a file fallback. The installer shows a consent page and the first run requires disclosure acknowledgement.
API Overview
Time Progress exposes two APIs: the Agent Ingestion API for the desktop agent, and the Public API v1 for your own integrations.
Base URL
All endpoints return JSON. Date parameters use YYYY-MM-DD unless stated otherwise.
Agent Ingestion API
Used by the desktop agent to enroll, sync activity, upload screenshots, and fetch configuration. Authentication is via a device token (dvc_...) returned at enrollment.
Public API v1
Read-only tenant API for integrations. Authentication is via a public API key (tpk_...) created in Settings → API keys.
Agent Ingestion API
Endpoints used by the Time Progress desktop agent. Base path: /api/v1/agent.
Authentication model
- Enrollment: call
POST /api/v1/agent/login(email/password) or legacyPOST /api/v1/agent/register(workspace token + email). - The response includes a long-lived
device_token(prefixdvc_). - Send that token on every subsequent request as
Authorization: Bearer dvc_....
POST Enroll via credentials
Preferred enrollment path. The user must have accepted monitoring consent.
Request Body
| Field | Type | Description |
|---|---|---|
| email * | string | User's workspace email |
| password * | string | User's password |
| totp_code | string | Required if MFA is enabled |
| consent * | boolean | Must be true |
| os | string | Operating system |
| hostname | string | Device hostname |
| agent_version | string | Agent version |
POST Enroll via workspace token
Legacy enrollment path for IT-admin rollouts.
Headers
| Header | Description |
|---|---|
| X-Workspace-Token * | Workspace token (wsk_...) |
Request Body
| Field | Type | Description |
|---|---|---|
| email * | string | User's workspace email |
| consent * | boolean | Must be true |
| os | string | Operating system |
| hostname | string | Device hostname |
| agent_version | string | Agent version |
POST Heartbeat
Keep the device marked as online.
GET Today's tracked seconds
Returns authoritative active/idle seconds for the current device today in the workspace timezone.
POST Upload activity batch
Send up to 500 activity events per batch. Idempotent event IDs avoid duplicates.
Item fields
| Field | Type | Description |
|---|---|---|
| event_id * | string | Unique event id (deduplicated server-side) |
| kind * | string | window, idle, browser, input, meeting |
| app_name | string | Application name |
| window_title | string | Window title |
| url | string | Browser URL (when kind=browser) |
| started_at * | string | UTC datetime |
| ended_at * | string | UTC datetime |
| duration_seconds | integer | Event length |
| category | string | productive, unproductive, neutral |
POST Upload screenshot
Accepts multipart/form-data with a file field, or JSON with a base64 image field.
Fields
| Field | Type | Description |
|---|---|---|
| file | binary | JPEG/PNG/WebP image (multipart) |
| image | string | Base64-encoded image (JSON) |
| taken_at | string | UTC datetime (defaults to now) |
| project_id | integer | Optional project to assign |
| task_id | integer | Optional task to assign |
GET List projects & tasks
Returns projects assigned to the authenticated device user, including nested tasks.
GET Log configuration
Fetches the log level set by admins for this user.
Public API v1
Read-only, tenant-scoped REST API for custom integrations. Create and revoke keys in Settings → API keys.
Authentication
Send your public API key as a Bearer token in the Authorization header. Keys start with tpk_ and are scoped to one workspace.
Security tip: Store keys in environment variables. Never commit them to source control or expose them in client-side code.
Base URL
GET Whoami
Returns the authenticated workspace and token metadata.
GET List users
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | integer | Page number (default: 1) |
| per | integer | Page size (default: 50, max: 200) |
GET List devices
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | integer | Page number (default: 1) |
| per | integer | Page size (default: 50, max: 200) |
GET Query activity logs
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| from | string | Start date (YYYY-MM-DD, default 7 days ago) |
| to | string | End date (YYYY-MM-DD, default today) |
| page | integer | Page number |
| per | integer | Page size (max 200) |
GET Daily aggregates
Pre-computed productivity roll-ups per user per day. Fastest way to build dashboards.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| from | string | Start date (default 7 days ago) |
| to | string | End date (default today) |
GET Get user
Returns a single user record, including employee_id.
GET Attendance
Per-user, per-day attendance status and shift information. Useful for building attendance dashboards.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| from | string | Start date (default 7 days ago) |
| to | string | End date (default today) |
| user_id | integer | Optional user filter |
GET Attendance summary
Roll-up attendance counts and productivity totals per user over a date range.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| from | string | Start date (default 7 days ago) |
| to | string | End date (default today) |
| user_id | integer | Optional user filter |
GET Shifts
Returns expanded shift occurrences for each user across a date range. Recurring rules are materialised into individual days.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| from | string | Start date (default 7 days ago) |
| to | string | End date (default today) |
| user_id | integer | Optional user filter |
Error Codes
Common HTTP status codes and error response format.
| Code | Status | Meaning |
|---|---|---|
200 | OK | Request successful |
201 | Created | Resource created (enrollment, screenshot upload) |
400 | Bad Request | Missing or invalid parameters |
401 | Unauthorized | Invalid or missing token/API key |
403 | Forbidden | Action not allowed (e.g. screenshots disabled) |
404 | Not Found | Resource does not exist |
413 | Payload Too Large | Batch >500 items or image >8 MB |
422 | Unprocessable | Business rule violation (e.g. consent required) |
429 | Too Many Requests | Rate limit exceeded |
500 | Server Error | Something went wrong on our end |
Error response format
Rate Limiting
Current limits for agent and public API endpoints.
Agent endpoints
| Endpoint | Limit |
|---|---|
POST /login | 10 attempts / 10 min / IP |
POST /register | 20 attempts / 10 min / IP |
POST /activity | 120 batches / min / device |
POST /screenshots | 60 uploads / min / device |
Public API
Public API keys currently share a workspace-level rate limit. If you hit limits, reduce request frequency, cache responses, and implement exponential backoff.
Best practices
- Cache aggregate data where possible.
- Use the largest
pervalue you need (up to 200). - Retry 429 responses with exponential backoff.
- Don't poll endpoints more often than once per minute.
Managing Categories
Organize activities so reports and productivity scores are meaningful.
What are categories?
Categories group applications and websites into Productive, Unproductive, or Neutral buckets. You can also create custom category names.
Using the Category Builder
- Go to Settings → Categories.
- Search or pick activities from the discovered list.
- Choose a rating: Productive, Neutral, or Unproductive.
- Set the scope: Global (all users) or user-specific.
- Save. Existing activity will be reclassified on the next aggregation pass.
Regex rules
For advanced cases, create manual rules that match window titles or URLs with a regular expression. Rules are validated before saving.
AI-assisted categories
If Azure OpenAI is configured, click Build with AI to get category suggestions. A heuristic fallback is used when AI is unavailable.
Generating Reports
Turn raw activity into actionable insights.
Date and user filters
Pick a date range and choose between all users or a single user. Managers and admins can view tenant-wide data; members see only their own.
Exporting
Every report page has a CSV export button. Project & Tasks also has PDF. Use the print layout for clean paper copies.
Automated reporting
The weekly timesheet email is sent automatically on the last day of your configured week. It includes tracked hours, productive time, a productivity score, project hours, and a category pie chart.
User Management
Add, configure, and secure workspace members.
Adding members
- Open Team and click Invite Member.
- Enter the user's email address.
- Select a role. Owner and Admin have full access; Viewer is read-only.
- Send the invitation.
User roles
| Role | Typical access |
|---|---|
| Owner / Admin | Full workspace access |
| Manager / Team Lead | Team reports, projects, schedules |
| HR | Attendance and payroll |
| Contributor / Member | Own activity and time tracking |
| Viewer / Time Reporter / Auditor | Read-only or limited reports |
Disabling or deleting users
Disabled users cannot sign in or track time. Deletion removes the user from the workspace. The owner account cannot be deleted to prevent lockouts.
Projects & Tasks Guide
Track time against client work and internal goals.
Creating a project
- Go to Projects & Tasks and click Add Project.
- Enter the project name.
- Assign all members or specific users.
- Set a time limit if needed (per week/month/etc.).
- Save.
Adding tasks
Open a project, click the task count or actions menu, and add tasks. Users can then pick a project/task from the agent's floating panel.
Archiving
Archive completed projects to keep the active list clean. Archived projects remain available in reports.
Frequently Asked Questions
Quick answers to common questions.
How do I track time automatically?
Install the Time Progress agent and sign in. It runs in the background and tracks your active applications, window titles, and browser URLs.
What data does the agent capture?
App name, window title, active/idle state, aggregate input counters, and periodic screenshots if enabled. We never capture keystroke content, passwords, clipboard, files, webcam, microphone, or location.
How are meetings detected?
Meetings are detected from foreground window titles for Teams, Zoom, Google Meet, Webex, Skype, GoTo, BlueJeans, and Slack huddles.
Can I export my data?
Yes. Reports can be exported to CSV and PDF. You can also use the Public API or request a full JSON export from Privacy.
How do I create a public API key?
Go to Settings → API keys, click Generate New Key, give it a label, and copy the token. You need API-management permission to create keys.
What happens when the trial ends?
You will receive reminder emails at 3, 2, and 1 days before expiry. If no paid plan is active, the workspace is suspended until you upgrade.
Can users see their own screenshots?
Visibility depends on role permissions and the configured screenshot visibility delay. Admins can view screenshots after the delay.
Does Time Progress work offline?
Yes. The agent stores events and screenshots locally and syncs automatically when connectivity returns.
Troubleshooting
Common issues and how to fix them.
Agent is not tracking activities
- Check that the agent is running in the system tray.
- Confirm you are signed in (tray menu shows your email).
- Restart the agent from the tray menu.
- Check your internet connection.
- Reinstall the agent if files are corrupted.
API returns 401 Unauthorized
- Verify the token has not been revoked.
- Ensure the header is exactly
Authorization: Bearer <token>. - For agent endpoints, use the device token (
dvc_...); for public API, use an API key (tpk_...).
API returns 429 Too Many Requests
- Reduce polling frequency.
- Batch activity uploads (max 500 per call).
- Implement exponential backoff.
Categories are not applying
- Save your category changes.
- Check that the app name or regex matches exactly.
- Verify the scope (Global vs user-specific).
- Wait for the next aggregation or new activity to appear.
Screenshots are not uploading
- Confirm screenshots are enabled in workspace settings.
- Check the agent logs at
%LOCALAPPDATA%\TimeProgress\logs\timeprogress.log. - Ensure the image is under 8 MB.
Contact Support
We're here to help.
support@timeprogress.com
Support Ticket
Documentation
You're looking at it. Use the search bar or sidebar to find answers.