Service orders and the dispatch board
Raise a job, put it on a technician's day, and walk it from scheduled to invoiced; the customer is told at each step.
Service β Dispatch board, Service orders.
The order. Customer, site, the equipment it concerns, the problem in one line, priority, skills needed and an estimate in minutes. An order under a contract inherits that contract's priority and SLA clock.
The board is a day, one lane per technician, shaded by load. Click an unassigned order, then an hour in a lane, and it is scheduled. A technician without the needed skill, or a day already full, is a warning you can override; a visit that overlaps another on the same person is refused outright. An emergency takes the slot and pushes whatever it displaces later in the day β every moved visit is listed so those customers can be told.
The lifecycle is forward-only: new β scheduled β en route β on site β completed β invoiced. Cancelling is allowed until completed. Each step is on the order's timeline, with who did it.
The customer is told at scheduled, en route ("Your technician is on the way β arriving about 10:40"), on site, completed and cancelled. How is set under Service β Technicians β Service settings β Customer notices: Email (via the company mailbox) (the default), Text (via your Twilio account), Email and text, or Off. A text goes to the site contact's phone, else the customer's mobile, else their phone, and never to a number that has replied STOP β see Text messages (SMS) through your own Twilio account. When no mailbox or no Twilio is connected, or there is no address or number, the timeline says not texted or not emailed and why, rather than pretending.
Planning the day's driving. The Route button on a technician's lane puts that day's visits in the shortest order β see Routing a technician's day and site locations.
SLA. A contract's respond-within and on-site-within hours become due times on the order; arriving after the on-site deadline marks the order breached, and the dashboard counts them.