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
| Capability | Free (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:
| Column | Source |
|---|---|
| Revenue | Sum of hours × hourly_rate for billable + approved entries |
| Cost | Sum of hours × cost_rate for entries where cost_rate is set |
| Expenses | Sum of project-tagged expenses_expenses rows in the period |
| Margin | Revenue − 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:
- Buy the add-on from
/settings/billing→ Add-ons → Time Pro. (Pricing is per-workspace, billed monthly.) - The Stripe webhook flips
workspace_module_overridesfortime_proto enabled. - 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_FEATURESenum —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
- Approvals — how multi-level routing works in detail
- Rates & Billing — bill rate vs. cost rate
- Reports — the Profitability tab
Browser Extension
Chrome MV3 + Firefox WebExtension — start / stop the Workestra timer from any web app, with Start-timer buttons injected into Jira, Linear, Asana, Notion, GitHub.
Calendar & Scheduling
Public booking links, team round-robin, pre-meeting forms, and a workspace calendar — built into every Workestra plan.