← Back to Blog

How to Fix Scope Creep Before It Wrecks Your MSP Margins

By ClientCommit Team

Your team isn't doing free work because they're careless. They're doing it because nobody can see where the contract ends.


A post showed up on Reddit recently from an MSP operations lead at a growing shop. The owners were good people. They'd built long-standing client relationships based on partnership rather than strict contracts. The kind of place where if a client needed something, you just helped.

The problem was that the company was expanding rapidly, and those generous habits were now bleeding into every engagement. Work that should have been scoped as projects was getting absorbed into support. Things that were clearly outside the contract were being done for free because they'd always been done for free.

Usually it doesn't even feel like scope creep at first. It feels like being helpful. Then six months later, you're delivering things nobody ever priced.

His question to the community was basically: how do you fix this without completely destroying the client relationship?

The top response nailed it: show up with an itemized list of everything you actually do for the client, the fair market value of all of it, and the gap between that and what they're paying. Let them see the number. Most clients have no idea how much you're doing for them, and when they see it laid out, the reaction is usually "oh damn, I get it."

But here's the part that stuck with me. The original poster replied with something that captures why scope creep is so hard to unwind. He said: "If a customer has had a specific level of service for 10 years regardless of the contract, their thinking the service they are getting IS the service they are paying for."

That's the trap. The longer scope creep runs, the harder it is to correct, because the free work becomes the client's baseline expectation.


What is scope creep? In a managed services context, scope creep is the gradual expansion of work delivered to a client beyond what is defined in the contract, without a corresponding increase in billing. It typically accumulates through small accommodations that individually seem harmless but collectively erode margins.


How scope creep actually starts

Nobody decides to work for free. Scope creep almost never starts as a conscious business decision. It starts at the technician level, ticket by ticket, with small acts of helpfulness.

One MSP owner described a pattern I've seen at nearly every service company I've talked to. He tracked his biggest time wastes and found that technicians were "jumping into small project work from a support ticket, doing for free what should get quoted outside of contract, just because they like to help."

That's the mechanism. A client submits a ticket about a printer issue. While the tech is in the environment, they notice the backup config needs updating. They fix it. Takes 20 minutes. Nobody tracks it. Nobody bills it. The tech felt good about being thorough. The client didn't even know it happened.

Now multiply that by 15 clients, three technicians, and 52 weeks. You're looking at hundreds of hours of unbilled work that never appeared in any report because it was never flagged as out of scope in the first place.

Your techs aren't the problem. They literally have no practical way to tell where "included in the contract" ends and "this should be a separate billable item" begins.

The COVID acceleration

One MSP owner framed it well when he started having scope correction conversations with clients. Since COVID, the adoption of technology within businesses has increased massively. The number of tools, integrations, cloud services, and endpoints your clients rely on has grown. Which means the scope of what they expect you to support has grown with it.

But the contract didn't grow. In many cases, the contract hasn't been updated since before the pandemic. You're delivering 2026-level service on a 2021-era agreement. And because the expansion happened gradually, nobody flagged it.


The real cost (it's not just margin)

Most conversations about scope creep focus on profitability. You're doing more work for the same money, so margins shrink. That's true, but it's not the full picture.

Burnout

There was a post on Reddit from a tech who'd been at the same MSP for nearly 12 years. He described managing close to 1,000 devices across 20 clients, being the go-to person for everything, and feeling resentful every time a client called. He'd gained 40 pounds. He was driving to "urgent" client issues and having dark thoughts on the way.

The post was about burnout, not scope creep. But read between the lines: he was carrying the weight of undefined expectations across every client. When the scope of your responsibility has no visible boundary, everything feels like your problem. And that kind of weight breaks people.

Scope creep doesn't just cost money. It costs the people who absorb the extra work. The technicians who stay late. The account managers who can't say no because they don't have a document to point to. The owners who feel the margin pressure but can't explain where it's coming from.

Client relationship damage

This is counterintuitive. You'd think doing more for a client would strengthen the relationship. In the short term, it does. But over time, unchecked scope creep creates a dynamic where the client expects more, the provider resents delivering it, and neither side talks about it.

Then when you finally try to correct it, the client feels like something is being taken away. As the Reddit poster described: "Drastically changing it after 10 years is going to be a shock." The longer you wait, the worse the correction feels.

I've seen MSPs lose clients not because they started billing for out-of-scope work, but because the conversation happened too late. The client had been receiving a level of service for so long that any pullback felt like a downgrade, even if the new terms were objectively fair.

Invisible margin erosion

An MSP tracking the biggest time wastes in his shop found that out-of-scope project work buried in support tickets was one of the top offenders. His fix was reviewing all tickets with over one worked hour on a weekly basis and briefing techs when they'd done too much. Simple, but effective.

Here's the thing most people miss: scope creep hides inside your ticket system. It doesn't show up as a line item. It shows up as tickets that take longer than they should, because half the time was spent on work that should have been scoped separately.

If you're not actively looking for it, you won't see it.


Why this is a contract visibility problem

Most advice about scope creep focuses on culture. Train your techs to say no. Build a culture of accountability. Have uncomfortable conversations with clients.

All of that is true. But it's incomplete.

The deeper issue is simpler than most advice makes it sound. The contract exists. It defines what's in scope and what isn't. But the people doing the work never really see it. The owner signed it. Maybe the account manager skimmed it. The technicians who actually deliver the service? They've never read it.

Think about it from the tech's perspective. A client submits a ticket. The tech sees the client name, the issue description, and a priority level. What they don't see is: "This client's contract covers break-fix support for endpoints and basic server administration. Application support, network redesign, and vendor management are explicitly excluded."

Without that context, every request looks the same. And a good tech will try to solve whatever's in front of them.

Telling techs to "just say no" sounds good in theory. In practice, it rarely works. What actually changes behavior is making the scope of every engagement visible to the team that delivers it.


A practical framework for catching scope creep early

I don't think you can eliminate scope creep entirely. Some flexibility is part of running a service business, and rigid enforcement of every contract clause will alienate clients faster than doing a little extra work. The goal is catching it early enough that it's a manageable conversation, not a painful renegotiation.

Step 1: Define your scope boundaries per client

Pull your top ten contracts. For each one, create a plain-language summary of what's included and what's not. Not the legal text. Something your L1 tech could scan in 30 seconds.

Example:

IncludedNot Included
Break-fix for workstations and laptopsApplication-specific troubleshooting
M365 license managementCustom Power Automate development
Monthly patching (endpoints only)Server migrations or upgrades
Basic network troubleshootingNetwork redesign or new site buildouts
Standard onboarding (user accounts, email)Custom onboarding workflows

If you can't produce this table from your contract, your team definitely can't either. And if they can't, they're guessing about what's in scope for every ticket.

Step 2: Make scope visible where work happens

That scope summary needs to live somewhere your techs actually look. Not in a SharePoint folder. Not in the contract PDF. In the ticketing system, ideally as a note on the client record or a field that surfaces when a ticket is opened.

One MSP I talked to added a custom field to their PSA called "Scope Notes" that auto-populated from their documentation tool. Nothing fancy. Just a few bullet points about what's covered. Techs started flagging out-of-scope work within the first week, because for the first time they could actually see the line.

Step 3: Track out-of-scope work before you bill for it

Don't start billing for out-of-scope work overnight. That's the mistake that damages client relationships. Instead, start by tracking it.

The best approach I've seen comes from an MSP who keeps a running list of out-of-scope items per client. Not to bill immediately, but to have the data when renewal conversations happen. When you can show a client "here are 47 hours of work we did outside your contract over the past six months," the conversation about adjusting terms becomes much easier.

Another operator reviews all tickets with more than one worked hour on a weekly basis. If the tech spent significant time on something that should have been scoped as a project, it gets flagged. Not punished. Flagged. The goal is awareness, not enforcement.

Step 4: Build scope into your QBR cadence

The quarterly business review is where scope corrections should happen. Not in a reactive "we need to charge you more" conversation, but as part of a structured review of what you're delivering versus what the contract covers.

One MSP described his approach at QBRs: he presents the full list of everything they do for the client, with fair market value next to each item. The gap between what the client pays and what they're actually receiving makes the case for a contract adjustment without it feeling adversarial.

If you're not running QBRs (and honestly, a lot of shops aren't), start. Even a 30-minute call every quarter to walk through service delivery and contract alignment will catch scope creep before it becomes entrenched.

Step 5: Update contracts at every renewal

This sounds obvious. It isn't happening.

Contracts renew on auto-pilot. The same terms roll over. Meanwhile, the client added 15 users, migrated to a new cloud platform, and started expecting you to manage their security stack. None of that is reflected in the agreement.

At every renewal, compare the contract scope against what you're actually delivering. If there's a gap, close it. Either add the services to the contract (and adjust pricing accordingly) or explicitly exclude them and explain why.

The worst outcome is doing another year of work that was never really priced properly, while the client assumes everything is included.


Where tools fit (and where they don't)

PSA platforms handle tickets well but don't surface contract scope at the point of work. Some allow custom fields or notes on client records, which helps. But the connection between "what the contract says" and "what the tech sees when they open a ticket" is manual in most setups.

Documentation tools (IT Glue, Hudu) can store scope summaries, but they're a reference destination, not a workflow trigger. The tech has to actively go looking for the information.

Spreadsheets work for tracking out-of-scope items if someone owns the process. They break down when that person gets busy, which is always.

None of these tools connect the contract to the point of work. The scope information exists, but it's always somewhere else when you need it.

We built ClientCommit because of this exact problem. You upload the contract, and it pulls out what's actually included, what isn't, and what you're expected to deliver on a schedule. So when a ticket comes in, your team isn't guessing anymore. When a contract renews or terms change, the obligations update with it. Data stays private: AES-256 encryption, anonymized before any AI processing.

If your scope creep problem is mild and limited to a few clients, a well-maintained spreadsheet and a disciplined QBR cadence might be enough. But once you're past 15 or 20 clients, each with slightly different agreements and evolving service needs, the manual approach stops scaling. We're onboarding founding customers now with hands-on setup and lifetime pricing if you want to take a look.


The conversation you're avoiding

If you're honest, you probably already know which clients this applies to. You can feel it in the margin pressure, the tech burnout, the vague sense that certain accounts take more than they give.

What stops most people from fixing it isn't lack of knowledge. It's the discomfort of the conversation. Telling a client of ten years that you need to start billing for something they've been getting for free is genuinely hard.

But here's what I've noticed: the MSPs that handle this well don't frame it as "we're taking something away." They frame it as "here's everything we do for you, here's what it's worth, and here's how we make this sustainable for both of us." When the client sees the full picture, the conversation usually goes better than expected.

The ones who struggle are the ones who wait until they're resentful, until the margin is already gone, until a tech quits from burnout. By then, the correction feels punitive instead of professional.

Pick one client this week. Just one. Pull the contract and compare what's written to what you actually deliver.

That gap is your margin.


clientcommit.com