MarginFleet

Client profitability in monday.com: how to calculate true margin per client

monday tracks hours and budgets. It does not tell you whether Client X actually made money. Here is the math that closes the gap — and how to run it without maintaining a spreadsheet.

Most service teams can answer “how many hours did we spend?” They struggle with “did we make money on this client?” The gap is not effort. It is the missing link between hours, rates, costs, and revenue.

“monday tracks hours and holds budgets, but the margin math — whose hours × what rate, against the fee — seems to live in spreadsheet exports everywhere.” — monday community

Why hours alone don’t tell you profit

An hour is not a unit of money. Two people can log the same hour at different cost rates. A senior consultant at a $95 cost rate costs nearly three times a junior at $35. If you only look at total hours, a “busy” project can look healthy while its margin is already negative.

Profit also depends on what the client actually pays. A fixed-fee project with 20% overrun and no change order is a different business than a retainer with hours left. You need both sides: cost to deliver and revenue recognized.

The four numbers you need

Then: project margin = revenue − (hours × cost rate) − external costs. Client margin is the roll-up of every project for that client. Margin % is margin ÷ revenue. If revenue is zero or unknown, show “no revenue”, not 0%.

Three ways to do this in monday

1. Spreadsheet export

Export time tracking, match rates in Excel, add revenue, pivot by client. It works for a monthly review, but it is stale by the time it is finished — and the rate history is usually lost.

2. monday formula columns

You can multiply hours by a rate in a formula column. The limits show up quickly: formula outputs are hard to use in automations, subitem roll-ups are fragile, and rate changes overwrite history. It also becomes a second system to maintain.

3. A dedicated margin layer

A profitability layer reads the time data you already track, applies cost and billable rates (with history), adds revenue, and produces project and client margin with overrun alerts. That is what MarginFleet is being built to do — a 15-minute setup, no formulas to maintain, no implementation partner.

Worked example: a 10-person agency

Client A: $18,000 fixed fee, 210 tracked hours at a blended $52 cost rate = $10,920 labor, plus $900 external costs → $6,180 margin (34.3%).
Client B: $6,000 retainer, 140 hours at $58 = $8,120 labor → −$2,120 margin. The team was busy; the client was losing money.

This is the number a monthly export hides until the quarter is over.

What “true margin” should include — and what it should not

Include: labor cost at cost rate, contractor and external costs, revenue (fee, retainer, invoices), and the ability to see which client/project is dragging the portfolio down.

Do not confuse it with: a time tracker (we read time, we don’t replace it), an invoice generator (we use revenue as an input, we don’t create invoices), or a generic dashboard (a chart without a decision is not enough).

FAQ

Do I need to change how we track time?

No. It works with monday’s native time tracking and the boards you already use. You map the boards once; the app reads the hours.

Where does revenue come from?

A project fee field, revenue entries, or a CSV import in v1. It is deliberately an input, not an invoice engine.

What about rate changes?

Rates are dated. A raise in July does not rewrite January’s margin; you can see the effective rate for each period.

Is this a full PSA?

No. It is a margin layer inside monday for teams that want to keep monday, not migrate to Productive, Scoro, or Kantata.

Get early access →   Free Google Sheets tracker

Early access. Not listed on the monday marketplace yet. Founding customers get 50% off for the first 12 months. No spam.