ServiceM8 publishes the arithmetic it uses to decide whether a job made you money. Invoiced amount, minus material cost, labour cost and admin cost. That is the whole formula.
Three of those terms your system already holds. Labour cost is the one that has to come from you, and the number it wants is what an hour costs you, which is a different number from the one you charge for an hour.
Every contractor can name the charging rate on the spot. It is on the quote, the invoice, the price list, sometimes the website. The other one has to be built.
The wage is the easy part. On top of it sit payroll taxes, workers' compensation premiums, vacation pay, and benefits if you offer them. Whether the truck and the phone belong in that number too is a judgment call worth making with whoever does your books, and worth making the same way every time. Nobody hands you the total. It exists in several places and lives in none of them.
For years that was an accounting exercise you could put off. It stops being optional the moment you switch on job costing.
That formula runs inside Job Costing, which puts an estimated profit figure on every job as it closes. Admin cost, the third term, is the time your people spend inside ServiceM8 working the job card, which is a real cost that rarely shows up anywhere you can see it. Job Costing comes with Premium and Premium Plus, so on a lower plan, getting it means moving plans.
Labour cost is the interesting term, because it is assembled from two things and both of them are yours.
The hours come from Check In data where you have it. Where you do not, ServiceM8 falls back to the quantity of labour items billed, and it labels the result Estimated rather than On Site. Both of those work. They are different numbers, and the report tells you which one you are looking at.
The rate is where it gets specific. ServiceM8 takes the hourly cost from the Purchase Cost of the labour item, which is either synced across from your accounting package or set by hand in Account, under Materials and Services. If your account is connected to accounting, find out which side owns that field before you type into it.
There is also a Default Labour Rate on each staff record, under Settings, then Staff, then Edit, then Options. It is a reasonable place to go looking for this, and what it actually does
There is also a Default Labour Rate on each staff record, under Settings, then Staff, then Edit, then Options. It is a reasonable place to go looking for this, and what it actually does is pick which labour item autofills when that person's recorded time gets pushed onto the invoice. The cost sits on the item it points at.
Now the part I think is genuinely good design, and it is worth understanding before you read your first report.
If your labour items are sitting at zero Purchase Cost, ServiceM8 treats that labour as zero-profit rather than zero-cost. It assumes the hour sold for exactly what it cost, so labour contributes no margin at all and cannot flatter the result. What you are left reading is the margin on everything else you billed, materials, subtrades, equipment, less your admin cost.
That is a conservative choice and I would rather have it than the alternative.

But if you bid work at a blended margin, where labour, materials, subtrades and equipment all get marked up together and the customer sees one number, it means the report is answering a narrower question than the one you asked it.
One more thing worth knowing before you read a mixed crew. When a job carries more than one labour rate, an apprentice and a tradesman on the same site, ServiceM8 uses the weighted average of those rates as the hourly cost for every Check In on that job. The job total holds up as long as the billed split matches who was actually on site. Reading one person's margin out of that job is beyond what a blended rate can carry.
If you want the labour items set up, the rates loaded and check-in configured properly, https://www.chanautomation.com/servicem8-setup is where that work lives.
So, the practical version.
The number itself is a morning with whoever does your books. Take one tech's wage for the year, add everything the business paid on top of it, then divide by the hours you can honestly say landed on jobs. That denominator is the one that catches people.
And if job costing is already switched on in your account, there is a thirty-second version you can run before that meeting. Open a job you finished last month and look at whether the labour reads On Site or Estimated.
Whichever it says, you have just learned something about where your margin numbers have been coming from.
Kevin Chan
The Ops Shortcut by ChanAutomation
https://www.chanautomation.com/servicem8-setup
