ServiceM8 runs the van. HubSpot runs the pipeline. Between them sits a person retyping job details into deals, and that person is usually your best office admin.
Field service and sales are the two halves of the same customer, held in two systems that were never designed to meet. The cost isn’t the typing — it’s that the pipeline is always a day or two behind what actually happened on site, so quotes get chased that were already accepted and jobs get scheduled against deals nobody updated.
A job closes in ServiceM8 and the matching HubSpot deal moves stage, with the final value attached. No overnight batch, no morning reconciliation.
Job form responses parsed into named HubSpot properties, so the answers are filterable and reportable rather than buried in a PDF.
Photos taken on site attached to the deal or contact, where the office and the customer-facing team can actually find them.
A quote accepted in the field marks the deal won, triggering whatever HubSpot workflow should follow.
Matching on more than email, so the same person booked twice under different spellings doesn’t become two contacts.
Jobs and leads assigned by postcode or proximity where a business runs more than one depot.
Form responses arrive as arrays. ServiceM8 returns job form answers as nested JSON, not named fields. Before anything can reach HubSpot, the array has to be unpacked and mapped — and on a 58-question form that mapping is the bulk of the work.
Staff are UUIDs, not names. Every record that references a person needs a lookup before it means anything to a human reading a HubSpot deal.
Photos don’t transfer by URL. ServiceM8 attachment fields behave differently from the rest of the API, so moving an image onto a HubSpot record needs a fetch-and-upload step rather than passing a link between systems.
There’s also a HubSpot-side trap: without the right contact-to-deal association settings, notes land on one object and disappear from the other. That one is configuration rather than code, and it catches almost everybody.
Nothing that handles job forms, photos or custom matching. Simple contact syncing is available; the parts that make the integration worth having are custom work.
Usually only partly. Full two-way sync needs a rule about which system wins on conflict, and most businesses are better served by one direction for most objects and a narrow return path for the few that need it.
A focused job-to-deal sync is typically one to two weeks. The wider stack — forms, photos, quotes, routing — grows with the number of form fields and the number of exceptions your process has accumulated.
Yes, and it’s a common next step. I’ve built the same stack extended into Fishbowl and QuickBooks so completed jobs also drive stock and invoicing.
Tell me which parts get retyped. I’ll tell you what it takes to stop.