A campaign that hit every KPI can still be the one quietly losing the agency money. Nobody finds out until someone asks why margins are thin this quarter.
A campaign can hit every performance target and still lose money for the agency running it.
Ad spend isn't the issue — that's the client's budget, not the agency's cost. The issue is everything underneath it: the hours spent on creative briefs, the freelance media buyer brought in for a launch, the reporting tool licensed just to build attribution dashboards. Revenue gets tracked closely. That layer underneath it usually doesn't.
The problem with tracking revenue alone
Most media agencies know their numbers at the top line — retainer value, campaign fees, total billings for the month. Most also run some kind of project tracking software to keep campaign cycles on schedule.
What's missing is the connection between the two. Strategist hours, contractor invoices, and platform tool costs rarely get tied back to the specific campaign that generated them — where media agency hours disappear, margin follows. They land in a general ledger instead, disconnected from the project record.
Which means a campaign that hit every KPI can still be the one quietly losing the agency money. Nobody finds out until someone asks why margins are thin this quarter.
What changes once cost is visible
Pricing gets more accurate. If multi-platform campaigns consistently cost more to run than single-channel ones, that should be reflected in the retainer — not absorbed by the agency.
Client conversations shift too. An account lead can show a client exactly what a mid-campaign platform change cost in actual hours, instead of just feeling the strain of it.
And resourcing improves. It becomes obvious which campaign types are worth taking on more of, and which ones look good in the case study but thin in the bank account.
The four costs most media agencies don't track
Time. Strategist, buyer, and analyst hours actually spent on the campaign — not the hours estimated when the brief was approved.
Contractor fees. Freelance media buyers, video editors, or platform specialists brought in for a specific launch or channel.
Tools. Reporting and attribution software, platform access fees, and any analytics tooling licensed for that client's campaign specifically — separate from ad spend, which passes through to the client.
Overhead. Internal strategy reviews, account management, and reporting time that doesn't show up as a billable line but still eats into the campaign's margin.
The simple model
Project margin is agency revenue minus those four costs, calculated per campaign and per client — never blended with the ad spend that runs through the same project.
Agency Revenue (fee, not ad spend) − Time cost (hours × fully-loaded rate) − Contractor fees − Tool & platform cost − Overhead allocation = Campaign Margin
Run this by campaign type. A performance campaign and a brand awareness campaign carry different cost shapes — combining them hides which one is actually funding the agency.
Agency OS links project records to cost and invoice data directly, so margin is visible per client and per campaign type without a parallel spreadsheet.
Where this usually breaks down
Most agencies run a task management board for campaign workflow, an invoice tracker for client billing, and a project management dashboard for status — three separate views, none showing cost.
Project tracking will tell you a campaign launched on schedule. It won't tell you what that schedule cost to hit, or whether the rush fees from a compressed timeline quietly ate the margin.
This is also where cash flow management for media agencies tends to suffer. Fees come in steadily, but nobody can see, campaign by campaign, which ones are actually profitable enough to keep funding the rest.
What to do this week
Pull your three most recent completed campaigns. Total the four cost categories for each and compare against the agency fee — not the ad spend. You'll likely find one campaign type running thinner than the others, often the one with the most platforms or the tightest timeline. That's the one to reprice first.


