What scope creep and overservicing cost, per client
Scope creep has two costs, and they answer different questions. The extra hours at your internal cost show what a client's contribution lost. The out-of-scope hours at your rate for extra work show the fee you didn't bill.
Small favors add up. A client asks for one more page, an extra ad set or a quick fix. Each one feels too small to quote, so nobody quotes it. At month-end the hours are spent and the fee is the same.
This guide puts two figures on that, for each client and each month. It shows how to log the hours, works through a fictional example, and covers how to read three months before you act.
Two numbers, not one
Scope creep is work added beyond what a client agreed to, without a matching change to fee or time. An approved change isn't scope creep. Overservicing is wider. It's any month where delivered hours run over the hours the fee was priced on. The extra can come from new requests or from agreed work that took longer.
Each client gets two figures a month:
Extra hours = delivered hours − scoped hours
Cost of extra hours = extra hours × internal hourly cost
Unbilled fee = out-of-scope hours × your rate for extra work
The cost of the extra hours is what the client's contribution lost. Contribution before overhead is the fee minus the cost of delivering the work, before shared running costs. Client profitability: contribution before overhead explains it with a worked month. The fee didn't change, so every extra hour comes straight off it.
The internal hourly cost is what an hour of your team's time costs you, not what you charge for it. How to set an internal hourly cost rate shows how to work it out.
The unbilled fee is what the out-of-scope hours would have billed through a change request. Only out-of-scope hours count. Agreed work that ran long is an estimating problem, and there's no one to bill for it.
Keep the two figures apart. The cost compares your month with the month you priced. The unbilled fee compares it with a month where the extras were billed. Added together, they match no month that could have happened.
How to measure it, client by client
Step 1: Write down the scoped hours
For each client, note the hours the fee was priced on. If the agreement says "up to 30 hours a month", the number is 30. If it lists deliverables, use the hours you priced them on. Without this number there's nothing to measure against.
Step 2: Tag out-of-scope time when you log it
Use the time tracker you already have. Add a tag, a task code or a prefix such as "OOS" to any entry for work the agreement doesn't cover. You don't need a separate system.
Decide the test once: if the request isn't in the agreement, the entry gets the tag. Tag it when you log it. Sorting a month of entries afterward turns into guesswork.
Step 3: Total three hour counts per client at month-end
You need delivered hours, scoped hours and tagged hours. Delivered hours include calls, reviews and account management. Then work out the two figures, and contribution as priced and as delivered:
Contribution as priced = fee − external costs − scoped hours × internal hourly cost
Contribution as delivered = fee − external costs − delivered hours × internal hourly cost
Margin = contribution ÷ fee
Contribution per hour = contribution ÷ scoped or delivered hours, to match
Step 4: Put each month next to the last two
Keep one row per client per month. One month is a data point. Three months show whether it's a habit.
A worked example (fictional)
Fictional example. Tarnwick Digital is not a real business. The figures are illustrative and are not a customer result.
Tarnwick Digital is a four-person SEO and paid media agency that bills in US dollars. Its clients below are fictional too. It uses one internal hourly cost of US$55, and its agreements bill extra work at US$120 an hour. None of the three retainers had external costs, so contribution is the fee minus hours at cost.
Here is September:
| Client (fictional) | Fee | Scoped hours | Delivered hours | Out of scope (tagged) | Extra hours | Cost of extra hours | Unbilled fee |
|---|---|---|---|---|---|---|---|
| Kestwick Dental | US$4,500 | 30 | 38 | 8 | 8 | US$440 | US$960 |
| Morrowfield Legal | US$3,000 | 25 | 27 | 0 | 2 | US$110 | US$0 |
| Pellbrook Nursery | US$2,400 | 18 | 26 | 5 | 8 | US$440 | US$600 |
| Total | US$9,900 | 73 | 91 | 13 | 18 | US$990 | US$1,560 |
Kestwick Dental has an SEO retainer at US$4,500 a month for 30 hours.
- Extra hours: 38 − 30 = 8, all tagged. They went on pages for a new clinic location.
- Cost of extra hours: 8 × US$55 = US$440.
- Unbilled fee: 8 × US$120 = US$960.
- Contribution as priced: US$4,500 − 30 × US$55 = US$2,850. That's 63.3% of the fee, or US$95.00 an hour (US$2,850 ÷ 30).
- Contribution as delivered: US$4,500 − 38 × US$55 = US$2,410. That's 53.6%, or US$63.42 an hour (US$2,410 ÷ 38).
The US$440 is the gap between the two: US$2,850 − US$2,410. Had the 8 hours gone through a change request, September would have contributed US$2,410 + US$960 = US$3,370.
Morrowfield Legal has a content retainer at US$3,000 for 25 hours. It ran 2 hours over, and none were tagged: two agreed articles needed more research than planned. The cost was 2 × US$55 = US$110. The unbilled fee is US$0, because agreed work that runs long isn't billable. Contribution fell from US$1,625 (US$3,000 − 25 × US$55) to US$1,515 (US$3,000 − 27 × US$55).
Pellbrook Nursery is a plant nursery with a paid social retainer at US$2,400 for 18 hours. It ran 8 hours over. Five were tagged: extra ad sets for a weekend sale and edits to a landing page. The other 3 were agreed reporting that ran long. The cost was 8 × US$55 = US$440, and the unbilled fee was 5 × US$120 = US$600. Contribution fell from US$1,410 (US$2,400 − 18 × US$55) to US$970 (US$2,400 − 26 × US$55).
| Client (fictional) | As priced | Margin | Per hour | As delivered | Margin | Per hour |
|---|---|---|---|---|---|---|
| Kestwick Dental | US$2,850 | 63.3% | US$95.00 | US$2,410 | 53.6% | US$63.42 |
| Morrowfield Legal | US$1,625 | 54.2% | US$65.00 | US$1,515 | 50.5% | US$56.11 |
| Pellbrook Nursery | US$1,410 | 58.8% | US$78.33 | US$970 | 40.4% | US$37.31 |
| Total | US$5,885 | 59.4% | US$80.62 | US$4,895 | 49.4% | US$53.79 |
So which client is it? Kestwick has the largest unbilled fee. Pellbrook took the largest hit for its size. Its margin fell from 58.8% to 40.4%, and its contribution per hour more than halved, from US$78.33 to US$37.31. Across the agency, 18 extra hours cost US$990 of contribution, and 13 out-of-scope hours left US$1,560 unbilled.
Read three months before you act
One month can't tell a habit from a one-off. Tarnwick pulled July and August for its two largest overruns:
| Month | Kestwick delivered | Kestwick out of scope | Pellbrook delivered | Pellbrook out of scope |
|---|---|---|---|---|
| July | 31 | 1 | 24 | 5 |
| August | 30 | 0 | 25 | 6 |
| September | 38 | 8 | 26 | 5 |
| Quarter | 99 | 9 | 75 | 16 |
Over the quarter, Kestwick was scoped for 90 hours and Pellbrook for 54:
- Kestwick Dental: 99 − 90 = 9 extra hours, all out of scope, and 8 of them in September. Cost of extra hours: 9 × US$55 = US$495. Unbilled fee: 9 × US$120 = US$1,080, or 8.0% of the quarter's US$13,500 in fees. Contribution: US$13,500 − 99 × US$55 = US$8,055, or US$81.36 an hour.
- Pellbrook Nursery: 75 − 54 = 21 extra hours, 16 of them out of scope, spread across all three months. Cost of extra hours: 21 × US$55 = US$1,155. Unbilled fee: 16 × US$120 = US$1,920, or 26.7% of the quarter's US$7,200 in fees. Contribution: US$7,200 − 75 × US$55 = US$3,075, or US$41.00 an hour, against US$78.33 as priced.
In September, both clients ran 8 hours over. The quarter tells two different stories. Kestwick had one busy month tied to an event. Pellbrook asks for 5 or 6 hours of extra work every month, and that work has become part of the service.
What to do with the figure
Each pattern points to a different move.
- A one-off spike, like Kestwick. Note it, and agree how the next one will be handled. If the clinic opens another location, quote the pages as a change request before the work starts. Whether September's hours can still be billed depends on your agreement and on what the client approved.
- A steady pattern, like Pellbrook. The extra requests are now part of what the client expects. Either route each one through a change request at your rate for extra work, or rescope the retainer to include them at a new fee. When to reprice, rescope or drop a client shows how to choose, using a target per hour of your own.
- Agreed work running long, like Morrowfield. That isn't scope creep. It's an estimate that was low. If it repeats, review the scoped hours or the fee at renewal.
To catch an overrun mid-month, check pace at the end of week 2. How to tell when a retainer is underwater shows how.
What this method doesn't do
- It sees only the hours someone logs and tags. Untagged requests count as agreed work that ran long, and unlogged hours don't count at all. Owner time is often the least logged.
- The unbilled fee is a ceiling. It assumes the client would have approved every out-of-scope hour at your rate. Some requests would have been dropped once they had a price.
- Scoped hours are your own estimate. If the estimate was low, every month shows extra hours that are really a pricing question.
- One internal hourly cost for everyone averages your people out. Extra hours done by your most expensive people cost more than the figure shows.
- It doesn't decide what's in scope. Your agreement does. If the wording is unclear, ask a lawyer before you bill for disputed work.
- It looks back at months that have closed. It doesn't forecast the months ahead.
Where the tracker fits
The Client Profitability Tracker shows contribution before overhead, margin and contribution per delivery hour for each client, for the month you pick. Negative results stay visible. That gives you the "as delivered" side of the example.
It has no column for scoped or out-of-scope hours. Work out the cost of the extra hours and the unbilled fee by hand beside it. Entry is manual, one row per client project per month, and the workbook is tested in Excel 365 desktop. Like this guide, it stops before overhead. The formulas above work in any spreadsheet.
Sources and method
Every figure in this guide comes from the fictional worked example (Tarnwick Digital). The two figures apply the contribution-margin idea, revenue minus the costs that move with the work, to the hours a client takes beyond its scope. The definition of scope creep, and the point that an approved change isn't scope creep, follow the PMI paper below.
- Project Management Institute, Top five causes of scope creep ... and what to do about them (conference paper, dated Oct 13, 2009), read Oct 5, 2026.
- OpenStax, 3.1 Explain Contribution Margin and Calculate Contribution Margin per Unit, Contribution Margin Ratio, and Total Contribution Margin (textbook: Principles of Accounting, Volume 2: Managerial Accounting), read Oct 5, 2026.
Common questions
Is overservicing the same as scope creep?
Not quite. Scope creep is work added beyond what the client agreed to, without a matching change to fee or time. Overservicing is any month where delivered hours run over the hours the fee was priced on. That includes scope creep, but also agreed work that took longer than you estimated. A tag on your time entries tells the two apart.
Does the unbilled fee count as lost revenue?
Treat it as a ceiling, not a loss. It's what the out-of-scope hours would have billed at your rate for extra work if the client had approved every one. Some requests would have been dropped once they had a price. Use the figure to size the conversation, not to restate your revenue.
Can I bill a client for out-of-scope work I've already done?
That depends on your agreement and on what the client approved. A bill for work nobody approved can turn a scope question into a dispute. The cleaner fix looks forward: agree a rate for extra work and send a change request before the work starts. If your agreement is unclear, ask a lawyer before you bill.
How we research, check and update these guides. Found an error? Email [email protected] and we’ll correct it and note the change here.