The profitability report
Billable, cost, profit, and margin across all your work — grouped, filtered, and exportable.
The Profitability report (under Insights) is where the money adds up across everything — not just one engagement. It answers "are we actually making money, and where?"
This report needs See billing to open; cost, profit, and margin columns need See costs & profit on top. Both are role permissions: owners and admins have both, a manager has billing only, so a manager can open this and still see no cost or margin.
At a glance
The report opens on a dashboard: a row of headline tiles — Billable, Margin, Team utilization, Effective $/hr, Profit — then a row of up to three panels. Each panel is sorted so the outlier rises to the top, colour-coded, and its link drops you into the matching breakdown below (setting the grouping and scrolling to it). The full breakdown table sits beneath as the drill-down. A manager without See costs gets the leaner version — the money tiles and margin panels drop out.
The Margin tile also carries your bill-to-cost multiple (billable ÷ cost) beside the percentage — the same economics as margin, in the yardstick agencies price by. A healthy range is roughly 2.5–3× your cost.
Choose which panels show from the Panels control (in the toolbar, next to the date and Filters — up to three at once):
- Margin by client / Margin by engagement — the thinnest margins first (or biggest billing, before you can see costs).
- Utilization by person / Utilization by team — who's furthest off the healthy band.
- Effective $/hr by person — the lowest realized rates first.
- Engagements over budget — the engagements running most over pace.
Your choice is remembered on this device.
Slice it
- Group by Client, Project, Engagement, Person, Team, or Task type. Grouping by Person or Team brings in billable utilization (below); grouping by Person shows each person's cost, profit, and margin to anyone with See costs & profit — that permission is the deliberate "may see compensation" grant (see roles & permissions), so hand it out carefully.
- Filter by client (include/exclude), project, and person — the same filters as the Hours report, applied to the whole dashboard.
- Period presets (this month, quarter, year, all time…) or a Custom range — pick "Custom range" to set your own From and To dates, the same way the Hours and Mileage reports do. Either way you get a period-over-period delta so you can see the trend.
The numbers
Billable, Expenses (billable, "on top"), Cost, Profit, Margin (colour-coded), and Effective $/hr (billable ÷ hours worked). Each breakdown row carries its own figures, with a warning icon where a group has no cost rate. On the client/project/engagement/task-type views a dimmed Realized column also rides along — rate realization (billed ÷ your standard rate, so a discounted client reads below 100%). It's kept low-key on purpose: it catches rate discounting, not write-offs or fixed-fee over-servicing.
Under the rows, a Total sums the view and an Avg per row shows the per-unit average of each hours and money column — the revenue per head when you group by Person, average value per client, project, or engagement elsewhere. The rate columns (margin, effective rate) don't average per unit, so they're left blank there.
A banner appears when some hours resolved no bill rate (billable missing), no cost rate (margin inflated), or there's no default bill rate. It lists the culprits and links to fix them — it's the same signal as Rate coverage.
Billable utilization
Group by Person or Team and a Utilization column and KPI appear: billable hours ÷ available capacity — the share of someone's available time that went to billable work. It's the "busy" number that sits next to the "profitable" ones, so you can see who's over-loaded, who's on the bench, and how that lines up with the margin they earn. The figure is colour-coded by your workspace's utilization bands, the same ones the Capacity tab uses (adjust them there). By default under 70% reads light (room to spare), 70–85% healthy, 85–100% busy, and over 100% over capacity.
Utilization needs each person's available hours a week. In Settings → Rates & capacity, set a workspace default (say 40h); override it per person from their profile on the People page for part-timers and the like. Until a default is set the column stays off — ProjectPacer won't divide by a made-up number. Capacity is effective-dated: changing someone's hours never restates past months.
Utilization divides billable hours by available hours — the capacity you set minus vacation, sick days, and company holidays — so a week off no longer reads as under-booked. Record time off in Settings → Rates & capacity, or from a person's profile on the People page. To plan who's free ahead of time, see the Capacity tab.
For a team, capacity is the summed capacity of every active member — including anyone idle that period, so an under-booked team reads as low utilization rather than hiding the slack.
Export
CSV (with the money columns your role can see) downloads straight away; PDF opens a print view you save from your browser. Unlike the plain Hours export, this one carries billable value and margin.
How much billable time the suggestions won back — in dollars.