CRM for HVAC task records

What this means in HVAC

“CRM” means three different things when HVAC contractors search for it: the customer list with service addresses that every field service product has, a sales pipeline for leads and follow-ups, or the whole platform. On this page it means the customer model: whether the product can hold one payer with several service locations, and whether the history of a call lives on the piece of equipment that was serviced. Those are tasks T-03 and T-04, run with the property manager of Ridgeline, our fictional HVAC company (Cedar Lane Properties, which pays for six rental units at different addresses; T-03 bills one of them) and one rooftop unit.

One payer, several locations

Neither product we tested models a payer with a list of sites out of the box; each gets there by a different route. In our trial Jobber had no “bill another client” relationship: an invoice billed the client that owns the property. The workaround, making the tenant a property contact of the payer, billed Cedar Lane correctly but left the location recorded twice. TestedT-03 ServiceM8 handles the split per job: each job has its own job address and billing address, so the manager can be billed for work at a unit, but there is no reusable list of sites under one payer and every unit address has to be retyped. The invoice draft for job #2 went to Cedar Lane’s billing contact with the unit address in the subject line. TestedT-03 When we put the same scenario to ServiceM8 support, the written answer was a free Client Sites add-on: the manager as head-office client, each unit as a site, jobs on the site and invoices on the head office’s billing details. TestedT-15 We have not run T-03 with that add-on, so the result above stands for the product as it comes.

Equipment history

Jobber had no equipment or asset record in our trial. History is visible per property, not per unit, and a rooftop unit can only be tracked by naming it in job titles or custom fields. Jobber’s marketplace points to third-party add-ons for asset history. TestedT-04 ServiceM8 has an Asset Management add-on, labeled for the Growing plan, with asset types and custom fields such as serial and model. We imported one condenser on the web with its type, serial and model. TestedT-04 On the phone the asset was listed under the customer, but its history was empty: recording an inspection or service against a unit requires scanning a ServiceM8 QR label fixed to it, and without the label no per-unit history could be built. TestedT-04 Budget for labels and a visit to each site before the register is worth anything.

Pitfalls we hit

Neither CSV importer can express a parent and child customer. Jobber does import several properties per client (25 clients, 30 properties from our file) but could not link the payer; ServiceM8 merged rows that shared a customer name without warning and kept only the last address. If your customer list has property managers or landlords, plan the import by hand and check the count of locations, not only the count of customers.

This dimension carries the highest weight in the commercial profile and the lowest in the solo profile.

Commercial customerSeparate payerRooftop unitService historyNext visitT-03 · 3 sitesT-03 · payerT-04 · equipmentT-04 · historyT-04 · next

What the tasks require

Rubric: Customer / location / payer / equipment

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 results for the pinned products. Missing results mean insufficient evidence.
TaskHousecall ProJobberKickserv
T-03
Multi-site customer
Housecall Pro

Not tested

UnverifiedT-03
Jobber

Partial

TestedT-03

Kickserv

Not tested

UnverifiedT-03
T-04
Equipment history
Housecall Pro

Not tested

UnverifiedT-04
Jobber

Not possible

TestedT-04

Kickserv

Not tested

UnverifiedT-04

Profile verdicts

Owner-operator

View this operation profile

Small residential shop

View this operation profile

Mixed service + projects

View this operation profile

Commercial-leaning

View this operation profile

Recorded 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).

Related tool

Demo scorecard