Service Technician Scheduling Software for Faster Dispatch

Most shops lose the day between 7am and 9am. The whiteboard says one thing, the shared calendar says another, and two technicians are booked at the same address before anybody notices. Opsler is service technician scheduling software that collapses that into one board: unassigned work on the left, every technician on the right, and one action that puts a job on somebody’s phone.

The dispatcher still decides. The software makes acting on that decision instant, and makes it hard to get silently wrong.

Quick answer

Opsler is technician scheduling software for small field service teams — two people or thirty, in HVAC, plumbing, electrical, appliance repair and the rest. The dispatch board is used by the owner or whoever answers the phone. It schedules and dispatches customer jobs and work orders, one date at a time, to named technicians.

What the board does

  • Queues every unassigned job, ordered by priority then age
  • Shows one row per technician with their day in time order
  • Assigns by drag-and-drop, or one click from a shortlist of available people
  • Checks for a schedule clash on every assignment, server-side
  • Pushes the assignment to the technician's app and refreshes their job list
  • Switches between Day, Week and Map, and filters by team when you have several

What it will not do

  • Choose the technician for you — no AI scheduling, no auto-dispatch
  • Match on a skill matrix, a certification list or a GPS position
  • Re-sequence a day on its own; route optimisation is a Pro action you trigger
  • Hold a job that spans more than one calendar day as a single record
  • Send the customer an SMS — email and the portal link, not text messages

The dispatch board is included on the free Budding plan. Map view, route optimisation and recurring series are Pro.

Scheduling vs dispatch vs route optimization

Field service dispatch software is sold as one product and is really three jobs. They get bundled, they get priced together, and buyers end up paying for automation they switch off in month two because they were short of a different thing entirely. Worth ten seconds to work out which one you actually lack.

Scheduling

Deciding who does the job and when. In Opsler that is the job record's date, its fixed time or flexible all-day window, and the technician on it.

Dispatch

Getting that decision to the person. Assignment pushes to the technician's app and refreshes their job list; the office does not phone to confirm.

Route optimisation

Re-sequencing an already-assigned day to cut driving. A separate, deliberate action on Pro — not something running quietly in the background.

If the driving is the problem rather than the assigning, read the route optimization page instead — the rest of this one is about the first two.

See the day on one live board

The dispatch board is a two-column screen, and that is the whole idea. Nothing is hidden behind a filter you have to remember to clear.

The queue, left

Every job with nobody on it, with a count badge on the header. Each card shows the last six of the job number, the service type, the customer, the priority badge, the time if one is set, and the start of the address. A lock icon means a fixed appointment; a shuffle icon means a flexible window that route optimisation is allowed to move.

The technicians, right

One card per assignable technician: initials, a coloured availability dot, their name, how many jobs they are holding that day, and their specialization as a badge. Assigned work sits in the row as chips in time order, coloured by priority, each showing the time, the service and the customer.

The numbers, on top

Four counts that tell you whether the day is under control: total jobs, assigned, unassigned, and how many technicians are currently available.

The controls

Back a day, forward a day, a button that snaps to today, and a Day / Week / Map toggle. Week runs from the day you are on to the coming Sunday. A team filter appears only if you have more than one team, so single-crew shops never see it.

Fixed appointment — never moved by route optimisation Flexible window — can be re-sequenced

Create and assign jobs/work orders

Field technician scheduling software earns nothing until a job exists, and the job starts before the board. It arrives from a phone call, an online booking, or an estimate the customer just approved. It carries the customer and site address, a service from the pricebook, a date, a fixed time or a flexible all-day window, a duration, a priority of low, medium or high, and a checklist if the service has one attached.

  1. 1Create the job with the customer, service, date and time window. Leave the technician blank if you do not know yet.
  2. 2It lands in the unassigned queue, sorted above lower-priority work and above anything created after it.
  3. 3Assign it: drag the card onto a technician, or use the plus button for a one-click pick.
  4. 4The job status moves to Assigned, that technician's job count updates, and the assignment is written to the activity log.
  5. 5A push notification reaches the technician and their job list refreshes on its own.
See what a work order carries from creation to invoice

Drag, drop, reassign and reschedule

Drag and drop scheduling here is deliberately coarse, and it is worth knowing why before you evaluate it against a screenshot. The drop target is a technician, not a pixel on a timeline. Pick up a card, the target row outlines in violet and says drop to assign, let go, done.

Assign

Drag from the queue onto a technician. The card leaves the queue and appears as a chip in their row, positioned by its scheduled time.

Reassign

Drag a chip from one technician's row to another. The old technician is notified that the job moved and who now has it; the new one gets the assignment push.

Reschedule

Change the date or time on the job record. The board redraws, the technician is pushed the change, and the customer is emailed if the date moved.

Two honest limits. Dropping a card does not change the job’s time — times are set on the job, where the fixed-versus-flexible choice also lives. And there is no drag back to the queue to unassign; that happens on the job record. Both of those are things a demo video can make look otherwise, so check them on your own trial.

Nothing is silently overwritten. Every assignment is logged with the job, the technician and the time, and the technician-side notification history keeps its own record of what landed and when.

Availability and technician status

Most scheduling software for field technicians shows you a calendar and leaves you to infer who is free. Technician availability here is a coloured dot on the avatar, and it is the one signal that changes who Opsler will offer you. Quick Assign only lists people currently marked available — you can still drag a job onto anyone, but the one-click path will not hand work to somebody who is out.

Available

Free to take work. These are the names Quick Assign offers.

On job

Currently working. Visible on the board, not offered by Quick Assign.

Unavailable

Off, on leave, or not taking work today.

A technician’s specialization shows as a badge on their row, so a dispatcher can see at a glance who the gas engineer is. It is information for the human, not a filter the software applies — Opsler will let you assign a job to anyone, because it does not know that today the qualified person is two hours away and the customer asked for someone by name.

See live technician tracking
Technician status shown on the Opsler dispatch board and tracking view
Opsler schedule conflict warning naming the clashing job and technician

Conflict detection

Scheduling conflict detection is not a colour on a calendar here. It runs on the server, on every single assignment, comparing the job you are placing against every other job that technician holds on that date — skipping anything already completed or cancelled, because those are not clashes.

EXACT_TIME

Start and end match the existing job exactly. Treated as critical.

TIME_RANGE

The windows overlap by any amount. Also treated as critical.

SAME_DAY

One of the two jobs has no times, so only the date can be compared. A notice, not an alarm.

When a clash is found, the assignment is allowed through and the technician is notified — the alert names the job being added and the job it collides with, and an exact or overlapping clash is flagged as requiring interaction so it cannot be swiped away on a lock screen. The office dashboard refreshes on the same signal.

Being straight about the shape of this: today the clash is detected and pushed rather than blocked with a modal on the board. Resolution is manual — reassign, or move a time, because a same-day double-booking is sometimes exactly what you meant to do.

Map and route context

The service dispatch map is the third view on the board toggle, and it is a Pro view. Set expectations correctly: it is a map centred on the day’s work with the optimisation control sitting on top of it. It does not drop a numbered pin per stop, it does not show where each technician is right now, and it does not draw the optimised route as a line across the city.

Opsler map view with the route optimisation proposal showing miles and minutes saved

What the optimiser actually does

It splits a technician’s day into fixed appointments and flexible ones, sends the flexible stops to the Google Directions API, and comes back with a proposed order. You need at least two flexible jobs with usable coordinates or it tells you there is nothing to optimise.

You approve it, or you do not

The proposal shows the miles and the minutes it would save, with Cancel next to Save. Decline a re-order that looks efficient and ignores something you know about the customer. Fixed appointments are never moved; only flexible jobs get new times written.

Route optimisation requires Pro ($25 per seat per month). Full detail on the route optimization page.

Urgent jobs, cancellations and changes

No schedule survives a Tuesday. Emergency dispatch in a small shop is not a special module — it is the same board, used faster, four times before lunch.

A no-heat call at 10:40

Create the job at high priority. Priority ordering floats it to the top of the unassigned queue, above the booked filter changes. Hit the plus button on the card and pick from the technicians currently showing as available.

A technician calls in sick

Open each job in their row and reassign it, or drag the chip onto another technician's card. The previous technician is notified that the job moved, and told who has it now — so nobody drives to a job that is no longer theirs.

The customer moves to Thursday

Change the date on the job. The customer is emailed the old date and the new one, and the assigned technician is pushed the change. If the technician is the one rescheduling from the field, they pick a reason code as they do it.

A job runs long

The board will not resequence the rest of the day for you. What it gives you is a live view of who is still On Site and who is already available, so the reshuffle takes one drag rather than four calls.

One note on priority, because competitor pages inflate this. A job is set to low, medium or high. There is no separate emergency tier to configure; high is the top, and high work sorts to the head of the unassigned queue with older jobs ahead of newer ones at the same level.

Recurring and multi-day work

Recurring scheduling (Pro)

A maintenance series repeats daily, weekly, monthly or yearly with an interval — every two weeks, every third month — on chosen weekdays or a set day of the month. It ends never, after a number of visits, or on a date, and can be paused and resumed without being rebuilt.

Each occurrence is stamped from a template holding the technician, the start and end time, the duration, the priority, the service and its checklist, and the labor and parts charges. Visits appear on the dispatch board as ordinary jobs, and generation is idempotent — a date that already has its visit will not get a second one.

See recurring maintenance contracts

Multi-day work: not one record

A job carries one scheduled date with a start and an end time. There is no job that spans Monday to Wednesday. A three-day changeout is booked as three jobs against the same customer, which keeps each day’s labor, parts and proof attached to the day it happened — but it is not what a project-scheduling tool would give you, and if you run week-long installs you should weigh that seriously.

Technician mobile/offline loop

Offline field service scheduling is the half of dispatch that quietly decides whether the board is telling you the truth. A technician in a plant room with no bars still has to be able to work, or the office is guessing again by 11am.

  • Their Today page lists the day's jobs with address, customer, service and dispatch notes
  • Assignments and reassignments arrive as a push and refresh the list without a manual pull
  • Sync for Offline caches today's jobs, the parts and service catalogs, tax settings, their van and its stock
  • With no signal they can still go On My Way, mark Arrived, pause with a reason, resume and complete
  • Queued actions replay when the connection returns, in the order they happened

The app installs from a supported browser on Android, iPhone, laptop or desktop. There is no App Store or Google Play download to chase.

See the offline technician workflow
Opsler technician app showing today's assigned jobs and status actions

Customer ETA and notifications

The customer ETA comes from the technician, not from an algorithm guessing traffic. When they tap On My Way, a short prompt appears pre-filled with thirty minutes from now — they adjust it, or skip it. That single number is what the customer sees, which is why it is usually right.

The on-my-way email

Sent to the customer's email on file, naming the technician and carrying the ETA. A second email goes out when they arrive.

The no-login portal link

Status banner reading scheduled, on the way, arrived, in progress or completed, plus the date, the time window, the address and the ETA while the visit is live.

Live tracking while en route

Going On My Way generates a private tracking link, and a Track Live Location button appears on the customer's portal page for that visit.

Rescheduled dates are emailed

If the date moves, the customer gets the old date and the new one. Assignment itself is not emailed to the customer — that is internal.

Opsler customer portal showing job status and technician ETA without a login

Every customer update runs on email and that portal link, at no per-message cost — which for a shop doing forty visits a week is a line item that simply never appears on your bill. Text messaging is on the roadmap as a bring-your-own-provider option, so when it lands you will keep your own carrier rate rather than pay a per-message markup on top of a subscription. See the customer portal.

Reporting, limitations and FAQs

What you can measure

  • The four board counts for any date: total, assigned, unassigned, technicians available
  • An activity log entry for every assignment, naming the job and the technician
  • Job status history — when a job was assigned, started, paused and completed
  • Technician efficiency on Pro: hours, jobs completed, revenue, labor cost, average hours per job and revenue per hour

Decisions that stay yours

  • Who takes the call — no AI or suggested dispatch overriding the person who knows the crew
  • Who is qualified — no skill matrix to build and maintain before you can assign anybody
  • When a day is resequenced — route optimisation runs on Pro, when you ask for it
  • Vehicle and specialist-equipment allocation, on your own rules
  • How a conflict is resolved — Opsler tells you it exists and gets out of the way

Free — Budding

2 seats (1 admin + 1 technician), 50 jobs a month, dispatch board included

Pro

$25 per seat per month, no seat minimum

Trial

14 days, no credit card

Scheduling FAQs

It puts the day in front of one person. Work that has not been given to anybody sits in a queue on the left; every technician has a row on the right holding the jobs already booked to them, in time order. The dispatcher moves a job from the queue to a person, and that assignment reaches the technician's phone without a phone call. Everything else — status, conflicts, ETAs — hangs off that one action.

Every assignment triggers a check against every job that technician already holds on that date, ignoring anything completed or cancelled. Three grades come back: EXACT_TIME when start and end match exactly, TIME_RANGE when the windows overlap at all, and SAME_DAY when one of the jobs has no times set so only the date can be compared. Exact and overlapping clashes are treated as critical and the technician is notified with the clashing job named; same-day is a notice.

No, and that is a design decision rather than a gap we are working around. There is no AI scheduling, no auto-dispatch, no skill matrix and no GPS-based assignment. Your dispatcher knows who holds the licence, who the customer asked for by name and who is already having a bad afternoon — none of which is in the data. Opsler shows availability and specialization on the board and leaves the choice with the person making it.

Dragging assigns the job to a technician; it does not set the clock. Start and end times live on the job record, which is also where a fixed appointment or a flexible all-day window is chosen. If you drag a job into a row it keeps the time it already had, and the row re-sorts chronologically. Change the time on the job, not by aiming a card at a pixel.

Assigning or reassigning a job sends a push notification to that technician and broadcasts an update that refreshes their job list — no pull-to-refresh, no confirmation call. Losing signal afterwards does not lock them out: today's jobs, the parts and service catalogs, tax settings and their van stock are cached on the device, and status changes queue and replay on reconnection.

No. Map view is a Pro view and it is deliberately modest: a map centred on the day's work with the route-optimisation control on top of it. It does not plot each job as a numbered pin, it does not show live technician positions, and it does not draw the optimised route as a line. If you want live location, that is the technician tracking feature and the customer's tracking link, not this screen.

Not as one record. A job carries a single scheduled date with a start and end time, so a three-day install is booked as three jobs. Recurring work is different and is properly supported on Pro — a series repeats on an interval and generates each visit onto the board on schedule.

Not by text today — by email and a no-login portal link, which costs you nothing per message and needs nothing installed at the customer's end. They get an email when the technician marks On My Way carrying their name and an ETA, another when they arrive, and another if the date moves. No messaging plan to buy and no allowance to run out of mid-week. Text messaging is on the roadmap as a bring-your-own-provider option, so when it arrives you will connect your own carrier account and pay the message rate directly rather than a markup.

View as plain text

Ready to Run Your Business Without the Chaos?

Scheduling, dispatch, estimates, invoicing, customer portal, and a free branded website — start completely free, upgrade to Pro when you scale.

Free forever on the Budding plan. No credit card required.

Explore all 42 features·See full pricing