MSP service leader reviewing gross margin by client to diagnose operational efficiency

MSP Operational Efficiency: Why EHR Misses Half Your Margin

Gross Margin by Client: The Number EHR Cannot Show You

Gross margin by client is that client’s revenue minus every cost of serving them, labor and hard costs together, divided by their revenue.

Effective Hourly Rate is the fee divided by engineering hours. It only sees labor.

That difference is the whole problem. A client can post a healthy EHR and still lose you money.

Start with what almost every owner does instead.

Revenue growth without operational visibility is just a louder way to fail

You signed a big one last quarter. Flat fee, all-you-can-eat, everything covered. It felt like a win. It got announced in the team channel.

Nine months later your engineers are underwater, your service margins have slipped, and nobody can point at the reason. Revenue is up. Headcount is up. Profit is flat.

So you conclude you need more revenue.

That is the loop. And it runs for years in firms that are well-managed in every other respect, because the instrument that would show you the problem is not on the dashboard.

An all-you-can-eat contract is a bet. You are wagering that the client’s total cost to serve stays below the fixed fee. Every MSP owner makes that bet on every managed contract they sign. Most have never gone back and checked whether they won.

You would not run a service desk without ticket data. You are running your entire pricing model without cost-to-serve data.

For the full operational picture, start with MSP Operational Maturity Level (OML).

Where most owners start: Effective Hourly Rate

The owners who do get sophisticated about this usually reach for EHR first. It is the obvious move and it is directionally right.

Two clients.

Client A pays $5,000 per month. Your team logs 25 hours. EHR = $200 per hour.

Client B pays $5,000 per month. Your team logs 100 hours, mostly reactive noise, mostly things that should never have been tickets. EHR = $50 per hour.

Same line on the revenue report. Same logo on the website. One of them is funding your company. The other is consuming it.

And here is why the exercise is worth doing at all: Client B usually feels like the better relationship. They call more. They know your techs by name. High-touch reads as high-trust when you have no data, and that emotional signal is exactly backwards.

So run EHR. It will tell you something true.

It will just not tell you enough.

Why EHR misses half your margin

EHR has labor in the denominator. Only labor.

It does not see the M365 licensing you are passing through at cost because you never built the markup into the contract. It does not see the EDR, the RMM agents, the backup consumption, the SaaS backup, the email security, the compliance tooling. It does not see the hardware you absorbed to keep a renewal clean. It does not see the third-party escalation contract you carry for their one weird line-of-business app.

Those are real dollars leaving on that client’s behalf, every month, and EHR is structurally blind to all of them.

So you can have a client with a $200 EHR who is barely above water, because their per-seat tool load is triple your average and nobody repriced it after the last three vendor increases.

You can also have the reverse. A client with a middling EHR who is genuinely profitable because their stack is clean and light.

EHR ranks your clients by how much labor they eat. That is one input into profitability. It is not profitability.

Gross margin by client is the number. Revenue minus all cost to serve, labor and hard costs together, over revenue. It answers the actual question, which is not “how many hours did this client take” but “did we make money on this client.”

Run EHR to diagnose why a client’s margin is bad when labor is the cause. Do not run EHR instead of margin.

The proxy is not the thing.

The other half: best-in-class charge more

Now the part owners least want to hear, because it is not an operations problem.

There is a comfortable story where the mature firms are simply more efficient, delivering the same outcome in fewer hours, and if you just tightened up delivery you would close the gap. That story is wrong, and Service Leadership’s data says so plainly.

Best-in-class firms charge materially more.

Fee per user per month for the fullest managed offering, SMB-focused, FY2025, tracks almost linearly with maturity: OML 1 firms charge $151.19. OML 2, $165.87. OML 3, $200.78. OML 4, $232.38. OML 5, $279.54.

The most mature firms charge 85% more per user than the least mature.

It shows up at the contract level too. Average managed services contract QRR in 2025: best-in-class $13,722, median $10,317, bottom quartile $9,257. And average QRR per new contract won: bottom quartile $6,478, median $8,751, best-in-class $11,041.

Best-in-class also sell the fully managed offering far more often, 78.7% of contracts won versus 62.4% for the bottom quartile.

So the 13-point managed services gross margin spread, 40.5% at the bottom to 53.3% at the top, is not one story. It is both stories at once. Mature firms charge more and control what delivery costs. Pricing maturity and delivery maturity are not alternatives. They compound.

Which is exactly why client-level gross margin is the right instrument. It has price in the numerator and total cost to serve in the denominator. It is the only single number that shows you both levers at the same time.

EHR cannot see price. It divides whatever fee you happened to negotiate by hours. A firm systematically underpricing every contract can have beautiful EHR across the board and still sit in the bottom quartile.

Turning the number into action

A bad client margin is a symptom. Four things cause it, and the fix depends entirely on which one you have.

The price was wrong from the start. This is the most common and the least examined. If your fee per user sits near $151 while OML 5 firms charge $279 for the same scope, no amount of delivery discipline closes that. Managed Services Pricing Methodology and Price Increase Management are both named SLIQ Financial traits, and they are traits because they are learnable, not because they are personality.

The hard costs drifted. Vendor increases stack silently. Every tool that went up 12% last year is still billing at the rate you priced in 2023. Pull the per-seat cost stack for your five worst-margin clients and compare it to what you are charging. This is usually the fastest dollar in the building.

The hours are wrong. Now EHR earns its keep. Is it a training problem, where four users generate a third of the volume? An infrastructure problem, where their environment is genuinely unstable? Or a boundary problem, where engineers are doing out-of-scope favors because saying no feels like bad service? Three different diseases. Repricing a training problem just makes the client angry.

This part requires clean time data. Service Leadership treats Service Time Tracking Policy as a named maturity trait for exactly this reason. If engineers log rounded guesses on Friday afternoon, your EHR is fiction and you are about to make pricing decisions on fiction.

The environment is custom. Custom environments create custom troubleshooting, and custom troubleshooting has no ceiling. Driving Technology Standards sits in the maturity model as a Service trait because standards are a margin instrument, not an engineering preference. More on this in MSP standardization.

With clean margin data, the repricing conversation stops being a confrontation and becomes arithmetic. You are not arguing about whether they are difficult. You are showing them what it costs to serve them, and offering three paths: reduce consumption, adjust the fee, or find a better fit.

Some will leave. Read Service Leadership’s attrition data before you panic about that: best-in-class firms lose 5.3% of QRR annually while bottom-quartile firms lose 11.0%. The mature firms are not the ones clinging to every logo.

Losing a client you were subsidizing is not attrition. It is a margin recovery event.

The metric is not the point

Running margin by client once produces a spreadsheet. Running it every quarter produces a different company.

Because the moment you can see profit per client, the decisions you have been making on instinct become decidable. Which clients to grow. Which to reprice. Which to offboard. Whether the next hire is an engineer or a process. Whether the problem is sales or delivery or pricing.

That is what operational maturity actually is. Not better tools. Not a smarter RMM. The ability to see the system clearly enough that the next right move is obvious instead of agonizing.

Service Leadership’s data is blunt about where this leads. Best-in-class firms earn roughly 2.5x the Adjusted EBITDA percentage of their median peers, 24.3% against 14.3% on 2026 budgets, and that gap holds regardless of size, age, geography, client profile, or vendor stack.

The variable is not your market.

If you had to name your three least profitable clients right now, by margin rather than by how much they annoy you, could you?

For the wider view, see maximizing value creation.

FAQ

What is the difference between Effective Hourly Rate and gross margin by client?

EHR is the fixed monthly fee divided by engineering hours consumed. Gross margin by client is revenue minus all cost to serve, labor plus licensing, tooling, hardware, and third-party services, divided by revenue. EHR only sees labor, so a client with a strong EHR and a heavy per-seat tool load can still be unprofitable. Gross margin is the number that rolls up to what Service Leadership benchmarks.

What managed services gross margin should an MSP be targeting?

Service Leadership’s figures, averaged quarterly across 2021 to 2025, put bottom quartile at 40.5%, median at 45.6%, and best-in-class at 53.3%. Their maturity trait bands run further, treating 38% or less as least mature and 56% or higher as most mature. Client-level margin is how you find out which band you are building toward before the annual number arrives.

Do best-in-class MSPs charge more, or just deliver more efficiently?

Both, and the pricing side is larger than most owners assume. Service Leadership’s FY2025 data shows fee per user per month rising from $151.19 at OML 1 to $279.54 at OML 5, an 85% spread. Average contract QRR runs $13,722 for best-in-class against $9,257 for bottom quartile. Mature firms charge more and control delivery cost. The two compound.

Is Effective Hourly Rate still worth tracking?

Yes, as a diagnostic rather than a scoreboard. When a client’s gross margin is poor and you need to know whether labor is the cause, EHR isolates that variable cleanly. It cannot tell you whether the price was wrong or whether hard costs drifted. Use it to explain a margin problem, not to detect one.

How do you track engineering hours accurately without creating micromanagement friction?

Tie time entry to ticket closure rather than to timesheets, so logging happens inside the work rather than after it. Frame the purpose openly: you are diagnosing contracts, not people. Service Leadership treats Service Time Tracking Policy as a named maturity trait, because rounded end-of-week guesses make every downstream pricing decision unreliable.

Take The Assessment

Is Your MSP Set Up to Scale, Succeed, and Sell?
Take the 3-minute assessment to find out!

Scale with intention.
Increase enterprise value.


Get the Value Creation Blueprint that shows you the exact levers that drive valuation.

This website uses cookies to ensure you get the best experience on our website.