Contents
- Why does hours times billing rate overstate revenue?
- What counts as contracted revenue for the period?
- How should labor cost be calculated?
- Why does dividing salary by hours logged make idle time disappear?
- What does a full worked example look like for one client?
- How does margin compare across clients?
- What is the difference between gross and net margin?
- What are the benchmarks?
- What should you do with a loss-making client?
- Who should see what?
Client profitability is the contracted revenue for a period minus the labor cost that client absorbed in that period. Most agencies get it wrong in both halves: they count logged hours times billing rate as revenue, and they divide salaries by hours logged as cost, which hides over-servicing on one side and idle time on the other.
This guide walks through the correct method with a 12-person agency, a $15,000 per month retainer, a $150 blended billing rate and salaried staff costed at 173.3 hours per month.
Why does hours times billing rate overstate revenue?
Because the client did not pay it. Take the $15,000 retainer client. In August the team logged 146.7 hours against that account, which at $150 per hour is $22,000 of value. The invoice was $15,000. Revenue was $15,000.
The $7,000 gap is not income the agency earned. It is over-servicing, hours delivered for free beyond what the retainer funds, and it belongs in the servicing gap line as a cost signal. A profitability report that shows $22,000 of revenue for this client tells the owner the account is thriving when it is being subsidized.
The reverse error also happens. A client that logged only 60 hours against the same $15,000 retainer shows $9,000 of "revenue" under hours times rate, which understates what was actually billed and makes a profitable account look weak. Neither number is what the bank statement says.
What counts as contracted revenue for the period?
Contracted revenue is what the client agreed to pay for the period, straight-lined across it. For a monthly retainer, that is the retainer amount. If the client pre-paid an overage block, the block is recognized over the period it covers, not in the month the cash arrived.
| Revenue component | Treatment | Example for August |
|---|---|---|
| Monthly retainer | Straight-lined per month | $15,000 |
| Pre-paid overage block, $6,000 covering 3 months | $2,000 per month | $2,000 |
| Hourly overage approved in August, invoiced September | Recognized in August when earned | $1,200 |
| Media pass-through | Excluded from labor revenue | $0 |
Pass-through costs such as ad spend are excluded from both revenue and cost when measuring labor margin, because the agency carries no labor in them. See revenue recognition for retainers for the timing rules.
How should labor cost be calculated?
Hourly staff are costed at their hourly rate, including employer taxes and any benefits, times hours logged. That is the straightforward half.
Salaried staff are costed at fully loaded monthly cost divided by 173.3 hours. The 173.3 figure is 2,080 working hours per year divided by 12 months. This gives a stable cost per hour that does not move with how many hours the person logged in a given month.
| Employee | Monthly cost | Method | Cost per hour |
|---|---|---|---|
| Senior SEO lead, salaried | $9,500 | $9,500 / 173.3 | $54.82 |
| Content strategist, salaried | $8,000 | $8,000 / 173.3 | $46.16 |
| Social manager, salaried | $6,500 | $6,500 / 173.3 | $37.51 |
| PR director, salaried | $11,000 | $11,000 / 173.3 | $63.47 |
| Account manager, salaried | $10,000 | $10,000 / 173.3 | $57.70 |
| Freelance designer, hourly | n/a | Contract rate plus fees | $85.00 |
Absorbed cost for a client is hours logged to that client times the cost per hour of whoever logged them. Idle time is monthly cost minus absorbed cost across all clients. It is reported on its own line and belongs to no client.
Why does dividing salary by hours logged make idle time disappear?
If you cost a $10,000 per month employee by dividing salary by hours logged, their cost per hour changes every month and the client absorbs the consequences of the agency's staffing decisions.
| Hours logged in month | Cost per hour by "salary / hours logged" | Cost of 60 hours on one client | Cost of 60 hours at 173.3 method |
|---|---|---|---|
| 90 | $111.11 | $6,667 | $3,462 |
| 140 | $71.43 | $4,286 | $3,462 |
| 173.3 | $57.70 | $3,462 | $3,462 |
The same 60 hours of the same person's work cost the client $6,667 in a slow month and $4,286 in a busy one. Nothing about the client changed. The agency had 83 idle hours in the first month and 33 in the second, and the method smeared that cost across whichever clients happened to be active.
At the 173.3 method the client's cost is $3,462 in both months. The unlogged hours, 83.3 in the slow month and 33.3 in the busy one, cost $4,806 and $1,922 at $57.70 and show up on the idle line where the owner can act on it. Idle time is a capacity problem, not a client problem. Verbial computes profitability from contracted revenue and absorbed cost with idle time on its own line.
What does a full worked example look like for one client?
Here is the $15,000 retainer client for August. Total logged hours are 147, which at $150 is $22,050 of value at billing rate.
| Department | Hours | Cost per hour | Absorbed cost | Value at $150 billing rate |
|---|---|---|---|---|
| SEO | 40 | $54.82 | $2,193 | $6,000 |
| Content | 42 | $46.16 | $1,939 | $6,300 |
| Social | 26 | $37.51 | $975 | $3,900 |
| PR | 22 | $63.47 | $1,396 | $3,300 |
| Account management | 17 | $57.70 | $981 | $2,550 |
| Total | 147 | $50.91 average | $7,484 | $22,050 |
Now the two methods side by side.
| Line | Hours times billing rate | Contracted revenue |
|---|---|---|
| Revenue | $22,050 | $15,000 |
| Absorbed labor cost | $7,484 | $7,484 |
| Gross margin, dollars | $14,566 | $7,516 |
| Gross margin, percent | 66.1% | 50.1% |
| Over-servicing (value minus revenue) | not shown | $7,050 |
Same client, same hours, same people. The first column says this is a 66% account. The second column says it is a 50% account carrying $7,050 of unpaid work, which is 47 hours the retainer did not fund. The second column is the one that matches the bank.
How does margin compare across clients?
Run the same calculation for every client and put them side by side. Here are four accounts from the 12-person agency for the same month.
| Client | Contracted revenue | Hours | Value at $150 | Absorbed cost | Gross margin $ | Gross margin % |
|---|---|---|---|---|---|---|
| Client A (retainer) | $15,000 | 147 | $22,050 | $7,484 | $7,516 | 50.1% |
| Client B (retainer) | $8,000 | 62 | $9,300 | $3,650 | $4,350 | 54.4% |
| Client C (retainer) | $12,000 | 118 | $17,700 | $7,900 | $4,100 | 34.2% |
| Client D (retainer) | $6,000 | 85 | $12,750 | $6,900 | -$900 | -15.0% |
| Four-client total | $41,000 | 412 | $61,800 | $25,934 | $15,066 | 36.7% |
Client D is loss-making. Its $6,000 retainer consumes 85 hours, more than double what $6,000 buys at $150, and most of those hours are the PR director at $63.47. Under hours times rate it would report $12,750 of revenue and a 46% margin, and nobody would look at it.
Client C is the quieter warning. It is profitable but at 34.2%, well under the 40% floor, and it is absorbing 118 hours against an 80-hour retainer. Both accounts need a decision. The effective hourly rate makes the same point from the other direction: Client D earns $70.59 per hour delivered against a $150 list rate.
What is the difference between gross and net margin?
Gross margin on labor is contracted revenue minus absorbed labor cost. It answers whether the work itself makes money. See agency gross margin.
Net margin subtracts everything else: idle time, non-billable leadership and sales time, rent, software, insurance, professional fees and the owner's own cost if it is not already in payroll. It answers whether the agency makes money. See net margin.
| Line | Four-client subset | Notes |
|---|---|---|
| Contracted revenue | $41,000 | Retainers only, pass-through excluded |
| Absorbed labor cost | $25,934 | Hours times cost per hour at 173.3 |
| Gross margin | $15,066 (36.7%) | Labor margin |
| Idle time attributable to these staff | $4,200 | Reported on its own line |
| Overhead share | $5,100 | Rent, software, admin, sales |
| Net margin | $5,766 (14.1%) | After idle and overhead |
Idle time sits between gross and net because it is a real cost of the agency but not a cost of any client. Charging it to clients makes good accounts look bad and hides the staffing problem.
What are the benchmarks?
| Metric | Healthy | Warning | Comment |
|---|---|---|---|
| Gross margin on labor, per client | 50 to 60% | Below 40% | Below 40% means over-servicing or under-pricing |
| Gross margin on labor, agency-wide | 50 to 60% | Below 45% | Blended across all clients |
| Net margin | 15 to 25% | Below 10% | After idle time and overhead |
| Utilization, delivery staff | 70 to 80% | Below 60% | Drives the idle line |
A client at 60% or above is usually either priced well or under-served, and it is worth checking which. A client between 40 and 50% is fine if it is growing or strategically important. Below 40% is a decision, not a data point.
What should you do with a loss-making client?
There are four moves. Work through them in order and pick one per client, with a date.
| Move | What it means | When it fits | Example for Client D |
|---|---|---|---|
| Reprice | Raise the retainer to fund the hours actually consumed | Client values the work, relationship is strong | Move from $6,000 to $10,000 for the same 85 hours, margin becomes 31% |
| Rescope | Cut deliverables so hours fit the fee | Client will not pay more, work can shrink | Cut PR to 20 hours, total 45 hours, absorbed $3,600, margin 40% |
| Reassign | Shift work to lower-cost staff without dropping quality | Senior people doing junior tasks | Replace 30 PR director hours with a coordinator at $32 per hour, saves $944 |
| Exit | Do not renew | None of the above closes the gap | Free 85 hours for a client that pays $150 per hour |
Reprice first because it is the only move that does not change the work. Rescope second because it keeps the client. Reassign third because it changes who the client talks to. Exit last, and only when the numbers still do not work after the first three.
Set a review date 60 days out. If the account has not crossed 40% by then, escalate to the next move.
Who should see what?
Margin exposes salaries, so access follows the role model. Members and managers see hours only. Account managers and directors see budgets and revenue, which is enough to manage pacing and scope. Admins see cost, salary and margin.
| Role | Hours | Budgets and pacing | Contracted revenue | Cost and margin |
|---|---|---|---|---|
| Member | Own hours | No | No | No |
| Manager | Team hours | No | No | No |
| Account manager | Client hours | Yes | Yes | No |
| Director | All hours | Yes | Yes | No |
| Admin | All hours | Yes | Yes | Yes |
An account manager who can see that Client D is at 85 hours against a 40-hour budget can act on it without knowing what the PR director is paid. That is the right split. Full detail on the calculation lives at /product/profitability. Compute it every month, for every client, and act on the bottom two.
Questions
Why is hours times billing rate the wrong revenue figure for a retainer client?
Because the client paid the retainer, not the logged value. A $15,000 retainer with $22,000 of logged value at $150 per hour produced $15,000 of revenue. The $7,000 difference is over-servicing, a cost signal, not income.
How should I cost a salaried employee per hour?
Divide fully loaded monthly cost by 173.3 hours, which is 2,080 hours per year divided by 12. A $10,000 per month employee costs $57.70 per hour whether they log 90 or 140 hours. The hours they do not log are idle time, reported separately.
What is a healthy gross margin on labor for a marketing agency?
50 to 60% gross margin on labor is healthy. Below 40% signals over-servicing or under-pricing on that account. Net margin after overhead of 15 to 25% is the usual target.
What should I do with a client that loses money?
Work through four options in order: reprice the retainer to match the hours it consumes, rescope the deliverables to fit the fee, reassign work to lower-cost staff where quality allows, or exit the engagement at the next renewal. Pick one and set a review date.
Who in the agency should see client margin?
Admins only. Members and managers see hours. Account managers and directors see budgets and revenue. Cost, salary and margin stay with admins because margin exposes individual pay.