Project management task records
What this means in HVAC
For an HVAC contractor, a “project” is a system replacement or an install that takes more than one visit: removal one day, the new condenser and air handler another, commissioning a third, sometimes with two technicians on the middle day and a deposit up front. Project management software in this trade is the field service product’s ability to keep those visits under one job, bill in stages, and show whether the job made money once labor and materials are counted. That is T-08 and T-12, run on the three-visit replacement of Ridgeline, our fictional HVAC company.
Visits and stage billing
Both products kept the three visits under one job, and both passed; Jobber’s visits carried their own titles and technicians, ServiceM8’s were three bookings for one technician that we set up through its API. Stage billing is where they part. Jobber’s payment schedule split the job by percentage and generated the first of three invoices. TestedT-08 ServiceM8 issued the deposit as a separate partial invoice through an add-on its directory labels Starter plan, with the amount typed by hand and an item code required. TestedT-08 If you bill replacements as 30/50/20, Jobber does the arithmetic and ServiceM8 leaves it to you.
Did the job make money
Job costing is the difference between a busy shop and a profitable one, and it is the feature most often reserved for higher plans. Both products passed. Jobber showed revenue, labor from a time entry with an hourly cost, expenses and a profit percentage on the job page itself. TestedT-12 Jobber’s pricing table lists job costing on the Grow plan and above; the trial exposed it. TestedT-16 ServiceM8’s Job Costing add-on, labeled Premium plan, costed labor from recorded hours (entered through its API in our test, since time is normally tracked by check-in on the phone) at the rate set during activation and showed an estimated profit on the job, in our case a loss. TestedT-12 In both, the labor rate is something you set up front; neither product knows what your technicians cost until you tell it.
What this means for the plan you buy
We ran these tasks on trials that exposed more than the entry plans (Grow-level features in Jobber, every add-on in ServiceM8), not on the lower plans. According to their pricing pages, checked on the dates shown in each product’s real cost task, the lowest plans advertised to include job costing are Jobber Grow and ServiceM8 Premium. We have not tested those lower plans. The real cost page for each product records the price of those plans at one, three and eight technicians.
- Housecall Pro · Not tested UnverifiedT-08
- Jobber · pass TestedT-08
- Kickserv · Not tested UnverifiedT-08
- ServiceM8 · pass TestedT-08
- ServiceTitan · Not tested UnverifiedT-08
- Workiz · Not tested UnverifiedT-08
- Housecall Pro · Not tested UnverifiedT-12
- Jobber · pass TestedT-12
- Kickserv · Not tested UnverifiedT-12
- ServiceM8 · pass TestedT-12
- ServiceTitan · Not tested UnverifiedT-12
- Workiz · Not tested UnverifiedT-12
What the tasks require
Rubric: Reporting & job costing
- T-08: Multi-stage replacement over 3 visits
Visits sit under one job; progress invoicing or a single invoice works
- T-12: Job costing for the multi-stage job
Labor + materials vs price, visible without spreadsheets
Products and task evidence
Housecall Pro advertises a 14-day free trial, but its terms say the service is offered to users who reside in the US or Canada, and when we signed up on September 28, 2026 the onboarding form did not accept our Spanish phone number. Our lab is in Spain, so we have not run our tasks on it. What this page shows comes from public sources and is marked as documented, not tested.
Housecall Pro: insufficient evidence for these tasks.
Kickserv: insufficient evidence for these tasks.
ServiceTitan: insufficient evidence for these tasks.
Workiz: insufficient evidence for these tasks.
- Price checked
- Not verified
- Last tested
- Last edited
Pinned: Housecall Pro · Jobber · Kickserv. All tasks are shown on desktop; narrow screens start with differences. These selected results are available without JavaScript.
| Task | Housecall Pro | Jobber | Kickserv | ServiceM8 | ServiceTitan | Workiz |
|---|---|---|---|---|---|---|
Three-visit job | Housecall Pro Not tested UnverifiedT-08 | Jobber Pass TestedT-08 | Kickserv Not tested UnverifiedT-08 | ServiceM8 Pass TestedT-08 | ServiceTitan Not tested UnverifiedT-08 | Workiz Not tested UnverifiedT-08 |
Job costing | Housecall Pro Not tested UnverifiedT-12 | Jobber Pass TestedT-12 | Kickserv Not tested UnverifiedT-12 | ServiceM8 Pass TestedT-12 | ServiceTitan Not tested UnverifiedT-12 | Workiz Not tested UnverifiedT-12 |
Profile verdicts
Owner-operator
View this operation profileSmall residential shop
View this operation profileMixed service + projects
View this operation profileCommercial-leaning
View this operation profileRecorded limitations
- Your payer is often not the owner of the service location: in our trial Jobber billed the client that owns the property, so a property manager's unit needed a workaround that either duplicates the location or demotes the tenant to a contact (T-03).
- You track individual units by serial number: Jobber had no equipment record in our trial, and history lives on the property, not the unit (T-04).
- Your customer list already has property managers or landlords: the importer takes one row per property and cannot link the payer, so that structure is rebuilt by hand after import (T-01, T-03).
- You expect the app's search to find a job by its number: in our test it returned the customer and the address, not the job (T-09).
- You want the displaced customer told automatically when an emergency bumps their slot: the reschedule notice is a manual send (T-07).
- You need card payments working on day one: in our trial only cash, check and manual payment records were available, because Jobber Payments was not set up on the account (T-10).
- You are counting on the lowest plan: the features we tested put a contractor on Grow, $199 a month for one person at the time of our check (T-16).
- You need per-unit history right away: the register showed our condenser with its serial, but nothing can be recorded against it until a ServiceM8 QR label is scanned on the unit (T-04).
- You expect the payer and site structure out of the box: as the product comes, billing another address is set per job and every unit address is retyped; the Client Sites add-on support described is untested by us (T-03).
- You expect offline work to sync on its own: in our test nothing uploaded after reconnecting until the app was closed and reopened, so a technician who waits for the sync may not see offline work (T-09).
- You bill replacements as percentages: the deposit is a hand-priced line that needs an item code, not a share of the job (T-08).
- Your customer list has several rows per customer: the importer merged same-name rows without warning and kept only the last address (T-01).
- You want equipment history without labels: each unit needs a ServiceM8 QR label scanned on site before any service can be recorded against it (T-04).
- Your office forces emergencies into full slots: in our run the displaced job dropped out of the day view, with no conflict marker on the board (T-07).
- You want card payments without extra setup: with no gateway active, the phone only recorded a card or cash amount by hand (T-10).
- You work from an Android phone: the full app is iOS, and the Android app is a separate "Lite" version we have not tested (T-16).