Philosophy How We Help Command Insights Industries Why We Exist Request a First Read
Growth in Practice August 2026 5 min read

How to Tell Which of Your MSP Clients Are Actually Profitable

If you cannot rank your clients by profit, you are making pricing, staffing and renewal decisions on revenue alone — and revenue and profit diverge more in managed services than in almost any other model. The view you need is usually buildable in an afternoon from data your PSA already holds. What stops most providers is not the data. It is that nobody has ever been asked to assemble it.

Why this number goes missing

It is not negligence. It is that nothing in the normal operation of an MSP requires it.

Invoicing runs off contracts, not effort. The PSA is built to manage work, not to cost it. Time entry exists mainly for accountability and SLA reporting, so it is recorded inconsistently and nobody minds much, because no downstream report depends on it. Finance sees revenue by client and cost by department, and the two never meet at the client level.

So the number does not exist, and its absence never announces itself. The missing report is itself a finding, and often the strongest one available.

Building the view

Twelve months of data. Approximate is fine — you are producing a ranking, not an audit.

1. Hours per client

Export logged time by client. Expect gaps: after-hours work that was never entered, quick calls handled without a ticket, the senior engineer who logs nothing. Note the gaps rather than trying to close them, and be aware they are not random — under-logging concentrates on your most demanding clients, which means your worst contracts look better than they are.

2. A blended cost per hour

Fully loaded: salary, payroll burden, benefits, tooling per head, and a share of overhead. Divide by realistically available hours, not contracted hours — nobody delivers 2,080. One blended rate across the team is adequate for a first pass; splitting by tier is a refinement for later.

3. Direct costs

Licensing, hardware, third-party services passed through. Keep pass-through margin visible separately — it is worth checking whether service delivery is roughly break-even while resale carries the revenue at very little margin. That is important to know, and it is a strategy question rather than a pricing one.

4. Set it against revenue

Contract revenue plus project and ad-hoc revenue for the same twelve months. Then rank every client by margin percentage and by margin dollars. Look at both — a low-percentage client at high volume and a high-percentage client at trivial volume call for different responses.

What the ranking usually shows

Three patterns recur often enough to predict.

The spread is far wider than expected. Owners generally anticipate some variance and are surprised by the magnitude — best and worst contracts at similar contract value differing by a multiple rather than a margin. That spread is the finding. It means price is not tracking the thing that actually drives cost.

The worst contracts are the oldest. Not because old clients are bad, but because they have had the longest to drift and the least likelihood of re-pricing. Longevity and loyalty are real and the pricing is from another era of the business.

At least one large, visible client is underwater. Frequently one the business is proud of. This is the uncomfortable one, and it is also where the largest single recovery usually sits.

What to do with it

Resist re-pricing everything at once. A defensible sequence:

  • Change nothing for a month. Review the view, sanity-check it against what your senior technicians already believe, and correct obvious data errors. Your engineers usually know which clients are painful; if the data disagrees with them, the data is probably wrong.
  • Fix the trigger before the prices. Decide what will make drift visible in future — a quarterly review of hours against the pricing assumption is enough. Without this you will be repeating the exercise in three years.
  • Re-price at renewal, in order, worst first. Renewal is the natural moment and it is a conversation about scope, not a demand. Most clients accept a well-evidenced re-price when it is specific about what changed.
  • Hold the line on new contracts. The new pricing model applies to everything signed from today. This is the part that compounds, and it costs nothing.

The conversation with the client

Re-pricing conversations go badly when they are framed as a price increase and well when they are framed as a scope reconciliation.

The evidence you have just built is what makes the second framing available: here is what we assumed at signing, here is what the work has actually become, here are the numbers. Most clients are not trying to extract free work — they added people and systems and nobody told them it changed anything.

How you say it matters as much as the numbers. Describe what changed, do not inflate it, and do not manufacture urgency that is not there. The facts are sufficient.

What this changes beyond pricing

Margin per client is not only a pricing input. Once it exists, several other decisions get easier: which client profile to target, since you can finally see which kind is profitable; whether to add an engineer, since you can see where capacity is being consumed; which service lines to expand; and what the business is actually worth, since acquirers ask this question and most sellers cannot answer it.

That is why we treat it as the first recommendation rather than a reporting improvement. It is one view that changes the quality of every subsequent decision — and building it is cheap and reversible, which is rare for a change this consequential.

Common questions

How do I calculate profitability per MSP client?

Join logged hours per client to a blended fully-loaded cost per engineer hour, add any direct pass-through costs and licensing margin, and set that against contract revenue for the same period. Use twelve months to smooth incident spikes. It will be imperfect because time logging is imperfect — build it anyway, because an approximate ranking is enormously more useful than no ranking, and the ranking is what drives decisions.

What is a healthy gross margin for a managed services contract?

Published benchmarks vary by service mix, region, and how providers classify licensing pass-through, so treat any single figure with caution. The more useful measure is internal: the spread between your best and worst contracts at similar contract value. A wide spread means your pricing model is not tracking the cost drivers, and closing that spread is usually worth more than moving the average.

Why do some MSP clients generate so many more tickets?

Usually behavior and environment rather than size — end-user tolerance for self-service, the age and consistency of the estate, whether there is any internal IT capability, how much shadow IT exists, and whether the client has learned they can call a technician directly. Seat count is a poor predictor, which is exactly why per-seat pricing alone under-prices high-touch clients.

Should I fire an unprofitable MSP client?

Rarely the first move. Most unprofitable contracts were priced correctly at signing and drifted, which means they are fixable with a re-price and a scope conversation. Exit is appropriate when the client rejects a fair re-price, when the relationship consumes disproportionate senior attention, or when the work sits outside what you want to be good at. Try the conversation before the exit.

Growth is the product. Everything else is the mechanism.

Want an outside read on where yours is?

A 30-minute First Read — where revenue comes from, where it is constrained, and the highest-return moves. No pitch, no service menu.

Thirty minutes. Zero obligation. If we're not the right partner, we'll say so.