Ranked efficiency analysis of worked hours, ticket volume, and revenue per client. Identifies accounts where resource consumption outpaces billing.
Ranked efficiency analysis of worked hours, ticket volume, and revenue per client. Identifies accounts where resource consumption outpaces billing.
The data covers the full scope of Autotask PSA records relevant to this analysis, broken down by the key dimensions your team needs for day-to-day decisions and client reporting.
Who should use this: MSP owners, finance leads, and operations managers tracking profitability
How often: Monthly for financial reviews, quarterly for strategic planning, on-demand for pricing decisions
Ranked efficiency analysis of worked hours, ticket volume, and revenue per client. Identifies accounts where resource consumption outpaces billing.
EVALUATE TOPN(10, SUMMARIZECOLUMNS('BI_Autotask_Companies'[company_name], "Revenue", SUM('BI_Autotask_Billing_Items'[total_amount]), "Tickets", COUNTROWS('BI_Autotask_Tickets'), "HoursWorked", SUM('BI_Autotask_Time_Entries'[hours_worked])), [Revenue], DESC)
All clients sorted by revenue per worked hour (ascending). The clients at the top of this table consume the most resources relative to what they pay.
| Client | Hours | Revenue | Rev/Hour | Tickets | Status |
|---|---|---|---|---|---|
| Rivers Rogers Mitchell | 1,090 | — | — | 6,381 | No billing data |
| Nelson Taylor Hicks | 875 | €205,547 | €235 | 1,728 | Lowest rev/hour |
| Hernandez Ltd | 2,046 | €637,092 | €311 | 2,775 | Below average |
| Wall PLC | 1,479 | €476,622 | €322 | 2,376 | Below average |
| Martinez Contreras Rios | 949 | €320,832 | €338 | 1,803 | Below average |
| Foster Inc | 3,050 | €1,431,177 | €469 | 5,290 | Average |
| Edwards Hall Hernandez | 943 | €469,660 | €498 | 1,629 | Average |
| Patterson Hood Perez | 3,575 | €2,324,617 | €650 | 5,458 | Above average |
| Garcia LLC | 670 | €589,694 | €880 | 670 | Unprofitable (-9.5%) |
| Martin Group | 1,206 | €2,212,915 | €1,835 | 1,758 | Best efficiency |
EVALUATE
TOPN(
15,
ADDCOLUMNS(
VALUES('BI_Autotask_Companies'[company_name]),
"Revenue", CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount])),
"Cost", CALCULATE(SUM('BI_Autotask_Billing_Items'[our_cost])),
"Tickets", CALCULATE(COUNTROWS('BI_Autotask_Tickets')),
"WorkedHours", CALCULATE(SUM('BI_Autotask_Tickets'[worked_hours])),
"RevenuePerHour", DIVIDE(
CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount])),
CALCULATE(SUM('BI_Autotask_Tickets'[worked_hours])),
0
)
),
[WorkedHours], DESC
)
Side-by-side comparison of each client's worked hours (blue) and revenue (teal). Large blue bars with small teal bars indicate a cost drain.
EVALUATE
TOPN(
15,
ADDCOLUMNS(
VALUES('BI_Autotask_Companies'[company_name]),
"Revenue", CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount])),
"Cost", CALCULATE(SUM('BI_Autotask_Billing_Items'[our_cost])),
"Tickets", CALCULATE(COUNTROWS('BI_Autotask_Tickets')),
"WorkedHours", CALCULATE(SUM('BI_Autotask_Tickets'[worked_hours])),
"RevenuePerHour", DIVIDE(
CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount])),
CALCULATE(SUM('BI_Autotask_Tickets'[worked_hours])),
0
)
),
[WorkedHours], DESC
)
Breakdown of 1,858 total contracts across type and status. Recurring Service contracts make up the bulk, but Time & Materials and Block Hours contracts carry different margin risk profiles.
EVALUATE
SUMMARIZECOLUMNS(
'BI_Autotask_Contracts'[contract_type_name],
'BI_Autotask_Contracts'[contract_status_name],
"ContractCount", COUNTROWS('BI_Autotask_Contracts')
)
ORDER BY [ContractCount] DESC
The portfolio average of €546 revenue per worked hour looks healthy at first glance. But that average is propped up by one outlier: Martin Group generates €1,835 per hour, nearly 3.4x the portfolio mean. Remove them and the average drops to €413. The actual distribution is uneven, and three clients present clear financial risk.
Rivers Rogers Mitchell is the most urgent problem. They generated 6,381 tickets (the highest in the portfolio) and consumed 1,090 hours of engineer time, yet zero billing items exist in Autotask for this account. That is not a low-efficiency client. That is an unbilled client. Either their contract is misconfigured, billing items are not being created from time entries, or someone decided to absorb the cost without documenting it.
Nelson Taylor Hicks has the lowest revenue per hour at €235. Across 875 worked hours and 1,728 tickets, they billed just €205,547. For context, Patterson Hood Perez generates 2.8x more revenue per hour at a similar support volume. The problem here is likely a flat-rate contract priced before ticket volumes increased.
Garcia LLC is the only client where cost data confirms a loss. Revenue of €589,694 against costs of €645,574 puts them at -9.5% margin. Their rev/hour looks good at €880, but the cost of delivering that service exceeds what they pay. This is the difference between revenue efficiency and actual profitability.
5 actions ranked by financial impact
Check their contract configuration in Autotask. Verify whether time entries are set to billable or non-billable. Look at the contract type. If this is intentional (internal account, pro bono, or a loss-leader arrangement), document it. If it is not intentional, you have been losing money on this account for every hour logged. 6,381 tickets at zero revenue is the single largest resource drain in the portfolio.
At €235 per worked hour, this account returns less than half the portfolio average. Pull their contract terms and compare the monthly recurring fee against actual monthly hours. If they are on a flat-rate Recurring Service contract and their ticket volume has grown since signing, the contract price no longer reflects the cost to serve them. Bring data to the conversation: 875 hours, 1,728 tickets, €205,547 billed.
Garcia LLC has €589,694 in revenue but €645,574 in costs. The €880 rev/hour figure is misleading because the internal cost of delivering those hours exceeds the billing rate. Review what is driving costs: subcontractor markups, after-hours labor, or escalation-heavy tickets. If the cost structure cannot change, the contract price needs to.
Both clients sit in the €311–€322 range, well below the €546 portfolio average. Combined, they consume 3,525 hours of engineer time. Check whether their contracts include scope creep provisions. If ticket volume has increased 20%+ since the last contract review, the pricing is stale. These are not emergencies, but they are trending toward unprofitable if left unaddressed.
At €1,835 per worked hour with 1,206 hours and 1,758 tickets, Martin Group is the most efficient account in the portfolio. Their contract terms, scope boundaries, and escalation policies should be the template for future agreements. €2.21M in revenue from 1,206 hours is what a well-structured MSP contract looks like.
It divides total billed revenue (from Autotask billing items) by total worked hours (from Autotask time entries on tickets) for each client. A higher number means the client generates more revenue for less engineer time. It does not account for internal costs. Garcia LLC shows why that distinction matters: high rev/hour but negative margin.
No billing items exist in Autotask for this client. This could mean: (1) time entries are marked non-billable, (2) the contract does not generate billing items automatically, (3) invoicing has not been run, or (4) the account is intentionally unbilled. The first step is checking the contract and time entry configurations.
Not necessarily. Garcia LLC has €880 per hour but loses money because their delivery costs exceed revenue. Rev/hour measures billing efficiency. Profitability requires comparing revenue to actual cost of service delivery, including technician salaries, tools, and overhead allocated to that client.
Recurring Service contracts (65% of this portfolio) bill a flat monthly fee regardless of hours worked. If a client's ticket volume grows, rev/hour drops while your cost stays the same or increases. Time & Materials contracts bill per hour, so more work equals more revenue. Block Hours contracts pre-pay a set number of hours. The margin risk depends on overage billing terms.
Yes. Add a date filter to the DAX queries using the Autotask date columns. For quarterly reviews, filter worked_hours and billing_items to the relevant quarter. Comparing Q4 to Q1 data for the same client often reveals whether a pricing problem is getting worse or stabilizing.
Yes. Connect Proxuma Power BI to your Autotask PSA, add an AI tool (Claude, ChatGPT, or Copilot) via MCP, and ask the same question. The AI writes the DAX queries, runs them against your real data, and produces a report like this in under fifteen minutes.
Connect Proxuma Power BI to your PSA, RMM, and M365 environment, use an MCP-compatible AI to ask questions, and generate custom reports - in minutes, not days.
See more reports Get started