Blog · Board and management reporting
Marketing agency KPIs should connect client retention, delivery capacity, and contribution. Use a worked agency workbook to calculate the measures, check their denominators, and assign an owner to each result.
Marketing agency KPIs should show whether you retain clients, use delivery capacity, and earn contribution from the work. Calculate these measures from the same reporting period, but keep their denominators separate. A campaign can perform well for the client while the agency earns too little to deliver it sustainably.
A KPI needs a decision attached to it. A number without an owner or an agreed response is a reporting field, even if it appears prominently on a scorecard.
| Management question | Measure | Source rows | Decision owner |
|---|---|---|---|
| Are existing clients staying? | Opening-cohort client retention | Opening and closing client status | Account director |
| Is delivery capacity being used? | Billable utilization | Approved time and available-hours schedule | Delivery lead |
| Does the work cover delivery costs? | Client contribution and margin | Net fee revenue, direct labor, outside delivery costs | Finance lead |
| Are client campaigns meeting their objective? | Agreed campaign outcome | Campaign and CRM exports | Client account lead |
Use the marketing agency dashboard to arrange those answers for review. The definitions belong here; the dashboard should display them consistently rather than introduce a new calculation for each chart.
Keep campaign outcomes at the client level. For a business selling to other companies, the neighboring guide to B2B marketing KPIs covers demand and sales outcomes. An agency management scorecard also needs the cost of serving that client.
Use a client roster with a stable client ID, opening active flag, closing active flag, start date, and end date. Define active before counting it: for this example, an active client has an ongoing paid engagement, and a paused engagement is inactive. Apply that policy to both dates.
The time workbook needs employee, client, work date, approved hours, and billable classification. Keep the available-hours schedule separately. Available hours belong to employees and periods, not individual clients; repeating an employee's capacity on every client row would inflate the denominator.
The finance export needs client ID, service period, net agency fees, assigned direct labor, and outside delivery cost. Exclude client media spend from fee revenue for this management view. Reconcile that boundary to the ledger under your company's accounting policy rather than treating the management view as an accounting ruling.
Write down how direct labor is assigned. The example uses approved client hours multiplied by a loaded labor rate of $60 per hour. That rate includes the labor costs finance has chosen to allocate; it does not imply that all remaining agency expenses have disappeared.
The following client summary covers September 2026. A flag of 1 means active on that date; 0 means inactive. New client D is absent from the opening cohort, while client C leaves during the month.
| Client | Opening active | Closing active | Fees (USD) | Billable hours | Assigned labor (USD) | Outside delivery (USD) |
|---|---|---|---|---|---|---|
| A | 1 | 1 | 40,000 | 320 | 19,200 | 4,000 |
| B | 1 | 1 | 30,000 | 240 | 14,400 | 3,000 |
| C | 1 | 0 | 10,000 | 100 | 6,000 | 2,000 |
| D | 0 | 1 | 20,000 | 140 | 8,400 | 1,000 |
| Total | 3 | 3 | 100,000 | 800 | 48,000 | 10,000 |
Each labor amount equals its row's billable hours multiplied by $60. Total labor therefore also equals 800 × $60 = $48,000. These are assigned delivery costs for the example, not evidence that every billable hour was invoiced separately.
Available delivery capacity comes from a separate team schedule:
| Delivery team | Available hours |
|---|---|
| Strategy | 400 |
| Creative | 320 |
| Media | 160 |
| Account delivery | 200 |
| Total | 1,080 |
Do not read these team capacities as client-specific allocations. They establish the agency denominator once, regardless of how many clients each person serves.
Client retention = Opening clients still active at close / Opening active clients
Billable utilization = Approved billable hours / Available delivery hours
Contribution = Agency fee revenue − Assigned labor − Outside delivery cost
Contribution margin = Contribution / Agency fee revenue
For the client table, suppose columns B and C hold the opening and closing flags, D holds fees, E holds hours, F holds labor, and G holds outside cost. Client rows run from 2 through 5. In Google Sheets, retention is:
=COUNTIFS(B2:B5,1,C2:C5,1)/COUNTIF(B2:B5,1)
Google documents COUNTIFS as counting rows that meet multiple criteria. Here both the opening and closing flags must be 1. The result is 2 / 3 = 66.7%, rounded to one decimal place. The closing client count is still 3 because the new arrival replaces the departure; closing count alone hides the loss.
With available hours in J2:J5, utilization is:
=SUM(E2:E5)/SUM(J2:J5)
That gives 800 / 1,080 = 74.1%, rounded to one decimal place. Finance can use SUMIFS to sum values meeting several conditions when the underlying time export also needs filters for approval status and reporting month.
Contribution in H2 is =D2-F2-G2, filled down. Margin in I2 is =IF(D2=0,"",H2/D2).
| Client | Contribution (USD) | Contribution margin |
|---|---|---|
| A | 16,800 | 42.0% |
| B | 12,600 | 42.0% |
| C | 2,000 | 20.0% |
| D | 10,600 | 53.0% |
| Total | 42,000 | 42.0% |
The total is $100,000 − $48,000 − $10,000 = $42,000. Divide that total by $100,000 to obtain 42.0%. Calculate group margins from totals, using the same discipline as other financial KPIs.
Covirage is not affiliated with Google.
The opening-client bridge is 3 opening clients − 1 departure + 1 new client = 3 closing clients. Investigate any mismatch against the roster before discussing retention. A renamed client should retain its ID rather than appear as a departure and a new win.
Approved billable hours must total 800 in both the time export and the summary. The capacity schedule must total 1,080 independently. Finance should then reconcile fees and assigned delivery costs to their source schedules, with any unassigned costs visible in a separate line.
The account director should review client C's departure and low contribution together, without assuming one caused the other. The delivery lead should examine unused capacity by team before adding work. Finance should review pricing and scope on low-contribution work, then reconcile the remaining overhead before reporting agency profit.
Bring a sample of your own client roster, time workbook, and finance export to Covirage. Covirage maps the columns, its tools compute and check the figures, and the external AI model explains the results with every figure traced to its rows. Create a free Covirage account; account creation takes about a minute, then you set up your business and bring your own data.
See how the same file-based review supports FP&A reporting.
Start with client retention, billable utilization, and contribution margin. Together they show continuity, capacity use, and delivery economics. Add campaign outcome measures only when they answer a specific client question and have a documented source, period, and denominator.
Billable utilization is approved billable delivery hours divided by available delivery hours under a stated capacity policy. Define how holidays, leave, internal work, and overtime affect that denominator before comparing employees, teams, or reporting periods.
Client contribution deducts the delivery costs included in your management definition from agency fee revenue. It usually leaves corporate overhead and other expenses to a separate reconciliation. State the cost boundary so readers do not mistake contribution for net profit.