A Brand New Way to Schedule: Flexible Visits, Bulk Rescheduling, and More
We’ve completely overhauled our scheduling to make it more flexible for every type of business. Instead of tying rigid start and end dates to a "Job," you now schedule individual "Visits." Total Flexibility: Easily handle recurring daily work (like 20 quick stops a day) or break up massive multi-day projects visit-by-visit. Better Calendar: A new drag-and-drop weekly schedule makes it easy to assign open jobs or move visits around on the fly. Mass Rescheduling: Rain delay or schedule shift? You can now bulk-reschedule visits forward or backward in just a few clicks. Smoother Workflow: The Job Workspace now features automatic saving, a faster creation process, and simpler crew management. Ultimately, this update gives you precise, day-to-day control over your schedule and lays the exact groundwork needed for multiple daily routes and route-saving features coming soon.
New features
- Visits — Field work is organized as visits (each service day). The schedule shows visits on the week grid. Jobs no longer have their own start/end calendar or job-level start/end times—only visits carry dates and optional visit times. From the Job workspace, each visit has an adjust control (always available on each row). Bulk adjust next to Select all appears only when at least one visit is selected.
Bug fixes
- One-time visits — Generate — Generate visit(s) adds another visit on your one-time date even when a visit is already scheduled that day (e.g. a second stop).
- Job workspace — After closing Invoice or Expenses (or other overlays), the page scrolls normally again on the full-page job workspace.
- Recurring visits — Generate visit(s) uses your end date (“until”) and the usual horizon, not only the latest visit already on file, so weekly/monthly patterns can add the next dates after an existing visit. The pattern start date and your earliest visit are both respected when building the list (e.g. Mondays from 3/30 through until), past “today” on the server is not dropped, and Pattern starts defaults from the saved anchor, else your earliest visit, so one-off visits don’t shrink the series to only later weeks. Day-of-week chips (Mon–Sun) are no longer reset to weekdays-only when you click Generate; the section only builds those chips once, then keeps what you chose (and reloads from the saved pattern after generating).
- One-time visits — Generating or adding visits respects the dates you set (including when there was no old “job span”). If Generate adds no new visits, the message points you to your visit list and recurrence settings instead of job-level dates.
- Job workspace — Crew search dropdowns and anchored menus stay usable; property and assignee validation behave as before. SMS reminders for “day before” and “hour before” use each visit’s start time when set, not removed job-level schedule fields. Reschedule / move visits (bulk shift by days) updates visits in a safe order. Generate visit(s) can add a visit on a day that already has a visit (e.g. a second stop the same day).
Improvements
- Jobs list — Select jobs with Select all or individual checkboxes. The blue options control (same style as visit bulk on the job workspace) appears when at least one job is selected: set status and priority, add crew to each job without removing existing assignees, or reschedule all visits on those jobs by a number of days earlier or later.
- Visits — A job can have more than one visit on the same calendar day (separate rows in the visit list and on the schedule). Generate visit(s) no longer skips a date only because another visit is already that day.
- Schedule — The week view is one column per day: all visits for that day stack in the column (no separate rows per person or role). Dragging a visit to another day moves that whole visit to the new date. Cards show the job name first and the visit title underneath when it differs. Jobs to schedule is a single list: jobs with no open visits (including jobs where every visit is already Completed), oldest first. Drag from the list onto a day to add a visit (you can add another visit for the same job on a day that already has one). Drag a scheduled visit back into the panel to remove open visits from the calendar (you’ll be asked to confirm if that would delete more than one open visit; Completed visits are never removed that way). Completed stops look faded, can’t be dragged on the grid, but you can still open quick look and delete a visit if needed. Quick look shows this visit’s date, lets you change visit status right there, lists everyone on the job’s default crew, and includes Delete visit (per-visit crew is still edited on the job).
- New jobs — You can start with a description (and optional title); pick customer and other details after the job exists. No dates are required when creating a job.
- Toasts — Cleaner success copy when visit generation adds nothing new.
- Job workspace — visits — Unselect all appears when you have visits checked. Bulk adjust opens with a short animation and matches the height of Select all. Saving, deleting, bulk apply, bulk delete, moving visit dates, and generating visits show clearer loading feedback on the buttons.
- Visit crew — Crew for a visit is listed below the other visit fields: everyone stored on that visit shows as chips you can remove with ×, and you can search to add people or roles (the list appears under that visit’s field). Default crew on the job is copied only when a new visit is created—empty visits stay empty; the job default is not shown as extra people on the visit. New visits from Generate (and similar) still get that starting copy so you can adjust per visit.
- Budgeted hours — Budgeted hours are required when you save a visit and before Generate visit(s) (recurrence).
- Visit status — Visits can be marked En Route (in addition to pending, completed, and skipped).
- Text reminders (job) — On the job workspace, toggles are only En route and Job complete (other timing is still driven by your org workflow where applicable).
- Add visits / recurrence — Keep generating and the load preview chart are removed. Pause during off-season sits under “last visit on” and “after this many visits.”
- New job workspace — Creating a job starts on a short screen: Job details and Status & team only (no schedule, visits, costs, or finance blocks). Create job saves and opens the full job workspace to add visits and the rest. Delete job does not appear until you are on that full workspace.
- Bulk visit crew — Adding crew in bulk adds that person or role alongside who was already on each visit, instead of replacing everyone with a single assignee.
- Job workspace — saving — Job details, Status & team (including default crew chips), visit adjust panels, and job cost line edits save automatically after you pause typing (you can still use Save on a visit or cost line when you want). A small Auto-saved notice appears in the corner when an automatic save finishes, similar to estimates.
- Job workspace — visits — When a saved job has no visits yet, the visits table still shows column headers and a clear no visits message. After auto-save, the All changes saved note on a visit appears below Save and Delete visit.
- Job workspace — If you have unsaved edits, Back asks whether to save everything, leave without saving, or keep editing (same idea as the CRM property screen). Refreshing or closing the tab still triggers the usual browser warning.
- Jobs list & workspace — Edit, New job, Invoice, and Expenses show loading state while the next screen or data is loading.
- Finance on jobs — Milestones is removed from the job workspace; use Invoice and your usual billing flow.