← All posts
agencytime-trackingbillable-hours

Time tracking for small marketing agencies

Time tracking for agencies with 5-15 staff: how to track retainer and project hours, what to set up, and where tracking tools stop helping.

· 7 min read

Most agency owners I talk to don't have a time tracking problem. They have a "where did the retainer go" problem. The retainer says 40 hours a month. By the 20th, the account manager says the client is asking for one more revision, and nobody can say whether that's hour 31 or hour 52. Time tracking for agencies is really about answering that one question before the month ends, not after.

This is written for an owner with 5-15 people, some employees and some contractors, running a handful of retainers plus the occasional project. Here's what actually works, and what doesn't.

Start with the smallest structure that answers your questions

The instinct is to build a beautiful taxonomy: client, brand, campaign, deliverable, task type. Then nobody fills it in and you have precise data on 40% of the hours, which is worse than rough data on 95%.

Start with two levels:

  1. Client — one entry per paying client, not per brand or per contact.
  2. Bucket — three to five per client, max.

For a retainer, the buckets are usually: strategy, production, client comms, revisions. That's it. You don't need "Instagram carousel design round 2". You need to know that revisions ate 14 hours on a 40-hour retainer, because that's the number you take into the renewal conversation.

For project work, buckets map to your phases: discovery, build, launch, post-launch support. The post-launch bucket is the one that matters — it's where unpaid work hides after a project is "done".

Decide what counts as billable before anyone tracks anything

Write it down in one paragraph and send it to the team. Something like: internal team meetings about a client are billable to that client; new business pitches are not billable to anyone and go to an internal bucket; travel is billable at half rate; your own admin is not tracked at all.

If you skip this, you get three different interpretations and a timesheet you can't defend. We covered the mechanics of turning tracked hours into an invoice nobody argues with in how to bill clients from tracked hours without disputes — the short version is that the client should never be surprised by a line item.

The retainer burn check takes ten minutes a week

This is the habit that changes things, and it has nothing to do with which tool you pick.

Once a week — Friday morning is fine — pull hours per client for the month so far and compare against the retainer. You're looking for three numbers per client:

  • Hours used
  • Hours in the retainer
  • Days left in the month

If a 40-hour client has burned 34 hours with 11 days left, that's a conversation this week, not a write-off at month end. You either stop doing the extra work, or you tell the client it's extra and get a yes. Both are fine. Finding out on the 30th is not.

Do the same math at the agency level once a month: total tracked hours divided by billable tracked hours. If your team tracks 1,200 hours and 780 are billable to a client, you're at 65% utilisation. That's your actual capacity, and it's the number to use when you decide whether you can take the next client — not headcount.

Contractors need a different setup than staff

This is where most agency setups get messy. Your employees are on salary and you're tracking hours to understand cost and capacity. Your contractors send invoices and you're tracking hours to verify them.

Practical approach: contractors track their own hours in the same tool, under the same clients and buckets, and their invoice has to match what's in the tool. Not approximately — exactly. Agree the tolerance up front (say, within 5%) and what happens when it's over.

Don't put monitoring-style tracking on contractors. A contractor who delivers against a scope doesn't owe you screenshots, and asking for them usually tells you the relationship is wrong. Either you trust the deliverable or you shouldn't have hired them. Monitoring belongs on your own team's machines, if anywhere, and only after you've told them — plainly, in advance — how it works and who sees it.

What each type of tool is actually good at

Four honest categories, and the tradeoff in each:

Manual timers (Toggl Track, Clockify). Someone presses start, picks a client, presses stop. Cheap, flexible, works for contractors, and the data is intentional — a human decided what that hour was. The cost: people forget. Friday-afternoon reconstruction is normal, and reconstructed hours drift 10-20% from reality in either direction. For an agency where every hour has a client attached, this is often still the right answer.

Automatic tracking (DeskTime, ActivTrak, BiBoTracking). The app records working time and activity without anyone pressing a button. You get complete coverage and an honest total, but the tool doesn't know that the Figma file was for Client A — you or your team still have to attribute it. We went through that tradeoff in detail in automatic time tracking vs starting a timer by hand.

Project management time logs (the time field inside Asana, ClickUp, Monday). Hours sit next to the work, which is genuinely nice. The reporting is usually too weak for retainer burn across 8 clients, and if you change PM tools you lose the history.

Full agency suites (Harvest + Forecast, Productive, Scoro). Time, rates, invoicing, capacity planning in one place. These are built for exactly your problem. They're also the most expensive per seat and the setup is a week, not an afternoon.

A reasonable default for 5-15 people

Pick one tool, put every client in it, use 3-5 buckets, do the Friday burn check. If you're mostly contractors, use a manual timer. If you're mostly employees on company machines and you want totals you don't have to chase, use automatic tracking and attribute weekly. Don't run two tools — you'll end up reconciling them instead of using them.

If you want the step-by-step version of the rollout, how to set up employee time tracking in one afternoon covers it.

Where this goes wrong

Three failure modes I'd watch for.

Tracking becomes the performance review. The moment someone's logged hours feed into a judgement about how hard they work, the hours become fiction. People pad, round up, and stop logging the twenty minutes they spent thinking. Use the data for client profitability and capacity, not for ranking people. There's more on keeping that line in time tracking that does not destroy team morale.

You track but never act. Six months of beautiful data and the unprofitable retainer is still unprofitable. The Friday check is the point. If you're not going to look at it weekly, a simpler setup is better.

You chase precision you don't need. Rounding to 15 minutes is fine. Arguing about 6-minute increments inside a 40-hour retainer is wasted energy, and it makes the team hate the tool.

And the honest limit: if your real problem is that your pricing is wrong — a 40-hour retainer for work that takes 70 — tracking won't fix it. It'll just show you the gap in high resolution. That's useful, but it's a pricing decision, not a tooling one.

If automatic tracking is what you need

For the automatic-tracking slice of this, bibotracker is what I build: a desktop app for macOS and Windows that records work time, periodic screenshots and browser activity, with a web admin where you can see hours per person and export them. It's aimed at small teams on company machines, so if your agency is mostly contractors on their own laptops, a manual timer will serve you better — and I'd rather say that than sell you the wrong tool.

Track time without the per-seat bill

BiBoTracking is free, open source and local-first — for macOS and Windows.

See how it works