Guides

Client profitability for marketing agencies

How to measure client profitability from contracted revenue and absorbed labor cost, with worked tables, benchmarks and what to do with a loss-making account.

Contents
  1. Why does hours times billing rate overstate revenue?
  2. What counts as contracted revenue for the period?
  3. How should labor cost be calculated?
  4. Why does dividing salary by hours logged make idle time disappear?
  5. What does a full worked example look like for one client?
  6. How does margin compare across clients?
  7. What is the difference between gross and net margin?
  8. What are the benchmarks?
  9. What should you do with a loss-making client?
  10. Who should see what?
The short answer
Client profitability is contracted revenue for the period minus the labor cost absorbed by that client. Hours times billing rate is not revenue, and salary divided by hours logged is not cost. Use the retainer you actually invoiced, cost salaried staff at monthly cost divided by 173.3 hours, and report idle time on its own line.

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 componentTreatmentExample for August
Monthly retainerStraight-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 SeptemberRecognized in August when earned$1,200
Media pass-throughExcluded 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.

EmployeeMonthly costMethodCost 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, hourlyn/aContract 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 monthCost per hour by "salary / hours logged"Cost of 60 hours on one clientCost 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.

DepartmentHoursCost per hourAbsorbed costValue at $150 billing rate
SEO40$54.82$2,193$6,000
Content42$46.16$1,939$6,300
Social26$37.51$975$3,900
PR22$63.47$1,396$3,300
Account management17$57.70$981$2,550
Total147$50.91 average$7,484$22,050

Now the two methods side by side.

LineHours times billing rateContracted revenue
Revenue$22,050$15,000
Absorbed labor cost$7,484$7,484
Gross margin, dollars$14,566$7,516
Gross margin, percent66.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.

ClientContracted revenueHoursValue at $150Absorbed costGross margin $Gross margin %
Client A (retainer)$15,000147$22,050$7,484$7,51650.1%
Client B (retainer)$8,00062$9,300$3,650$4,35054.4%
Client C (retainer)$12,000118$17,700$7,900$4,10034.2%
Client D (retainer)$6,00085$12,750$6,900-$900-15.0%
Four-client total$41,000412$61,800$25,934$15,06636.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.

LineFour-client subsetNotes
Contracted revenue$41,000Retainers only, pass-through excluded
Absorbed labor cost$25,934Hours times cost per hour at 173.3
Gross margin$15,066 (36.7%)Labor margin
Idle time attributable to these staff$4,200Reported on its own line
Overhead share$5,100Rent, 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?

MetricHealthyWarningComment
Gross margin on labor, per client50 to 60%Below 40%Below 40% means over-servicing or under-pricing
Gross margin on labor, agency-wide50 to 60%Below 45%Blended across all clients
Net margin15 to 25%Below 10%After idle time and overhead
Utilization, delivery staff70 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.

MoveWhat it meansWhen it fitsExample for Client D
RepriceRaise the retainer to fund the hours actually consumedClient values the work, relationship is strongMove from $6,000 to $10,000 for the same 85 hours, margin becomes 31%
RescopeCut deliverables so hours fit the feeClient will not pay more, work can shrinkCut PR to 20 hours, total 45 hours, absorbed $3,600, margin 40%
ReassignShift work to lower-cost staff without dropping qualitySenior people doing junior tasksReplace 30 PR director hours with a coordinator at $32 per hour, saves $944
ExitDo not renewNone of the above closes the gapFree 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.

RoleHoursBudgets and pacingContracted revenueCost and margin
MemberOwn hoursNoNoNo
ManagerTeam hoursNoNoNo
Account managerClient hoursYesYesNo
DirectorAll hoursYesYesNo
AdminAll hoursYesYesYes

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.

Ty Smith
Founder. Runs two marketing agencies on the product.

Agency operating software

Run your agency on one system.

See the operating software that agencies built to scale themselves.

14-day trial. No card, no sales call. Your workspace is ready in a few minutes.