Some installs and big projects span more than one day. Run a Call models them as a single job with multiple appointments — one appointment per day on the schedule.

How it works

A job has an is_multi_day flag and a total_days count. The job's appointments array holds one entry per scheduled day, each with its own scheduled_date, scheduled_start, scheduled_end, and assignments (the tech or crew working that day).

The dispatch board shows each appointment as its own block, but click any of them and you open the same parent job.

Scheduling a multi-day job

  1. Create the job the normal way (customer, property, scope, line items).
  2. Set the estimated duration to span more than one day (e.g. 3 days).
  3. Schedule the first day on the dispatch board.
  4. Run a Call prompts: "This job spans multiple days — schedule the others?"
  5. Pick dates and crew for each day.

The job's appointments array is built; each appointment gets a sequence (0, 1, 2, …) so you can tell which day is which.

Crew composition per day

Each appointment has its own assignments list. You can:

PatternWhen it fits
Same crew across all daysMost common.
Vary crews per dayE.g. a helper joins only on installation day 2.
Change roles per dayLead on day 1 might be Helper on day 2.

Reassigning a day

Open the appointment in the dispatch board → reassign just that day. The other days stay intact.

Cancelling mid-project

OptionWhat happens
Cancel the whole jobAll appointments cancel.
Cancel one dayOpen the appointment and mark it cancelled. The rest of the project continues. The job's total billable hours decrease but the parent stays alive.

Reporting

Multi-day jobs roll up to the parent for revenue and margin reporting — you see the total cost across the project, not per day. For labor reporting, each day's appointment counts separately so techs get credit for the hours they actually worked.