Skip to content
Back to blog
SOWs

How to write an MSP statement of work that prevents scope creep

Dylan Conkle9 min read

How to write an MSP statement of work that prevents scope creep

Scope creep rarely arrives as a big, obvious ask. It shows up as "while you're in there, can you also..." It shows up when a client assumes their new Azure tenant is covered because their old on-prem server was. And it builds quietly over months, a tech absorbing the odd half-hour of unbilled work here and there until it adds up to real money that nobody ever wrote down.

The fix is not a tougher conversation at the helpdesk. The fix is a statement of work that already answered the question before the client asked it. A good SOW is the document your engineers point to when a request lands outside the lines, and the document your account manager points to when it is time to bill for it. Most SOWs do neither, because they describe what you will do in warm, general language and never define the edges.

This is a guide to writing the edges.

SOW vs MSA: keep them in their lanes

Before the anatomy, one distinction that trips up a lot of newer MSPs. Your master services agreement (MSA) and your statement of work (SOW) do different jobs, and scope creep loves it when they blur together.

The MSA is the relationship. It holds the terms that apply no matter what you are doing for the client: liability limits, payment terms, confidentiality, term and termination, governing law, how disputes get handled. You sign it once. It rarely changes.

The SOW is the engagement. It says what you are actually delivering, for which environment, at what price, and where your responsibility stops. You can have many SOWs hanging off one MSA: a managed services SOW, a project SOW for a migration, a separate SOW for a security stack. When scope changes, the SOW changes. The MSA usually does not.

If you put pricing and deliverables in the MSA, you have to renegotiate the whole relationship every time the work shifts. If you put liability and termination in every SOW, your terms drift apart across clients and you cannot tell which version a given customer agreed to. Keep them separate. For the full breakdown of how these documents nest together with your SLA, see MSA vs SOW vs SLA.

The rest of this post is about the SOW, because that is where scope creep gets in.

The anatomy of a SOW that holds the line

A tight SOW has seven parts. Skip any of them and you have left a door open.

Scope of services

State what you are doing in operational terms, not marketing terms. "Comprehensive IT management" tells a client nothing and tells a judge less. "Monitoring and patch management for the in-scope endpoints and servers listed in Section X, helpdesk support during business hours, and quarterly backup verification" tells everyone exactly what they bought.

Write scope as a list of named services. Each one should be specific enough that an engineer reading it cold knows whether a given task falls inside or outside it.

Deliverables

Deliverables are the things the client can point to and say "you owe me this." A monthly health report. A documented backup test. An onboarded workstation. Where scope describes ongoing activity, deliverables describe artifacts and milestones. Put dates or cadences on them. "Quarterly" is a deliverable. "Regularly" is an argument waiting to happen.

Managed units

This is the single most important anti-creep mechanism in a managed services SOW, and the one MSPs most often leave fuzzy. Define what you are managing as a counted, named set: 42 workstations, 4 servers, 1 firewall, 38 mailboxes, 2 sites. Then tie your price to those counts.

Two things happen when units are explicit. First, the client cannot quietly grow. When they add the eleventh server, it is visibly outside the 4 you priced, and your true-up is a billing event, not a fight. Second, your scope and your price move together by design. Growth in the environment becomes revenue instead of erosion.

If your SOW says "all of the client's devices" with no count, every device they ever buy is now your problem at last year's price. Count the units. XClause was built around this idea: the SOW Builder treats managed units as structured line items rather than prose, so the thing you agreed to manage and the thing you bill for stay the same thing.

An explicit out-of-scope clause

Naming what is included implies the rest is excluded, but implication is weak. Spell it out. List the work that clients commonly assume is covered and is not: major projects, hardware procurement, third-party application support, after-hours work, cabling, new-site buildouts, data recovery beyond your backup commitment, end-user training.

An exclusions clause does two jobs. It sets the client's expectation before the disappointment, and it gives your team a clean answer in the moment: "that one is out of scope, here is what it would take to add it." That is a much easier sentence to say when it is printed in the document the client signed.

A change-order process

Out-of-scope work is not a problem. Unbilled out-of-scope work is the problem. The bridge between them is a change order.

Your SOW should describe, in plain steps, what happens when the client wants something outside the agreement. Who can request a change. How it gets scoped and priced. Who has to approve it in writing before work starts. How an approved change updates the SOW and the recurring fee. The point is to make "yes" easy and "yes, for free, retroactively, because a tech already started" impossible.

The discipline only works if there is a fast path. If a change order takes two weeks and three signatures, your team will skip it and absorb the work, which is exactly the leak you were trying to plug. Make approval lightweight and make it mandatory.

Acceptance criteria

For project-based SOWs especially, define what "done" means before you start. Acceptance criteria are the objective tests the deliverable has to pass for the client to accept it and for you to close the engagement and bill the final milestone.

Without them, "done" is whatever the client decides on the day, and a finished migration turns into three weeks of unpaid "just one more thing." With them, you have a checklist both sides agreed to. When the boxes are checked, the work is accepted. Tie payment milestones to acceptance, not to your own sense that you finished.

Pricing and billing terms

State the recurring fee and exactly what it covers, the per-unit rate for growth, the rate for out-of-scope and change-order work, and when you invoice. Connect the price back to the managed units so the link is explicit: this fee covers these counts, and additions are billed at this rate.

This is also where you set the true-up rhythm. If you reconcile actual units against contracted units monthly or quarterly, say so. A client who knows the count gets checked is a client who is not surprised by the invoice.

The clauses that actually stop the creep

Of the seven parts, three carry most of the weight, and they only work together.

The exclusions clause prevents the assumption. The change-order process prevents the freebie. The managed-unit definition prevents the silent growth. Take any one away and the other two spring a leak. Exclusions with no change-order path just means you say no a lot and the relationship sours. A change-order process with no clear scope baseline means every request is a debate about whether it was "already included." Managed units with no exclusions means the device count is tight but the activity around those devices is wide open.

Write all three, point them at each other, and bill from the signed document. That last part matters more than the wording: a beautifully drafted SOW that lives in a folder while your techs work from memory protects nothing.

A worked structure you can copy

Here is the skeleton of a managed services SOW that puts the anti-creep parts where they belong. Treat it as a structure, not legal language.

  • 1. Parties and effective date. Who, and starting when. Reference the governing MSA.
  • 2. Term. The SOW period and how it renews.
  • 3. Scope of services. Named, specific services. Monitoring, patching, helpdesk, backup verification, each defined.
  • 4. Managed units. The counted inventory: workstations, servers, network devices, mailboxes, sites. The exact numbers the price is based on.
  • 5. Deliverables. Artifacts and cadences. Monthly report, quarterly backup test, onboarding completion.
  • 6. Out of scope. The explicit exclusions list. Projects, procurement, third-party app support, after-hours, cabling, training.
  • 7. Change-order process. Request, scope, written approval, fee adjustment. The fast, mandatory path.
  • 8. Acceptance criteria. For any project milestones, the objective tests for "done."
  • 9. Pricing and billing. Recurring fee, per-unit rate, out-of-scope rate, invoice timing, true-up cadence.
  • 10. Signatures. Both parties, dated.

Notice that scope (3), managed units (4), and exclusions (6) together draw a closed boundary, and the change-order process (7) is the only sanctioned way to move it.

Common mistakes, and what to do instead

Describing scope in adjectives. "Comprehensive," "proactive," and "fully managed" feel reassuring and define nothing. Replace every adjective with a service and a unit count.

No exclusions because it feels negative. New MSPs worry that an exclusions list reads as cold. The opposite is true in practice: clients trust a vendor who is precise about the boundary more than one who implies everything is included and then nickel-and-dimes them later. Precision is the friendly option.

A change-order process nobody uses. If the path is slow, your team will absorb work to avoid it. Watch for the tell: lots of small out-of-scope tasks getting done, no change orders getting written. That gap is your revenue leak. If you want to put a number on what it is costing you, the scope creep calculator walks through it.

Vague unit counts. "All devices" and "as needed" are how a 42-endpoint contract quietly becomes a 70-endpoint contract at the 42-endpoint price. Count, and reconcile.

Treating the SOW as a sales document, then forgetting it. The SOW only protects you if your delivery team works from it and your billing follows it. A signed SOW that nobody opens after the kickoff is decoration.

One last point worth being honest about: a SOW structure is operational guidance, not legal advice, and XClause is software rather than a law firm. Have your own counsel review the contract language you build on top of this structure. What software can do is make the structure easy to enforce: define managed units as line items, keep exclusions and change orders attached to the signed document, and bill from the version both parties actually agreed to. That is most of the battle. The SOW Builder exists to make that the default instead of the exception.

Frequently asked questions

Put these contracts to work in XClause.

Build MSAs and SOWs with managed units, send legally binding e-signatures, and track every renewal in one platform built for MSPs.

Free trialCancel anytimeNo long-term contract