Reporting stays compatible with privacy constraints and export workflows.
The Reports page provides profitability reporting with bill amounts, cost amounts, profit, and unrated-time diagnostics.
Who can use Reports?
Reports access depends on both your license state and your workspace role:
- Personal reporting is available to licensed portal users.
- Workspace reporting requires a workspace role of manager, admin, or owner.
If you do not belong to a workspace, or if your workspace role does not allow workspace reporting, the page automatically stays in Personal scope.
If reporting is not available at all, opening the Reports route redirects you back to the dashboard.
Reports combine filters, results, and diagnostics on one page.
Report Filters
The filters panel controls what data is included in the report.
Scope
When workspace reporting is available, you can switch between:
- Workspace — Report across the current workspace.
- Personal — Report on your own time.
If workspace reporting is not available, the page stays on Personal.
Date Range
Use Start Date and End Date to choose the reporting window.
Bucket
Choose how results are grouped over time:
- Day
- Week
- Month
- Year
Group By
Choose the primary row identity:
- Task — Groups by task keys or resolved project categories.
- User — Groups by user.
In Personal scope, the page supports Task grouping only.
Aggregation
When grouping by Task, you can choose:
- Raw keys — Groups by raw task keys
- Project — Groups by resolved project categories or rules
Additional Filters
Depending on the selected grouping and scope, the page can show these extra filters:
- Filter by User — Available when grouping by Task and workspace data is in play
- Filter by Project — Available when grouping by User
- Include uncategorized work — Adds records with no task key when grouping by Task
- Include current workspace team time — Available in Personal scope when you also belong to a workspace
Running the Report
Click Run Report to apply your current filter selections.
- A small warning appears when filters changed but the report has not been re-run yet.
- Pressing Enter inside the filter controls also runs the report.
- Your report filter state is saved in the browser so you can resume later.
Report Results
The results are grouped into time buckets first, then into rows inside each bucket.
The main columns are:
| Column | Description |
|---|---|
| Period | The active day, week, month, or year bucket |
| Group | The task/category or user represented by the row |
| Total Time | Total tracked duration |
| Billable Time | Billable portion of the tracked duration |
| Bill Amount | Calculated billed amount by currency |
| Cost Amount | Calculated cost amount by currency |
| Profit | Revenue minus cost |
| Unrated | Time that could not be fully priced because rates were missing |
Project drill-down
When you group by Task and use Project aggregation, some rows can be expanded to show the underlying raw task-key aggregates for that same period.
Exporting Results
Click Export CSV to download the currently applied report as a CSV file.
The export button becomes available once a report has been generated and the current scope is allowed.
Diagnostic banners call out missing rate coverage before it distorts profitability output.
Diagnostic Banners
When the report detects configuration issues, diagnostic banners appear above the results.
Common examples include:
- Missing rate configuration — Some work cannot be fully priced because bill or cost rates are missing.
- Rate coverage gaps — A configured rule does not cover the entire reporting window.
To fix rule-related issues, review Project Rules.
Freelancer and personal-only usage
If you are not in a workspace, or if you only have personal reporting access:
- Scope stays on Personal
- The page continues using your saved filters
- Export and diagnostics still work for personal reports