Most tree service owners running multiple crews can recite their monthly revenue within a few thousand dollars. Ask them which jobs actually made money last month and you get silence.
The problem is not laziness. It is that real job costing requires tracking five different cost buckets across every job, every crew, every day — and most field service software treats job costing as an afterthought tacked onto scheduling and invoicing.
Meanwhile, diesel is up 12% since early 2023, workers' comp premiums climbed 8–15% depending on your state's experience mod, and median wages for tree trimmers rose 9% year-over-year. If you are still pricing jobs the way you did in 2022 — by gut feel, by what competitors charge, or by a rough multiplier on labor hours — you are quietly bleeding margin on jobs that look busy but lose money.
This post walks through a practical framework for tracking the real cost of every job so you can price with confidence, identify which service lines and which crews are profitable, and stop subsidizing your worst work with your best.
Why Revenue Is a Terrible Proxy for Profit
Here is the common trap: your lead crew bills $3,200 on a Tuesday — a big oak removal, two hours of crane time, full day of work — and you assume it was a good day. You see the invoice total, maybe glance at the hours logged, and move on.
Then you sit down at month-end and realize that job cost $2,100 in labor (six guys, eight hours each, loaded rate), $450 in crane rental, $180 in dump fees, $90 in fuel and drive time, and when you allocate overhead it is another $320. Total cost: $3,140. Gross margin: $60, or 1.9%.
Meanwhile, the same crew ran a residential pruning route the next day — five small jobs, $1,850 in revenue, four billable hours of actual work. Cost: $720 labor, $40 fuel, $15 disposal, $140 overhead. Margin: $935, or 50.5%.
The high-ticket removal felt like a win. The pruning route felt like filler work. The numbers say otherwise.
The goal is to know your gross margin per job, per crew, and per service type — not quarterly, not annually, but within a day or two of completing the work. That feedback loop is what lets you fix pricing mistakes, retrain crews, and stop taking jobs that do not pencil.
The Five Buckets of Job Cost
Accurate job costing means tracking five cost categories for every completed job:
- Labor: The fully loaded hourly rate for every crew member on the job — base wage plus FICA, FUTA, SUTA, workers' comp, health insurance, and any other benefits. Not the wage you pay them, the wage plus every dollar of payroll burden.
- Equipment: Ownership cost or rental fees for every piece of machinery used, plus fuel and a share of annual maintenance. Chippers, bucket trucks, stump grinders, cranes — they all have an hourly cost whether you track it or not.
- Materials and disposal: Rigging gear consumed, chemicals applied, mulch or wood chips hauled away, dump fees, stump grindings. Anything you buy or pay to dispose of on behalf of that specific job.
- Drive time and mobilization: The labor cost of getting to and from the job site, plus fuel. A crew driving 45 minutes each way burns 1.5 labor-hours and $15–$25 in diesel before a single saw is started.
- Overhead allocation: Office rent, admin salaries, insurance (liability, not workers' comp — that is in labor), software subscriptions, marketing spend. These costs exist whether you do one job or fifty, but every job needs to carry its share.
Add those five buckets together and you have the true cost to produce the job. Subtract that from the invoice total and you have gross profit. Divide gross profit by revenue and you have gross margin — the single most important number for understanding which work is worth doing.
Calculating Your True Loaded Labor Rate
Most owners can tell you what they pay a climber per hour. Fewer can tell you what that climber actually costs per hour once you layer in payroll taxes and insurance.
Here is the math. Start with the base hourly wage. Add:
- FICA: 7.65% (Social Security + Medicare employer share)
- FUTA: 0.6% on the first $7,000 of wages (negligible after Q1, but include it)
- SUTA: Varies by state; typically 2–5% depending on your experience rating and state schedule
- Workers' comp: Huge for tree care. Rates vary by state and classification code, but expect 15–35% of gross wages for climbers and bucket operators, 8–15% for ground crew
- Health insurance, retirement match, other benefits: If you offer them, divide the monthly cost by billable hours per month
Example: you pay a climber $28/hour. FICA adds $2.14. SUTA at 3% adds $0.84. Workers' comp at 25% adds $7.00. Health insurance costs you $650/month; at 160 billable hours that is $4.06/hour. Total loaded rate: $42.04/hour.
That climber does not cost you $28. He costs you $42. If you price jobs assuming $28, you are losing $14/hour before you account for equipment, materials, drive time, or overhead.
This is why time tracking with GPS clock-in and clock-out matters. You need hours logged per job, not per day. If your crew works three jobs in a day and you only know they logged eight hours total, you cannot allocate labor cost accurately. You need to know that Job A took 2.5 hours, Job B took 3.0 hours, Job C took 2.0 hours, and drive time between them ate 0.5 hours. ArborDash logs time entries against specific jobs and syncs them to QuickBooks Payroll, so the same data that runs payroll also feeds job costing.
Equipment Cost Per Hour: Stop Ignoring Depreciation
A bucket truck does not cost you money only when it breaks. It costs you money every hour you run it, whether you track that cost or not.
Here is how to calculate an hourly ownership cost. Take the annual depreciation (using IRS Publication 946 as your guide — MACRS over five or seven years for most tree care equipment), add annual maintenance and repairs, add annual fuel consumption, and divide by annual operating hours.
Example: you bought a chipper for $45,000. Depreciation over seven years is roughly $6,400/year. You spend $1,200/year on maintenance and another $800 on fuel (assuming 300 hours of use). Total annual cost: $8,400. If you run it 300 hours/year, that is $28/hour.
For a bucket truck: $85,000 purchase price, $12,150/year depreciation, $3,500 maintenance, $4,200 fuel at 400 hours/year. Hourly cost: $49.63.
If you rent a crane for $1,200/day and use it for six hours, that is $200/hour — but you avoid the annual insurance, storage, and maintenance of ownership. The break-even depends on utilization. If you only need a crane eight days a year, renting at $9,600/year beats buying a $180,000 machine that depreciates $25,000/year plus insurance and maintenance.
Track equipment hours the same way you track labor hours. When a crew logs time on a job, they should also log which equipment they used. That is the only way to allocate equipment cost per job rather than smearing it across the whole month.
Drive Time and Route Density: The Silent Margin Killer
A three-person crew driving 45 minutes to a job burns 2.25 labor-hours (0.75 hours × 3 people) before they touch a tree. At a $38 loaded rate that is $85.50. Add fuel — figure $0.25/mile for a truck towing a chipper, 35 miles round-trip — and you are at $94.25 in cost just to show up.
Do that twice a day and you are spending $188.50 in drive cost per crew per day, or $940/week, or $3,760/month per crew. Scale that across four crews and you are burning $15,000/month on windshield time.
Tighter route density fixes this without touching your pricing. If you can cluster jobs geographically so the crew runs four jobs in the same neighborhood instead of ping-ponging across town, you cut drive time from 90 minutes/day to 20 minutes/day. That recovers 70 minutes of billable time and $150–$200/week in labor and fuel cost per crew.
This is where route optimization pays for itself in the first month. A multi-stop route planner that clusters jobs by proximity and reorders them based on live traffic shaves 30–90 minutes/day off drive time. That time either turns into another billable job or turns into your crew going home at 4:30 instead of 6:00 — both of which improve margin and retention.
Overhead Allocation Without an Accounting Degree
Overhead is everything that keeps the business running but is not directly tied to a single job: office rent, admin salaries, liability insurance, software subscriptions, marketing spend, your own salary if you are not in the field.
The simplest allocation method: add up total monthly overhead, divide by total billable crew-hours for the month, and you get an overhead cost per crew-hour.
Example: your monthly overhead is $18,000. You run three crews averaging 140 billable hours/month each (420 total). Overhead per crew-hour: $42.86.
So every hour a crew spends on a job needs to carry $42.86 of overhead on top of labor and equipment cost. A four-hour job carries $171.44 in overhead. A ten-hour job carries $428.60.
This number tells you whether a low-margin municipal contract is worth taking. If the city wants you to do parkway pruning at $95/hour and your loaded labor is $55/hour, equipment is $18/hour, and overhead is $43/hour, you are at $116 all-in cost for $95 revenue. That is a 22% loss on every hour worked. You would make more money sending the crew home.
Turning Cost Data Into Better Estimates
Once you have real cost data — ideally three to six months of completed jobs with tracked labor, equipment, materials, drive time, and overhead — you can stop guessing on estimates and start pricing based on what jobs actually cost you to produce.
Build estimate templates by service type. A residential oak removal template might include:
- Climber + two ground crew, 6 hours, $252/hour loaded labor = $1,512
- Bucket truck, 6 hours @ $50/hour = $300
- Chipper, 6 hours @ $28/hour = $168
- Dump fees, 8 yards @ $18/yard = $144
- Drive time, 1.5 hours round-trip, 3 crew @ $38/hour = $171
- Overhead, 7.5 total hours @ $43/hour = $322.50
- Total cost: $2,617.50
- Target margin: 35%
- Price: $4,027
You adjust line items based on the specific job — more hours if the tree is bigger, crane rental if access is tight, higher disposal if it is a pest-infested ash — but the template gives you a reality-based starting point instead of pulling a number out of the air.
ArborDash lets you build professional line-item estimates with photos, service descriptions, and e-signature capture, and every line item can pull from historical cost data so your estimates reflect what jobs actually cost. When the customer signs, the estimate converts to a scheduled job with one click and the cost data flows through to job costing reports automatically.
Tracking Actual vs. Estimated Cost on Every Job
Estimating is half the equation. The other half is comparing what you estimated against what the job actually cost after completion.
You estimated 6 hours of labor. The crew logged 7.5 hours. You estimated $144 in dump fees. The actual receipt was $216 because they had to make two trips. You estimated no drive time because you thought the job was close to the previous one, but the crew spent 40 minutes in traffic.
Every variance is a data point. Over time you learn that removals in older neighborhoods with narrow streets always take 20% longer than estimated. You learn that your newer crew takes 30% more time on pruning jobs than your lead crew. You learn that jobs south of the river always involve an extra dump run because the closest yard is 15 minutes farther.
Feed those learnings back into your estimate templates and your pricing gets tighter. After six months of tracking actual vs. estimated cost, your estimates should land within 10–15% of actual cost on 80% of jobs. That is the difference between profitable work and busy work.
The reporting and analytics dashboard in ArborDash shows you estimated vs. actual cost per job, gross margin by service type, crew productivity metrics, and cost variance trends over time. The goal is not to generate reports for the sake of reports — it is to surface the two or three numbers that tell you whether you are making money or kidding yourself.
What Good Job-Costing Data Lets You Do
Once you have three to six months of accurate per-job cost data, you can make decisions that were previously just guesses:
- Identify your most and least profitable service lines. You might discover that stump grinding is a 55% margin business for you while PHC treatments are 18% margin because you underpriced them two years ago and never revisited. Now you know where to raise prices or stop offering the service.
- Spot underperforming crews. If Crew A consistently delivers 40% margins and Crew B delivers 22% on the same work, the problem is not the work — it is training, tools, or the foreman. Fix it or reassign people.
- Set minimum job sizes. If your cost to mobilize a crew is $180 and your overhead allocation is $43/hour, a one-hour job costs you $266 before you account for labor or equipment. Anything under $400 is probably not worth dispatching a truck for unless it is on the way to something bigger.
- Make confident decisions about hiring and equipment purchases. You have enough high-margin removal work to justify a second bucket truck, or you do not. The data tells you.
- Evaluate territory expansion. A new service area 40 minutes away might look attractive until you model the drive-time cost and realize it kills your margin unless you can build enough route density to justify a dedicated crew.
Job costing is not about generating spreadsheets. It is about knowing which levers to pull when you need to improve profitability — and knowing which levers are already working so you do not mess them up.
Getting Started This Week
You do not need six months and a consultant to start improving job costing. You can make meaningful progress in 30 days with four steps:
Step 1: Calculate your loaded labor rate for each role. Grab last month's payroll report, add up gross wages, add up payroll taxes and workers' comp premiums, add health insurance and other benefits, divide total cost by total hours worked. That is your average loaded rate. Do it separately for climbers, ground crew, and foremen if their wages and workers' comp rates differ meaningfully.
Step 2: Set up per-job time tracking. Stop logging hours per day and start logging hours per job. Your crews need to clock in and out against specific jobs, not just the shift. If your current software does not support that, it is time to switch. ArborDash includes GPS-verified clock-in and clock-out with timesheet approvals and overtime tracking, and every time entry links to a job so labor cost rolls up automatically.
Step 3: Run a 30-day pilot. Track actual costs on every job for one month — labor hours, equipment hours, materials purchased, dump fees paid, drive time logged. At the end of the month, compare total cost to total revenue for each job and calculate gross margin. Rank your jobs from most to least profitable and look for patterns.
Step 4: Adjust your pricing templates. Take the three service types you do most often — removals, pruning, PHC, whatever — and rebuild your estimate templates using real cost data from the pilot month. Use those templates for the next 30 days and track variance again. If your estimates are landing within 15% of actual cost, you are in good shape. If they are off by 30–50%, your templates need more work or your field execution needs tightening.
The goal is not perfection in month one. The goal is to replace gut-feel pricing with a feedback loop that gets tighter every month. Most tree service owners who implement real job costing discover they have been underpricing 30–40% of their work and overpricing another 20%, and the net effect is they have been working harder than necessary for less profit than they assumed.
Fix the data and the rest follows. You will know which jobs to take, which crews to trust with your best work, and which service lines to grow. And you will stop wondering at year-end where all the revenue went.