π New Features
Service Profiles
Organizations can now create and manage Service Profiles β customizable sets of data fields that can be attached to jobs and recurring jobs to capture structured information from technicians in the field.
Each Service Profile is made up of a set of fields that you define, including dropdowns, text inputs, number fields, ranges, and radio buttons. When a Service Profile is linked to a job, technicians are presented with those fields, and their responses are recorded as Job Readings, providing consistent, validated data across every visit.
This is particularly useful for organizations that need to capture specific readings or checklist items as part of a service, for example, chemical levels, equipment checks, or condition assessments β without relying on free-text notes.
Service Profiles work seamlessly with recurring jobs, meaning the same structured data collection applies automatically across an entire job series. They are also supported alongside Store Locations, so different branches can operate with their own relevant profiles.
Improvements to existing features
Store Location Reply-To Email Control
Admins can now control which email address is used as the reply-to on client-facing documents sent from a Store Location.
A new toggle has been added to the Store Location settings page:
Toggle on β the Store Location's own email address is used as the reply-to on all outbound Quotes, Invoices, Batch Invoices, and Water Test emails sent for that location. This is the existing behavior and remains the default.
Toggle off β the reply-to falls back to whatever is configured in General Settings for each document type.
This gives multi-store businesses the flexibility to centralize all client replies to a shared inbox, while still having store-specific branding on outbound emails.
Pinned Jobs in Route Optimization
Route Optimization now supports pinned jobs β giving you control over which jobs stay fixed in place when running an optimized route.
Previously, running route optimization would reschedule all of a technician's jobs for the day. Now you can pin one or more jobs before running the optimization, and those jobs will remain in their original time slots. The algorithm then reorders and reschedules all unpinned jobs around the pinned ones to find the most efficient route.
When you apply the optimized route, pinned jobs keep their original times and only unpinned jobs are updated. Both the current and optimized route views clearly distinguish between pinned and free jobs, so you always know what will and won't move.
Bug fixes
Batch Invoice Sync β Actionable Error Message on Failure
When a batch invoice fails to sync to an external accounting system, and the user clicks the Not Synced button to investigate, they are previously shown a generic "Something went wrong" message with no further details.
This has been fixed. The error message now surfaces the actual reason the sync failed β for example, if an invoice item product has not been mapped to the external system β and provides clear guidance on what needs to be resolved before retrying.
Route Optimization β Error When Job Has a Follow-Up on the Same Day
An error occurred when running route optimization for a day when a technician had a follow-up job scheduled. This has been resolved, and optimization now runs correctly in this scenario.
Recurrence Deletion Flow
An issue with the recurrence deletion flow has been resolved. Recurrences can now be deleted reliably without encountering unexpected errors or inconsistent behavior.
