Skip to content
Work orders & dispatch

Dispatch that keeps
its own clock.

A drag-and-drop technician board, a status kanban over the same jobs, and an SLA deadline written by a database trigger the moment the work is accepted. When the job stalls for a reason you do not control, the clock stops.

  • Emergency SLA 4 hours
  • Status states 8
  • Suspension reasons 7
  • Status history Append-only

The schedule board — technician × time

Drag a job to a technician and a time. Overlaps are caught as you drop them. Anything unscheduled waits in the holding column.

DISPATCH · TUE 11 MAR
Schedule Status
Live · 10 jobs
7a 8a 9a 10a 11a 12p 1p 2p 3p 4p
RA R. Alvarez Lead
WOID-4463 Nozzle swap · Pump 2
SLA met
WOID-4479 Sump sensor alarm
At risk · 0h 46m
DW D. Whitmore
WOID-4471 Dispenser 3 — no flow
On site · 2h 41m
WOID-4488 Card reader fault
Assigned · 71h
MO M. Okafor
WOID-4482 STP replacement
Suspended · clock paused
TN T. Nguyen
WOID-4490 Canopy light out
Assigned · 68h
WOID-4493 Vapor line test
Assigned

Outside office window Suspended · clock paused

Unscheduled · 3

  • WOID-4496 Leak detector fail Emergency
  • WOID-4497 Air machine down Standard
  • WOID-4499 Hose retract worn Priority

Drag into the grid to schedule. Jobs whose SLA has expired can be given back from here.

SLA engine

The deadline is computed by the database, not remembered by a person.

When a work order is accepted, a Postgres trigger stamps the deadline from the accepted timestamp plus the window for that urgency. Nobody types it in, and it cannot be quietly moved.

Urgency

Emergency

4 hours

Fuel spill, leak alarm, a site that cannot sell. Locations opt in to 24/7 emergency dispatch per location, so the clock only runs where the site has agreed to take the call at 2am.

Urgency

Priority

8 hours

Revenue is degraded but the site is trading. One dispenser down, a card reader out, a canopy light on a busy corner.

Urgency

Standard

72 hours

Planned and preventive work. Three full days, measured from acceptance.

Derived, never typed

Five SLA states, all read off the clock

No one sets an SLA status by hand. The platform derives it from the stamped deadline, the accrued time and the outcome — so a job cannot be marked on track while it is quietly running late.

  • On track
  • At risk
  • Breached
  • Met
  • Missed
At-risk threshold

It flips at 25% remaining

Not at the deadline. With a quarter of the window left, the card turns amber on both boards while there is still time to move a truck.

Accepted 75% elapsed → at risk Due
Suspension

The clock stops when the job stops.

Parts are on back order. The store manager never showed. There is a live safety hazard on the forecourt. None of that is the contractor’s fault, and none of it should burn an SLA — so it does not. Suspend the job and the clock stops accruing until someone resumes it.

Suspension is a parallel state, not a status. The work order keeps whatever step it had reached. A banner goes up on both the contractor and the location side, emails go out, and the reason lands in the audit trail with the job.

Priority job · 8h window

2h 43m
Paused
1h 36m
3h 41m left
Accepted 08:12 19h 04m of wall clock not counted Still on track
Paused

Seven reasons

Every suspension picks one. Other requires a written note.

  • Parts on order
  • Customer unavailable
  • Weather
  • Awaiting approval
  • Safety hazard
  • Scheduling conflict
  • Other — note required
Two views, one truth

Same jobs. Same route. Two ways to move them.

Dispatchers think in time. Coordinators think in stages. Both views sit on one route over one set of work orders, so a card dragged in one is already moved in the other.

Schedule

A technician × time grid you drag jobs onto. Your office working window is shaded so a 6am job cannot be booked by accident, and overlapping assignments are flagged at the moment of the drop rather than at 7am the next morning.

  • Drag and drop across technicians and hours
  • Office working-window shading
  • Overlap detection on drop
  • Holding area for everything unscheduled
  • Give-back flow for jobs whose SLA has expired

Status

A kanban over the same jobs. Drag a card into the next column and the transition is applied, validated and written to the ledger.

Unass.

Assign.

En rte

On site

Drag to transition

Both boards update live

A technician taps arrived on a phone in a forecourt and the card moves on the dispatcher’s screen. No refresh, no polling by hand, no calling the truck to ask.

Realtime subscriptions Push to MS Field Tech Email to the location
Status model

Eight states — and one of them is not a status at all.

Six states on the main line, two off it, and suspension running alongside. Every transition is validated by role and written to an append-only ledger.

  1. 01 Unassigned Accepted. No technician yet.
  2. 02 Assigned Crew named, acknowledgement pending.
  3. 03 En Route GPS pings start. ETA emails fire.
  4. 04 On Site Arrival stamped and geotagged.
  5. 05 Complete Completion photos required.
  6. 06 Closed Terminal. Invoiceable.
Suspended

A parallel state that can attach at Assigned, En Route or On Site. The status underneath does not change — the SLA clock simply stops until the job is resumed.

Revisions Requested

Raised by the location, not the contractor, and a note is mandatory — they have to say what is wrong. The job comes back to the crew with the complaint attached to the record.

Canceled

Terminal, reasoned and kept. A canceled work order is never removed from the record.

Post-arrival reschedule

The tech got there and it still cannot be done today

Rescheduling after arrival is a different event from rescheduling before it, so it carries its own reason set. The original visit stays in the history rather than being overwritten.

  • Parts on order
  • Safety hazard
  • Additional scope discovered
  • Special equipment required
  • Permit needed
  • Other
Cancellation

Six reasons, and the record survives

Cancellations are categorized so you can count them later — how much work you lose to pricing, and how much to sites you could not get into.

  • Customer request
  • Site inaccessible
  • Scope mismatch
  • Pricing concern
  • Scheduling conflict
  • Other
On every work order

The details that decide whether the job goes smoothly

Dispatch is the easy half. What follows — who acknowledged, what rate applied, which photos exist, what was said and when — is where jobs actually go wrong.

Crews, not just names

Assign as many technicians to a work order as the job needs, flag one as lead, and track acknowledgement per technician. You can see who has read the dispatch and who has not before the truck rolls.

  • Multi-technician assignment
  • Lead tech flag
  • Per-technician acknowledgement

Rates freeze at creation

Standard, priority and emergency labor rates are snapshotted onto the work order the moment it is created. Change your rate card next quarter and last quarter stays exactly as it was billed.

  • Three rates captured per job
  • Rate edits never rewrite history

Photos with rules

Four categories, each enforced at a specific point: initial assessment by the location before dispatch, additional damage, work in progress, and completion proof by the contractor before close.

  • Geotagged
  • Reverse-geocoded to City, ST
  • Upload gates on transitions

One thread, two sides

Every work order carries a cross-side chat between the location and the contractor. Notes are separate and carry their own visibility — an internal scratchpad your crew can be blunt in, or a note shared with the site.

  • Cross-side chat
  • Per-note visibility
  • Contractor-only internal notes

Time entries

Start and stop against a work order or a project labor order. Edits inside the grace window are allowed and audited; after it, they are recorded as corrections.

  • Grace-window edit audit

Calendar and ICS feed

Day, week and list views in the app, plus a revocable webcal:// subscription feed that drops your schedule into Google, Outlook or Apple Calendar.

  • Revocable feed token

ETA emails that behave

En route, ETA updated and arrived notices, driven by technician GPS pings and Google Routes drive time — with hysteresis so a slow left turn does not send four emails.

  • Google Routes drive time
MS Field Tech

The technician does not need the whole platform.

MS Field Tech is a native iOS and Android app scoped to the technician role. It shows the jobs assigned to that person and the actions that move them — nothing else, nothing to get lost in on a wet forecourt.

  • Work order list and full detail
  • Status transitions and acknowledgement
  • Arrived, suspend and resume
  • Notes and photo upload from the camera
  • Time entries against the job
  • Push notifications on dispatch

Role-tailored landings elsewhere too. Technicians land on My Work, accounting lands on Invoicing, sales lands on the Pipeline. Route access is a server-enforced default-deny allowlist, not a hidden menu item.

9:41 LTE

My Work

3 assigned today

WOID-4471 2h 41m

Dispenser 3 — no flow

Madison Rd #4118 · Cincinnati, OH

Arrived Suspend
  • Add photos 4
  • Time entry Running
  • Notes & chat 2
Audit & integrity

History you can hand to a lawyer.

Disputes over field work are almost always disputes about a timeline. ManageSync keeps one that cannot be edited after the fact.

Append-only status ledger

Every status event is inserted and never touched again. No updates, no deletes — the table only grows. If a job says it was on site at 10:06, that claim is still there next year exactly as it was written.

08:12:04 status.assigned M. Reyes · dispatcher
09:41:18 status.en_route D. Whitmore · MS Field Tech
10:06:52 status.on_site D. Whitmore · MS Field Tech
10:58:33 suspension.opened reason: parts_on_order
14:20:07 suspension.resumed M. Reyes · dispatcher
16:02:44 status.complete D. Whitmore · 6 photos

Insert only · no UPDATE · no DELETE

Status Correction

A dispatcher-only backward step for when a prior state did not really happen — someone tapped en route from the yard. It rewrites the affected timestamps and is fully audited, so the correction is itself part of the record.

Boards clear. Records do not.

Terminal cards age off the schedule and status boards after 14 days so dispatchers see this week, not last quarter. The work orders stay in search, reports and history — archived, never deleted.

WOID-1001

One sequence, globally

Work order IDs are drawn from a single global sequence, not per-account counters. When a location and a contractor talk about WOID-4471 on the phone, they are talking about the same row.

Questions

Straight answers

Can I set my own SLA windows?

The urgency tiers ship with 4 hours for Emergency, 8 hours for Priority and 72 hours for Standard, and 24/7 emergency dispatch is an opt-in per location. The deadline itself is not typed by hand — a database trigger computes it from the accepted timestamp plus the window for that urgency, so it is identical on every work order and cannot be quietly edited.

What happens when a technician cannot get on site?

Suspend the job. Pick one of seven reasons — parts on order, customer unavailable, weather, awaiting approval, safety hazard, scheduling conflict, or other with a required note. A banner goes up on both the contractor and the location side, notification emails go out, the reason is written to the audit trail, and the SLA clock stops accruing until someone resumes it. Suspension is a parallel state, so the work order keeps whatever status it already had.

Does the location see everything?

They see the status timeline, the photos, the shared notes and the chat thread. They do not see notes marked contractor-only, which is the point of having two visibilities. The location can also raise Revisions Requested on work they are not happy with, which requires a note explaining what is wrong.

Is there a mobile app, and does it work with bad signal?

MS Field Tech is a native iOS and Android app for the technician role: work order list and detail, status transitions, acknowledge, arrived, suspend and resume, notes, photo upload, time entries and push notifications. It needs a connection to sync a transition, so on a dead cell site the technician records the work and it posts when signal returns.

How do multi-technician jobs work?

Assign a crew to the work order and flag one technician as lead. Acknowledgement is tracked per technician, so a dispatcher can see exactly who has picked up the dispatch. Time entries are recorded per technician against the same job.

What if a status was set by mistake?

A dispatcher can apply a Status Correction, which is a deliberate backward step for when a prior state did not actually happen. It rewrites the affected timestamps and is fully audited — the correction itself becomes an entry in the append-only status event ledger, so the original claim and the correction both survive.

Do completed jobs clutter the board forever?

No. Terminal cards age off the schedule and status boards after 14 days. Nothing is deleted — they stay in search, reports and the full work order history.

Get started

Watch a job move across the board

Come with a day of your own dispatch load. We run a work order from unassigned to closed, suspend it halfway, and you watch exactly what the SLA clock does with the paused time.