On this page
- Why hours × rate overstates revenue
- Why dividing salary by logged hours hides idle time
- How to work out real margin (three formulas)
- What belongs in fully loaded cost
- Where idle time goes (and how utilization fits)
- Work that is real but not client work
- Roster view: sort by gap, not by margin
- What software must do
- Monthly close (seven steps)
- Where Verbial fits
- Common questions
Real marketing agency margin is contracted revenue minus fully loaded delivery cost, with unabsorbed salary shown as idle on its own line. Hours times rate books free work as income. Dividing salary by hours logged hides bench time. Agency Management Software should compute margin from the same hours and revenue your invoice used, mid-month.
Hours times rate books free work as revenue and hides idle time. This page is the operator method for real retainer margin: contracted revenue, fixed capacity costing, idle as its own line, and a roster you sort by servicing gap. It also answers the software question agency owners ask: what has to be true in Agency Management Software so utilization and profitability are the same fact.
For the full monthly close and roster mechanics, use the client profitability guide. For capacity math once idle is visible, use agency utilization and capacity planning. For mid-month burn against retainers, use time tracking and retainer pacing.
Owner outcomes stay in view the whole way: higher close rates when you reprice from evidence, more clients closed when sellers trust the margin math, and more clients managed without headcount when the roster replaces weekend spreadsheets.
Those outcomes only stick when the margin report and the invoice share the same contracted revenue. If they disagree, you will keep closing the wrong work and staffing for the wrong load.
Why hours × rate overstates revenue
If your team logs $22,000 of billable value against a $15,000 retainer, the client paid you $15,000. A report showing $22,000 of revenue has booked a $7,000 giveaway as income. It gets worse: the account looks more profitable the more you over-service it, because every unpaid hour adds another $150 to the revenue line.
| Line | Hours × rate report | What actually happened |
|---|---|---|
| Hours logged | 147 | 147 |
| Billing rate | $150 | $150 |
| Revenue shown | $22,050 | $15,000 invoiced |
| Difference | Counted as income | ~$7,000 servicing gap |
That gap is not revenue. It is the most useful number in retainer management, which is why it deserves its own line. Read hours times rate and you see your "best" client. Read contracted revenue and you see the account that needs repricing. Same month, same account.
Why dividing salary by logged hours hides idle time
Divide a salaried person's monthly cost by hours logged and every hour gets more expensive in a slow month. Take an SEO specialist on $10,000 a month who delivers 60 hours to one client:
| Hours logged in the month | Cost per hour | Cost of 60 SEO hours | Where the rest of the salary went |
|---|---|---|---|
| 90 | $111.11 | $6,667 | Spread across the other 30 hours |
| 140 | $71.43 | $4,286 | Spread across the other 80 hours |
| 173.3 (fixed capacity) | $57.70 | $3,462 | Idle = $4,807 at 90 logged; $1,922 at 140 |
The same 60 hours "cost" $6,667 or $4,286 depending on how busy the person was elsewhere. Project margin swings on something unrelated to the project. Bench time disappears: at 90 logged hours, 83 hours of salary went unabsorbed, but divide-by-logged pushes all $10,000 onto clients. Idle is real money tucked where nobody can act.
How to work out real margin (three formulas)
Revenue = retainer plus pre-paid overage, straight-lined across the period. What you invoiced, not what hours were "worth."
Cost = hours × hourly cost for hourly staff; hours × (monthly loaded cost ÷ fixed capacity) for salaried staff.
Idle = monthly loaded cost minus absorbed cost, on its own line.
173.3 is 40 × 52 / 12. Some agencies use a lower divisor after holiday and sick policy (for example about 156.7), which raises hourly cost and shrinks reported idle. Both reconcile to payroll. What breaks the report is switching divisors mid-year or letting departments disagree.
Run the same retainer at 100 vs 130 hours delivered at $57.70:
| Line | 100 hours | 130 hours |
|---|---|---|
| Contracted revenue | $15,000 | $15,000 |
| Absorbed cost | $5,770 | $7,501 |
| Gross margin | $9,230 (61.5%) | $7,499 (50.0%) |
| Delivered value at $150 | $15,000 | $19,500 |
| Servicing gap | $0 | $4,500 |
Revenue stays put. Cost rises with hours. The over-serviced month shows lower margin, which is correct. Under hours times rate, that month would have looked better.
What belongs in fully loaded cost
Two expensive mistakes. Pushing overhead into delivery cost makes every account look worse and sends you repricing when the real problem is overhead versus revenue. Leaving taxes and benefits out understates cost and overstates every margin. Check: delivery cost + idle + overhead should equal total operating cost for the month.
| Cost | In fully loaded cost? | Why |
|---|---|---|
| Base salary | Yes | Bulk of delivery cost |
| Payroll taxes and benefits | Yes | Unavoidable employment cost |
| Contractor / freelance fees | Yes, at invoice value | Direct delivery, same as a salary hour |
| Software a delivery role needs | Yes | Scales with delivery headcount |
| Bonuses tied to delivery | Yes, accrued monthly | Avoids a December cliff |
| Your own delivery hours | Yes, for those hours only | BD/admin hours stay out |
| Rent, utilities, general admin | No | Overhead below gross margin |
| Sales and marketing salaries | No | Overhead |
| Media spend and rebilled client software | No | Pass-through |
Where idle time goes (and how utilization fits)
Idle belongs to no client and no department. Client cost + idle = payroll, to the dollar. If they do not match, a rate is wrong or an entry is missing.
| Month | Hours logged | Absorbed cost | Idle | Idle share of salary |
|---|---|---|---|---|
| Slow | 90 | $5,193 | $4,807 | 48% |
| Busy | 140 | $8,078 | $1,922 | 19% |
| Full capacity | 173.3 | $10,000 | $0 | 0% |
Utilization and idle are the same fact from two directions. Someone at 52% utilization has 48% idle. Seeing both together is how you track retainer utilization in a marketing agency without waiting for year-end: hours against the retainer cap mid-month, plus person-level absorption against fixed capacity.
Work that is real but not client work
Calling every unabsorbed hour idle breaks past a certain size. Split unabsorbed time:
| Category | Covers | How to read |
|---|---|---|
| Client work | Hours against client + department | Only line that touches client margin |
| New business | Pitching, proposals, discovery | Investment vs revenue won |
| Internal projects | Site, templates, tooling | Cap it so it does not become a hobby |
| People / training | Onboarding, mentoring | Usually underfunded |
| Admin | Timesheets, all-hands | Watch the trend |
| Genuinely unsold | Nothing to do | Real idle; points at sales or staffing |
Keep five or six non-billable codes. Twenty codes become fiction.
Roster view: sort by gap, not by margin
Five clients, same $57.70 cost and $150 rate:
| Client | Contracted revenue | Hours | Absorbed cost | Gross margin | Delivered value | Servicing gap | Read |
|---|---|---|---|---|---|---|---|
| A | $15,000 | 100 | $5,770 | 61.5% | $15,000 | $0 | Healthy |
| B | $15,000 | 130 | $7,501 | 50.0% | $19,500 | $4,500 | Watch |
| C | $8,000 | 85 | $4,905 | 38.7% | $12,750 | $4,750 | Reprice |
| D | $22,000 | 120 | $6,924 | 68.5% | $18,000 | $0 | Check delivery |
| E | $6,000 | 70 | $4,039 | 32.7% | $10,500 | $4,500 | Reprice or exit |
| Total | $66,000 | 505 | $29,139 | 55.9% | $75,750 | $13,750 |
Blended 55.9% looks fine and tells you nothing. The roster does: two healthy, one drifting, two mispriced. Client E is the sharp case: smallest retainer, large gap. Client D's fat margin may be good pricing or under-delivery; delivered value belongs beside margin.
If you only have time for one column, sort by servicing gap. Margin tells you what happened. Gap tells you why and what to do: reprice, cut scope, or bill the overage. That is how profitability work raises close rates on expansion instead of sitting in a finance folder.
Billing the overage correctly is covered in invoicing for marketing agencies: the four billing models. Pricing the next retainer from honest inputs is covered in how to price a marketing agency retainer.
What software must do
Feature lists lie. For profitability software aimed at marketing agencies, require:
- Contracted revenue as the revenue line: retainers and approved overages, not hours times rate as income.
- Fixed capacity costing for salaried people, with idle as its own line that reconciles to payroll.
- Same hours for invoice, burn, cost, and margin: no CSV hop between time and finance.
- Retainer utilization mid-month: department caps visible before the last week.
- Roster views with margin, delivered value, and servicing gap per client, not only agency averages.
- Admin-only cost visibility so delivery sees burn without leaking loaded rates to every seat.
A time tracker alone does not do this. A CRM alone does not do this. A spreadsheet can, once, and then drifts. Agency Management Software that keeps CRM, time, billing, and margin on one client record is built for this job, not project management software repurposed for agencies. Point tools can approximate it with exports and discipline.
Monthly close (seven steps)
- Lock the period so hours stop moving.
- Recognize contracted revenue per client (plus approved pre-paid overage). Ignore hours-worth.
- Post pass-through and rebilled spend out of revenue and cost; markup stays in revenue.
- Cost hours: hourly at rate; salaried at loaded monthly divided by fixed capacity.
- Calculate idle per person.
- Reconcile: client cost + idle = loaded payroll. Fix mismatches before reading anything else.
- Read the roster: margin, delivered value, servicing gap. Act on gaps.
Step six is the one teams skip and the one that makes the rest trustworthy. Once numbers come from one system, close should take under an hour. If it takes a day, you are rebuilding the month from exports.
When close is short, the same operator can manage more clients without adding analysts. The roster becomes a weekly sales and delivery tool, not a quarterly autopsy. Share the gap-sorted view with account leads every Monday and the over-servicing conversations start before the write-off habit sets in.
Honest margin also changes how you staff. When idle is visible, you stop hiring from a gut feel that "everyone is slammed" and start hiring from a roster that shows which departments are over capacity versus which clients are simply underpriced. That is how Agency Management Software helps you take on more clients without reflexively adding headcount.
When margin and idle share one client record, Agency Management Software stops being a report and starts being an operating habit.
Where Verbial fits
Verbial is Agency Management Software: it works out profitability from contracted revenue and absorbed cost, reports idle on its own line, ties time to retainer pacing, and shows cost and margin to admins only, on the same client record as CRM, proposals, projects, and invoices. See profitability for the module detail.
Get a clearer view of what each client earns. Starter is available now; Growth and Pro are coming soon. Compare current plans and pricing.
If you want retainer margin you can act on this week, not another hours times rate vanity report, start a free trial at verbial.io. Bring one month of retainers and compare contracted revenue against the hours times rate story you have been telling yourself.
Common questions
What is a good gross margin for a marketing agency?
50-60% on labor is healthy; below 40% usually means over-servicing or under-pricing. Measure from contracted revenue and fully loaded cost. An hours-times-rate report will flatter you.
How do you account for idle time in agency profitability?
Cost salaried people at a fixed monthly capacity, charge clients only for hours logged, and report the leftover as idle on its own line. Burying idle in client costs is what makes every margin look better than it is.
How do you track retainer utilization in a marketing agency?
Two layers: (1) hours burned against the sold retainer cap by department, visible mid-month; (2) person-level hours absorbed against fixed monthly capacity, with unsold time as idle. Tools that only show billable percent without a cap are incomplete.
What is the best software for marketing agency profitability?
Software that uses contracted revenue (not hours times rate), fixed capacity costing with idle as its own line, shared hours across time/invoice/margin, and mid-month retainer burn. Prefer one client record over three exports. Verbial is Agency Management Software built for that shape.
Why does my most over-serviced client look like my best client?
Because hours times billing rate counts unpaid hours as revenue. Switch the revenue line to what you invoiced and the picture inverts.
What is the difference between gross margin and the servicing gap?
Gross margin is contracted revenue minus fully loaded delivery cost. Servicing gap is delivered value at billing rate minus what the client paid. An account can show acceptable margin and a large gap at once.
Should freelancers be in fully loaded cost?
Yes, at invoice value on the client and department they worked. Freelancers you did not book cost nothing, so they generate no idle line.
How many hours a month for a salaried person?
173.3 (2080 / 12) is the standard start. Deducting holiday/sick (about 156) raises hourly cost and lowers idle. Both reconcile. The wrong answer is a divisor that changes monthly or by department.
Written by Ty Smith. Filed under Profitability, Finance.