WorkestraDocs
PlatformTime Tracking

Time Pro

Profitability, multi-level approval chains, period locking, payroll export, auto-submit, weekly digests, runaway-timer auto-stop. The paid tier of Time Tracking.

Time Pro

Time Tracking ships with a generous free tier — enough to compete with standalone tools like Toggl or Clockify on its own. Time Pro is the paid add-on that unlocks the surfaces a finance / ops / HR team need to run a real business: profitability, multi-level approvals, period locking, and a few automation conveniences.

It's a thin layer. If you're a solo user or a small team where the founder approves their own time, you may never need it.

What's in each tier

CapabilityFree (time)Pro (time_pro)
Timer + composer + Calendar / List / Timesheet views
Calendar import (Google + M365)
Goals (at_least / at_most, per user / project)
Idle detection prompt
Pomodoro mode
Browser extension (Chrome + Firefox)
Bill rate (hourly_rate snapshotted at write-time)✓ (gated by Finance)
Manual entry from CRM / Support / Projects / Recruiting
Single-level timesheet approval (workspace admin / manager)
Public REST API + webhooks✓ rate-limited✓ higher quotas
Profitability tab (revenue − cost − expenses, per project)
Cost rate (employee cost per hour, separate from bill rate)
Multi-level approval chains (team-lead → manager → finance)
Period locking (approved entries become read-only)
Payroll export (ADP / Gusto / SD Worx / Securex templates)
Auto-submit timesheets (weekly cron)
Weekly digest emails (per-user "your week so far")
Runaway-timer auto-stop (vs. notify-only)

Buyer-justifying surfaces

The four features that account for most Pro purchases:

1. Profitability tab

A new tab at /time/reports?tab=profitability. Per-project rows showing:

ColumnSource
RevenueSum of hours × hourly_rate for billable + approved entries
CostSum of hours × cost_rate for entries where cost_rate is set
ExpensesSum of project-tagged expenses_expenses rows in the period
MarginRevenue − Cost − Expenses
Margin %Margin / Revenue

Sortable by margin desc by default. Surfaces unprofitable projects immediately.

Requires cost_rate to be configured for at least one user-project combo. Free workspaces see a "Set cost rates to enable profitability" CTA.

2. Multi-level approval chains

Configurable at /time/settings/approvers. Define routes by scope:

  • User — submitter X always goes to approver Y
  • Team — anyone on team T goes to its team lead
  • Project — entries on project P go to the project owner
  • Workspace — fallback

Each route can stack multiple levels (e.g. Team Lead → Manager → Finance). When a timesheet is submitted, it walks the chain — at each level, only the named approver (or fallback) can advance it. Notifications fire at each step via the central notification service.

The free tier supports a single level: workspace admins / managers approve.

3. Period locking

When a timesheet is approved (final level), all its time_entries get locked_at = now(). RLS denies UPDATE / DELETE on locked entries — so finance teams can trust the numbers won't shift after audit. Workspace admins can unlock with an audit-logged action when corrections are genuinely needed.

4. Payroll export

/time/reports?tab=detailed → toolbar → Export → choose format:

  • ADP CSV
  • Gusto CSV
  • SD Worx (Belgium)
  • Securex (Belgium)
  • Custom CSV (column mapper)

Filters from the report carry through, so you can scope to "this month, locked entries only, billable + non-billable".

Enabling Time Pro

Time Pro is registered in MODULE_REGISTRY as time_pro (category: "platform", requiresAnyOf: ["time"]). To enable for a workspace:

  1. Buy the add-on from /settings/billing → Add-ons → Time Pro. (Pricing is per-workspace, billed monthly.)
  2. The Stripe webhook flips workspace_module_overrides for time_pro to enabled.
  3. The useTimePro() hook returns true; locked surfaces unlock immediately, no app reload required.

For self-hosted / dev workspaces, an admin can manually insert a workspace_module_overrides row.

How gating works (for builders)

Surfaces gate via:

  • Frontend: useTimePro() from @/modules/time — returns boolean. Renders <TimeProUpgrade feature="…" /> paywall when false.
  • Server: hasTimePro(workspaceId) from @/modules/time/lib/feature-flags — async, used in API routes / server actions.
  • Feature ids: TIME_PRO_FEATURES enum — profitability, multi_level_approvals, period_locking, payroll_export, auto_submit, weekly_digest, runaway_email_auto_stop.

The paywall card is contextual ("Profitability needs Time Pro — see what unlocks") rather than generic.


FAQ

Q: Can I trial Time Pro? A: Yes — every workspace gets a 14-day Time Pro trial that activates the first time you click into a Pro surface. The paywall offers Start trial.

Q: Does Time Pro require Finance to be subscribed? A: No. Bill rates are gated by Finance independently (because they only matter when you invoice). Cost rates and profitability live in Time Pro and don't require Finance — useful for internal reporting even if you don't bill clients.

Q: What happens to existing approval chains if I downgrade? A: They're preserved in the DB but bypassed at runtime — the workspace falls back to single-level approval. Re-upgrading restores the chains.

Q: Can I auto-stop runaway timers without Time Pro? A: You get the notification for free; only the auto-stop action is Pro. Same threshold setting (runaway_timer_hours).


Next steps