Why margins matter more than more clients
BenchPress 2025, reported by Productive.io, found that in 2024, average gross profit margins for £1M+ agencies fell to 39%, the lowest on record. Their target: at least 50%.
A low margin isn't always a pricing problem. Often it's one or two clients who take far more time than their fee covers. More clients like that just make you busier. The first step is to see each client's margin on its own.
The one formula
Margin = (fee − delivery cost) ÷ fee.
Delivery cost is everything it takes to do the work for that client: people hours × cost per hour + tools + contractors. If a client pays $8,000 and costs $5,600 to serve, the margin is ($8,000 − $5,600) ÷ $8,000 = 30%.
How to work out cost per hour
Cost per hour is what one hour of a person's time costs the business, not what you charge. A simple way:
- Take what the business pays the person per month (salary, taxes and benefits).
- Divide by the hours they actually work in a month.
- For yourself, use what you'd have to pay someone to do your job.
- Use one blended number for the whole team if that's simpler. The example below uses $80 an hour.
The Margin Checker sheet
One row per client. Fill in the white columns (B to F). The sheet works out the rest. Here are the columns and the formulas for row 2:
| Column | What goes in it | Formula (row 2) |
|---|---|---|
| A: Client | Client name | type it |
| B: Monthly fee | What they pay per month | type it |
| C: Hours | Team hours + your hours per month | type it |
| D: Cost per hour | Your blended cost per hour | type it |
| E: Tools | Software and tools for this client | type it |
| F: Contractors | Freelancers and outside help | type it |
| G: Delivery cost | Total cost to serve | =PRODUCT(C2,D2)+E2+F2 |
| H: Margin | Your margin for this client | =IF(B2>0,(B2-G2)/B2,"") |
| I: Flag | Under 50%? | =IF(H2="","",IF(H2<0.5,"FIX OR REPRICE","OK")) |
| J: Fee for 50% | Fee you'd need at today's cost | =G2/0.5 |
| K: Max cost for 50% | Most you can spend at today's fee | =B2/2 |
Paste it into Google Sheets
- Open a new Google Sheet.
- Click the Copy button on the box below.
- Click cell A1 and paste. The tabs split it into columns.
- Select column H and click Format > Number > Percent.
- Replace the example clients with yours. To add a client, copy row 4 down and move the TOTAL row below it.
Client Monthly fee Hours (team + yours) Cost per hour Tools Contractors Delivery cost Margin Flag Fee for 50% Max cost for 50% Client A 8000 60 80 300 500 =PRODUCT(C2,D2)+E2+F2 =IF(B2>0,(B2-G2)/B2,"") =IF(H2="","",IF(H2<0.5,"FIX OR REPRICE","OK")) =G2/0.5 =B2/2 Client B 5000 25 80 200 200 =PRODUCT(C3,D3)+E3+F3 =IF(B3>0,(B3-G3)/B3,"") =IF(H3="","",IF(H3<0.5,"FIX OR REPRICE","OK")) =G3/0.5 =B3/2 Client C 6000 34 80 250 150 =PRODUCT(C4,D4)+E4+F4 =IF(B4>0,(B4-G4)/B4,"") =IF(H4="","",IF(H4<0.5,"FIX OR REPRICE","OK")) =G4/0.5 =B4/2 TOTAL =SUM(B2:B4) =SUM(C2:C4) =SUM(E2:E4) =SUM(F2:F4) =SUM(G2:G4) =IF(B5>0,(B5-G5)/B5,"") =IF(H5="","",IF(H5<0.5,"FIX OR REPRICE","OK"))
Make the flag turn red
- Select cells A2 to K4 (all client rows).
- Click Format > Conditional formatting.
- Under "Format cells if", choose Custom formula is and enter: =$H2<0.5
- Pick a red fill and click Done. Any client under 50% now shows in red.
Many of our clients are agencies, and the healthiest ones fill their pipeline with the kind of client they already deliver well for. For one agency client we built $175,000 in pipeline in four and a half months, all from one clear offer to one type of buyer. Knowing your margins tells you who to go after. Filling the calendar with those clients every day is what we do for clients.
Want us to set this up for you? Book a free call →Worked example
Here's what the sheet shows for the three example clients (example numbers, at $80 an hour):
| Client | Fee | Delivery cost | Margin | Flag |
|---|---|---|---|---|
| A | $8,000 | 60 h × $80 + $300 + $500 = $5,600 | 30% | FIX OR REPRICE |
| B | $5,000 | 25 h × $80 + $200 + $200 = $2,400 | 52% | OK |
| C | $6,000 | 34 h × $80 + $250 + $150 = $3,120 | 48% | FIX OR REPRICE |
| Total | $19,000 | $11,120 | 41% | FIX OR REPRICE |
Client A is the problem. Two ways to get it to 50%:
- Cut the cost to $4,000 (column K: $8,000 ÷ 2). That means about 20 fewer hours a month at $80, since $1,600 ÷ $80 = 20.
- Raise the fee to $11,200 (column J: $5,600 ÷ 0.5). Check: ($11,200 − $5,600) ÷ $11,200 = 50%.
And the owner-hours trap: in Client A's 60 hours, say 10 are yours. Leave them out and delivery cost drops to $4,800, so the margin looks like 40%. The real number is 30%.
How to fix a client under 50%
| Problem the sheet shows | Likely cause | Fix |
|---|---|---|
| Hours far above what you planned | Scope creep, extra calls, endless revisions | Write down what's included, price the extras |
| High tool cost for one client | Tools bought for them alone | Share tools across clients or bill them through |
| High contractor cost | Work you can't do in-house | Bring it in-house or raise the fee for that part |
| Fee hasn't changed in years | Old pricing | Reprice at renewal using column J |
| Margin fine but hours too high for the team | Too many small clients | Raise your minimum fee for new clients |
Reprice without losing the client
Use column J as your target, then give the client a choice: keep the scope at the new fee, or keep the fee with less scope.
Hi [first name], Quick heads-up before we plan next quarter. The work for [company] has grown since we started: we now spend about [hours] hours a month on it, up from [old hours]. To keep the quality where it is, here are two options: 1) Keep everything as it is at [new fee] a month, from [date]. 2) Keep the current fee and focus on [the 2-3 things that matter most], dropping [the rest]. Happy to talk it through. Which works better for you? [your name]
Narrow what you sell
Doing fewer things, more often, usually makes delivery faster and cheaper. In the 2026 State of Digital Services report by Promethean Research (119 agencies, 2025 data), average net margin was 13%, while agencies that reduced their services grew the fastest and averaged 30% net margins. The picture isn't simple, though: Promethean also noted that service generalists beat service specialists on profit that year. So narrowing isn't magic. Use your sheet to see which service you deliver at the best margin, and sell more of that.
Promethean also found only 59% of agencies tracked individual project margins. Just using this sheet every month puts you ahead of many agencies.
Common mistakes
| Mistake | Fix |
|---|---|
| Leaving out your own hours | Count every hour you spend on the client |
| Guessing hours | Track time for 2 weeks, then fill in the sheet |
| Checking only the total margin | Check every client. One bad client hides behind good ones |
| Using your billing rate as cost per hour | Use what the hour costs you, not what you charge |
| Fixing it once | Update the sheet every month |
Check your clients with Claude
Here are my clients for last month (one per line): [client name, monthly fee, hours (team + mine), tools cost, contractor cost] My cost per hour: $[number] 1) Work out delivery cost and margin for each client: (fee - delivery cost) / fee. Show the math. 2) Flag every client under 50%. 3) For each flagged client, show the fee needed for 50% (delivery cost / 0.5) and the most I can spend at today's fee (fee / 2). 4) Suggest one practical fix for each: cut hours, cut tools, change scope, or reprice. 5) Write a short, friendly repricing email for the worst one, offering two options: same scope at the new fee, or same fee with less scope. Simple English, no jargon.
Links and tools
Quick answers
Is 50% gross margin realistic for a small agency?
It's the target BenchPress gives. Many agencies are below it, which is exactly why checking each client helps. Start by getting your worst client to 50%.
Gross margin or net margin, what's the difference?
This sheet shows gross margin: fee minus the cost of doing the work. Net margin also takes off rent, sales, admin and other overhead, so it's always lower.
What if a low-margin client is my biggest one?
Don't drop them overnight. Reprice at renewal, cut the hours that don't matter, and win new clients at healthier margins so you depend on them less.
How often should I check?
Every month. Hours drift up slowly, and a client at 55% can be at 40% six months later without anyone noticing.
Want all of this done for you?
Save the setup time. Our team finds your buyers, writes the emails, answers every reply and books qualified sales calls into your calendar. Talk to our founder for 20 minutes and you will leave with a plan, whether you work with us or not.
Book a call with our founder