The customer does not know the van left, so the van comes back.
Field Service knows the technician is en route the moment the mobile app flips the status. The customer does not. They step out, the technician knocks on an empty house, and the appointment is closed as Cannot Complete. That slot is gone, a second visit is booked, and the second visit costs the same as the first.
The workaround is a phone call from dispatch, which reaches voicemail about half the time and takes two minutes of a dispatcher's morning each. In an org running 60 appointments a day that is two hours of calling to leave messages nobody hears until later.
When the customer does want to move the slot, they call the main line, and the request is written in a note that the scheduler reads after the technician has already driven there.
Keep the process where the record is. The Service Appointment already knows who, when and what status. Let it send the text, and write the reply back onto itself.
Four parts, all standard Salesforce.
No new object and no external scheduler. One dynamic template, one record-triggered flow, one keyword rule and one field on the appointment. An admin who has built a flow before can put it together in an afternoon.
Write the template against the appointment
A dynamic template on ServiceAppointment. Merge fields pull the technician's first name from the assigned ServiceResource, the arrival window from ArrivalWindowStartTime, and the customer's first name from the parent Contact. Nobody types a name a record already holds.
The message ends with the two reply options and the opt-out line. Under 160 characters, so it is one segment.
Fire it when the status changes to En Route
A record-triggered flow on ServiceAppointment, after save, with the entry condition Status is changed and Status equals En Route. It calls the ValueText send action with the template and the appointment Id. Nothing else in the flow.
Add one decision element before the send: if the parent Contact has SMS opt-out checked, or the local time is outside the send window, exit. The consent field is Salesforce's, not ours.
Let a reply of 2 set a field
Inbound messages land as a Message Bucket record and a Task on the Contact. A keyword rule matches a reply of 2 within the appointment's window and sets Reschedule_Requested__c to true on the ServiceAppointment. A reply of 1 sets Customer_Confirmed__c.
That is the whole trick. The customer's intent is now a checkbox on the record that already drives the schedule, so every downstream step is ordinary Salesforce automation.
Route the reschedule to a person
A second flow watches Reschedule_Requested__c. When it flips, it sends the acknowledgement template, posts to the dispatch Chatter group with the appointment link, and creates a Task on the appointment owner due in one hour. The technician's mobile app shows the status change, so they turn around instead of arriving.
The dispatcher who calls back has the whole thread in the activity timeline and does not ask the customer to repeat anything.
Every reply has one destination.
The customer never sees a menu deeper than one digit. Everything that is not a 1 or a 2 goes to a human with the record open.
Four rules the flow checks before it sends.
A report on the appointment, not on the messages.
The two checkboxes and the Task records are all standard fields, so the report is a Service Appointments with Tasks report type and a filter. No export, no message log to join.
Where ValueText fits.
ValueText is the send action and the inbound handler. It installs from AppExchange as a managed package, adds the Send Message invocable action to Flow Builder, and writes every inbound message as a Message Bucket record and a Task on the related Contact. The template editor, keyword rules and the org-level time window live in ValueText Setup. The two checkboxes, the flows and the report are yours, built with standard tools, and they keep working if you swap the number or the carrier.
Professional edition or above · Field Service not required, any object with a status and a phone works the same way · 1 SMS segment per notice at the published per-country rate“Our company was looking for a text application to notify our support team on weekends and holidays. ValueText was by far the simplest and most cost effective application for our needs.”
Renee PierceSalesforce Admin · AppExchange