Setup: Build Your Routes (1:17 video). Open on its own page
Routes in Pool Founder
A route is a technician's schedule of jobs for a specific day of the week. You build routes in two places: the Route Builder, a drag-and-drop board for assigning many jobs across days and technicians at once, and the Route Schedule, where individual routes are created and managed day by day.
Route optimization is based on location and drive time, and jobs can be scheduled anywhere from weekly to annually — including multiple visits per week for pools that need them.
The Route Builder

- 1Open the Route Builder. The board is a left panel with two tabs — Unassigned and Routes — and a map filling the rest of the screen. On a phone or a narrow window there is no room for both side by side, so a Board / Map switch appears under the header and each one takes the full screen; the builder remembers which you were last on.
- 2Drag a job from the Unassigned tab onto a day slot — the panel flips to the Routes tab automatically while you drag, then flips back when you drop — or click Auto-Assign to place everything at once.
- 3Don't want to pick the exact spot? While you drag, every technician name and every day header turns into a Best fit target. Drop on a day header and the stop slides into the cheapest position in that day; drop on a technician's name and the builder picks the day and the position for you — preferred days win first, then the day that adds the least driving, and days that would run past the technician's workday are pushed down the list. The drag label previews the result, for example Best fit: Thu · after Smith.
- 4Made a mistake? Every assign, move, and removal raises a toast naming what changed, with an Undo button. Undo is one level deep — it always reverses the most recent change.
- 5To take a stop back off a route, drag it onto the Drop here to remove from route strip at the bottom of the panel (or onto the Unassigned tab), or click the × on the card.
- 6To send a stop that is already on a route to a different technician or day without dragging, click Move on its card in the Routes tab (or Move… on its pin on the map). The same technician + day picker opens, with the slot it is leaving greyed out. This moves the one stop; it doesn't change the job's schedule.
- 7To place several stops at once, tick the checkboxes on the unassigned cards (hold Shift to select a range, or use Select all visible), then click Assign N jobs… and pick one technician + day.
- 8To move several stops that are already on routes, open the Routes tab and tick the checkbox on each stop card (the checkbox on a day's header ticks every stop on that day), or lasso them on the map. Then click Move N stops… and pick one technician + day. They move from now on, each keeping its schedule (every other week, monthly and so on), and the day they all came from is greyed out in the picker. One Undo puts every stop back where it was.
- 9To get rid of jobs you no longer need, tick them (unassigned cards, stops on the Routes tab, or a lasso on the map) and click Archive next to the Assign/Move button. After you confirm, each job comes off every route it is on and leaves the Jobs page. A job with an open or draft invoice can't be archived. Archive is the only way to remove a job here: there is no permanent delete. Restore one from the Jobs page with Show archived, then put it back on a route. Needs the Delete jobs permission.
- 10Use Rebalance to even out workload and driving. It asks what to rebalance. Some techs and days (the default) reshuffles only the stops already on the technicians and days you tick, among those same technicians and days: every other route stays exactly as it is, and a stop that can't go anywhere in that choice (say it asks for a technician you didn't tick) stays where it is. Use it when one technician's week is lopsided. Every route redistributes every weekly, biweekly, and monthly job across all technicians' routes, for big crew changes like a technician joining or leaving. Both respect preferred technician and day, and suspended and quarterly or annual jobs are never moved. See also transfer and move jobs.
- 11Auto-Assign and Rebalance both stop at a preview before anything is saved. Review it, then click Apply to commit or Cancel to walk away with nothing changed.
- 12Each day slot has an Optimize button that orders that day's stops with Google Maps, and Optimize All in the header runs every route that needs it in one go. On a narrow screen the header keeps Auto-Assign and moves History, Rebalance, and Optimize All into the ⋯ menu beside it.
The Route Builder never changes a route a technician has already started today. Their phone keeps today's stops exactly as they were, and your changes take over from each route's next run. A stop you move off a running route stays on it for today. A stop you put on a route that is already running, or one that is still out on another technician's running route, starts on its next visit instead of being added today. So you can build next week's routes while the crew is out. To change what a technician does today, use the route page or the Transfer stops page instead (see transfer and move jobs).
Repair days. A technician who works a day for repairs instead of a route (say Adolfo runs Monday to Thursday and does repairs on Friday) keeps that day on their Work Schedule and marks it as a repair day: open their employee page → Work Schedule → Edit (or the pencil next to their name in the Route Builder) and click Make repair day under the day, then Save Schedule. The day turns amber and shows Repair day in the Route Builder. Auto-Assign and Rebalance never put a recurring stop on it, and Rebalance moves any stops already there onto the technician's other days. The one exception is a pool that can't go anywhere else, such as one whose only preferred day is that Friday: it goes on the repair day rather than off the schedule. Best fit, Route Health, the route suggestions for a new customer, and Pick for me on the Transfer stops page leave it out for regular pools too. Work orders can still be scheduled on it, and you can still drag a stop onto it yourself.
Just finished creating jobs in bulk? Route Builder → Auto-Assign is the fastest way to get them all onto routes. See Add Service in Bulk for the full setup flow.
- Suspended jobs that are on no route are not in the Unassigned list or its count, because a paused job doesn't need a route. They are listed in a collapsed Suspended, not on a route group at the bottom of the Unassigned tab, each with Open job. Resume the job on its page and it moves into Unassigned, ready to place. The N unassigned recurring services banner on Route Schedule and Route Map counts the same way, so it only shows when a job is really waiting for a route.
- A day slot that has never been optimized shows a blue Optimize button. Once it runs, the button turns green and reads Optimized — you can still click it to run optimization again at any time.
- When you add, remove, move, or hand-reorder a stop on an optimized route, the slot flips to an amber Changed since optimized strip and a Re-optimize button, so it's obvious which routes are running an out-of-date stop order.
- Optimize All opens a window that lists every route with 2 or more stops that is either not optimized yet or has changed since, with the miles a week each could save, and explains that only the order of stops changes. Tick Also optimize the N routes already optimized to redo those too, then click Optimize N routes. The same button is on Route Schedule and Route Health (see Route Health and Optimize all). The count on the button is how many routes on the board are not optimized yet.
- The map fills the rest of the board and plots assigned stops color-coded by day and unassigned stops as gray pins. Filter chips above it narrow the map by technician or day — on a narrow screen the chips become two dropdowns, tech and day, in a single row. Lasso drawing is not available on small screens — tap a pin and choose Add to selection instead. The gray unassigned pins stay visible when you filter to a single day, so you can see what is still loose near that day's cluster.
- When you click Assign on a card (or bulk-assign a selection, or click Move on a stop already on a route), the picker opens with a Best fit section at the top — the two or three best technician + day options. They are ranked by the job's preferences first (options matching the preferred day and preferred technician always come before options matching only one, then none), then by the least added driving — and a day that would run past the technician's workday counts every extra minute against it, so overloaded days fall down the list instead of winning on distance alone. Each option shows the stops that day would go from and to, its estimated time and miles, the extra driving it would add (for example +0.8 mi drive), and a short reason such as Preferred day + tech, Preferred day, Preferred tech, Least added drive, or Lightest day. Click one to select it.
- Below Best fit is a grid: one row per technician, one column per weekday anybody works. Each square shows the stop count that day would end up with and a bar showing how full the technician's workday would be — the bar turns red at the end when the route would run past their end time, and a dash means the technician doesn't work that day. Squares that would double-book a multi-visit job on the same day are greyed out, and in Move mode the slot the stop is leaving is greyed out too. A star marks one of the job's preferred days. Routes with no technician are listed in their own Unassigned routes group at the bottom.
- Whichever option you pick, a line above the buttons spells out the result — stops before → after, estimated time against the length of that workday, estimated miles, and (when moving) the technician and day the stop is leaving. Times and miles are always the estimate after the assignment.
Auto-Assign and Rebalance never write straight to your routes. Both build a proposal first and hand it to you as a preview:
- The map switches to the proposed routes — dashed lines in each day's colour, home base → stops → home base — and the pins that would move are recoloured to their proposed day and renumbered to their proposed stop order, ringed with a dashed halo so a proposal never reads as something already saved.
- A panel over the map lists every technician + day the run would touch, each with stops before → after, the change (+3, -5), and the estimated time and miles that day would run.
- On a Rebalance preview each row also shows how many stops are new here — arriving from a different route — and a warning appears if any day would end up with no stops at all.
- Apply saves the proposal and then re-runs Google Maps stop ordering on every route it touched. Cancel discards it — no routes are created, moved, or emptied.
- While a preview is open the Auto-Assign, Rebalance, and Optimize All buttons are disabled, so a second run can never land on top of one you are still reading.
Because Auto-Assign and Rebalance are gated behind Apply, they have no Undo — cancelling the preview is the undo. Undo covers the changes you make by hand: assigning, moving, and removing stops.
You can work directly on the map instead of the left panel:
- Click a gray (unassigned) pin to see the job, customer, address, and minutes at the stop, with an Assign… button that opens the same technician + day picker.
- Click a colored (assigned) pin for the same details plus Move… (send the stop to a different technician or day), Add to selection, and Remove from route (send it back to Unassigned).
- Lasso in the map toolbar turns on selection drawing — drag a shape around a cluster of pins and every stop inside it is selected, gray (unassigned) and colored (on a route) alike. Filter the map to one technician or day first to lasso only their stops. The matching cards tick in the left panel, and a N selected chip appears on the map with Assign… (or Move… when any selected stop is already on a route). Press Esc (or click Lasso again) to leave lasso mode; Esc with lasso off clears the selection.
- With a selection active, clicking a pin adds or removes that single stop. Selected pins are ringed in indigo. Shift-click or Cmd/Ctrl-click a pin to start a selection when none exists.
- Filtering the map to one technician or one day draws each route as a line in that day's color, home base → stops → home base. Dotted lines are straight-line estimates; a solid line means real driving directions were already calculated for that route (from Optimize or the Route Map) and could be reused. The builder never calls Google for new directions on its own.
The Routes tab lists one collapsible section per technician, and it follows each technician's work schedule — days a tech doesn't work don't get day slots. The builder opens on this tab whenever nothing is waiting in Unassigned. Under each technician's name is their workload for the week: work days, jobs, and the planned route time against the workdays on their schedule (for example 10h 40m of 21h). It turns red when any of their days runs past its end time, and that day's dot gets a red ring. Collapsed technicians show a coloured dot per work day with that day's stop count, and Expand all / Collapse all opens or closes the whole crew; whichever technicians you leave open are remembered next time. Dragging a stop over a technician's name opens that technician mid-drag. Click the pencil icon next to a technician's name to open their Work Schedule dialog:
- Toggle each day of the week on or off and set start and end times per day — or apply the Mon-Fri 8-5 preset in one click.
- If you disable a day that has an active route with jobs on it, an "Active routes on removed days" warning appears with a "Transfer to..." picker — choose another technician (and one of their working days) to move the route to, or save without transferring, in which case the route remains but no longer shows in the builder.
- Every stop card in a day slot carries a checkbox for moving several stops together, its stop number, a Frequency button that opens the job's schedule, a Move button that sends that one stop to another technician or day, a link out to the job page, and × to put it back in Unassigned. Cards on an Unassigned route have no Frequency button — a frequency edit needs a real technician on the route — but they can still be moved.
- Quarterly, semiannual, and annual jobs are not laid out in the builder — day slots show a count of these hidden long-cycle jobs, which are managed from the job page instead (see below).
- If a technician is archived, their routes stay but lose their owner. Those routes appear at the top of the Routes tab under Unassigned routes — click Assign on one to hand the whole route to another technician, or drag its stops onto someone's day. They also show up on the map under the Unassigned technician filter.
Create and manage individual routes

The Route Schedule page is where you plan and view routes by day and technician. Routes are made for you when you add work to an empty day. Open a route to manage its jobs, and see transfer and move jobs for moving work between technicians and days. On a route's page, click a stop's card (anywhere except its buttons) to zoom the map beside the list to that stop, with its pin enlarged and the card outlined; click a pin on that map to highlight its card. A stop whose address can't be placed on the map has no pin, so clicking its card only shows a note saying so.
Switch between Week and Month at the top. By default each cell shows a route summary (technician, status, and stops done). Click Expand jobs (next to History on the right of the bar) to list every job inside its cell, and Collapse jobs to go back to the summary. This only changes how much detail each cell shows. It does not filter or hide any routes, and your choice is remembered next time you open the page. A key under the grid explains the icons: Scheduled, Late, Active, Done, Abandoned and Off.
Each row is a technician and each column a day. A day the technician works, per their Work Schedule on their employee page, shows their hours (for example 8:00 AM–5:00 PM). A day they don't work is shaded with diagonal stripes and says Off. A technician with no work schedule is treated as working Monday to Friday, 8 hours a day. Long technician names wrap onto more lines instead of being cut off.
- Add jobs to a technician's day: click an empty day (Add jobs), or + Add at the bottom of a day that already has stops. You don't need to create a route first: if the technician has no route for that weekday, one is created for you behind the scenes when you add. In the expanded day and technician views, use the Add button next to each technician or day.
- In the Add to Sam's Tuesday window, search and tick one or more jobs, then choose This day only (just that date) or Every Tuesday (a weekly visit starting that date). Work orders are one-time visits, so they always go on that day only.
- As you tick jobs, a box shows what they do to the day, using the same estimate as the schedule: for example Done ~3:40 PM → ~4:25 PM · schedule ends 5:00 PM with Fits, 35m to spare in green, or Would run 1h 25m over in amber or red. With Every Tuesday it checks the technician's regular Tuesday stops; with This day only it checks that date. Each ticked job shows its time at the stop and the driving it adds (for example +45m at stop · +1.2 mi / +6m drive), and a Where on the route menu that starts on Best spot (the spot that adds the least driving). Several jobs are placed one after another, each at its best spot after the ones before it. The menu is hidden when the day has no stops yet.
- Adding to a day off: you're asked first, for example Sam isn't scheduled to work on Saturdays, with their schedule (Works Mon–Fri, 8:00 AM–5:00 PM). Click Add anyway to continue, Cancel to stop, or Edit work schedule to open their work schedule. A day off that has stops shows a Day off badge.
- Who can add: roles with permission to update routes can add to anyone's day; a technician can add to their own days. Past days can't be added to.
Every schedule change — transfers, adds, removals, frequency changes, skips, reorders — is logged with who made it and why. History buttons on the Route Schedule, the Route Builder, and each route page open the audit log, and the office can also start, complete, or intervene in live routes. See admin route tools.
See when a technician will finish, and whether it runs past their workday
Pool Founder adds up each technician's day for you: the drive to every stop, the time at each stop, and the drive back, starting when their work schedule says the day starts. It compares the finish with the technician's workday and shows the result in three places.
- Route Schedule: each technician's day shows Done ~4:40 PM (the estimated finish). When the day runs past the workday, a red chip says how far, for example 1h 10m over (amber when it's 15 minutes or less). When there's time left, a green chip says roughly how many more average stops fit, for example room for ~3. Hover the cell for the breakdown: time at stops, driving, when the workday ends, and which stops fit. Expand a day or a technician to see the same line in the larger view.
- A route's page (day view): above the stop list, Est. finish 5:40 PM · schedule ends 5:00 PM. When the day runs over, the box turns red with Runs 40m past Jake's workday, which stops fit before the end of the workday (for example Stops 1–9 fit by 5:00 PM), and a Transfer stops button that opens the Transfer stops page (the same as the Transfer button above the stop list), where you tick the stops to move and pick a technician and day with room, or click Pick for me to have it choose the fewest stops and where they go. See <a href='/help/transfer-and-move-jobs'>transfer and move jobs</a>. When it fits, it shows the time left and room for about how many more stops. Each stop's Est. time window uses the same estimate, so the list and the finish always agree.
- A route's page (Recurring Schedule view): above the stop list, the route's next four run dates against the workday. A line sums them up, for example Runs past Jake's workday on 4 of the next 4 Mondays (typically +1–2h), 2 of the next 4 Mondays run past Jake's workday (+1–2h), or Fits every week, room for ~3 more stops. Below it, one box per date shows the estimated finish (Done ~5:40 PM) and either a red or amber chip such as +1h 10m over or a green room for ~3. Click a date to open that day's view. When any date runs over, Fix permanently opens the Transfer stops page for the first date that runs over, with Every week already selected, because a route that runs over every week needs its stops moved for good. Dates before the route's start date aren't shown, a run already finished today is skipped, and archived routes show nothing.
How the estimate works: the day starts at the start time in the technician's work schedule for that weekday (else the route's start time, else 8:00 AM), from the schedule's start location (else the route's start location, else the technician's home), and ends back there. Time at a stop is the job's learned typical time once it has at least 3 timed visits, otherwise its time at stop: for a recurring service that is its service's Time at stop, else the median of the service's timed visits, else 30 minutes (see services); 60 minutes for a work order with none, 15 for an unplanned stop. Task minutes don't count toward a maintenance stop. When any recurring service has no Time at stop, the Route Builder header shows an amber N services without a time at stop (counted as 30 min) chip with Set times, which opens the Services page. Drive times use Google's times once the route page has calculated them for that day's layout. Until then (and for any leg Google hasn't measured) they're estimated from the straight-line distance, allowing for roads (about 1.35× the distance at 30 mph). Skipped stops, stops transferred out, one-time adds, stops transferred in, and unplanned stops are all counted the way the day will actually run.
The workday comes from the technician's Work Schedule (on their employee page, or the pencil icon next to their name in the Route Builder): the day's start and end time (capped by max hours, if set). A technician with no schedule for that day gets an 8h default workday, and the Route Schedule and route page say so. When the day starts or ends more than about 100 miles from its stops (usually a home address or start location in the wrong place), the estimate still includes that drive, so it can say something like 77h over. The cell shows a Far start (or Far end) badge, and the route page and the Add window say, for example, Start location is ~1,900 mi from Sam's stops. Check their address. with a link to the technician's profile. Fix the technician's address, their work schedule start location, or the route's start location. A day that is running uses the live route: finished stops drop out and the estimate restarts from now. Days already completed show what actually happened, not an estimate.
The estimate only warns. Pool Founder does not move stops off a long day on its own. To fix one, see When a technician's day runs too long.
Lock a stop in place before optimizing
Some stops have to happen at a certain point in the day, for example a customer who wants to be first or a gate that is only open late. Lock that stop and Optimize keeps it where it is and reorders every other stop around it.
- 1Open the route's page and put the stop where you want it: drag it, use the up and down arrows beside its number, or click Move to top on the stop to make it the first stop.
- 2Click the lock beside the stop's number. A locked stop shows an amber lock; unlocked stops show a gray open lock.
- 3Click Optimize. The locked stop keeps its position (for example, still stop 1 or still stop 5), and the stops before and after it are each put in the best order.
- You can lock more than one stop, at any position. Optimize only reorders the stops between them.
- A lock belongs to the route, so it holds every week, whether you optimize from the route page, the Optimize buttons in the Route Builder, or the technician's app. The Route Builder does not show the lock icon; lock and unlock stops on the route's page.
- A lock holds a position in the order, not a clock time. There is no way to set a time window (for example "arrive between 1 and 3 PM") for a stop.
- Only regular stops on the route can be locked. One-time stops, stops transferred in for a day, and skipped or suspended stops have no lock.
- Locking does not stop you reordering by hand. If you drag a locked stop somewhere else, it stays locked at its new position.
- Click the amber lock again to unlock the stop.
Reverse a day's stops on the route page
When a technician needs to run a day backwards (say, to stay ahead of a storm), flip the order in one click instead of dragging every stop. This is on a route's page for a specific date (day view) only; the Route Builder and the recurring view don't have it.
- 1Open the route's page for the date and click Reverse (⇅) above the stop list, next to Optimize.
- 2Confirm. While the route is running the dialog asks "Reverse the remaining N stops?"; before it starts, and on a future day, it asks "Reverse the order of these N stops?". Click Reverse to flip them, or Cancel.
- While the route is running, only stops still waiting to be done flip: the last remaining stop becomes the technician's next one. Completed and skipped stops, the stop being worked right now, and stops transferred to another technician stay exactly where they are. The new order reaches the technician's app right away.
- Before the route starts, or on a future day, it flips every stop you could drag (stops transferred out and suspended stops stay put) and saves it as that day's order, the same as dragging. The recurring route order doesn't change.
- It's a straight flip, not a drive-time optimization (use Optimize for that). It's greyed out when fewer than 2 stops can move, and hidden on a finished route.
- There's no separate undo: click Reverse again to flip the stops back.
- Technicians can do the same from the app (see <a href='/help/run-your-route'>run your route</a>).
Single-day vs. recurring edits on a route page
Every route page has a two-button mode toggle at the top that controls what your edits affect — it's the most important control on the page:
| Mode | What edits affect |
|---|---|
| The dated day card ("Single day only") | Changes apply to that specific date only — one-time adds, skips, and reorders for the day. The recurring schedule is untouched. A prominent banner confirms: "Editing {date} Only." |
| Recurring Schedule ("All future weeks") | Changes apply to all future occurrences of the route — permanent adds, removals, and frequency changes. The banner reads "Editing Recurring Schedule." |
If a change you expected to stick disappeared the next week, it was probably made in single-day mode. Check the banner before you edit.
Step to the technician's previous or next day
Beside the route's name are Previous day and Next day buttons (just the arrows on a narrow screen). They open the same technician's route for the day before or after, in the same mode, so you can walk through a technician's week without going back to the Route Schedule. Each weekday is its own route, and the buttons find the right one for you. Hover a button to see which date and route it opens.
- Single day: the buttons go to the nearest earlier or later date and skip dates the technician has no route, so a technician who works one day a week goes to the same day next week. A route that hasn't reached its start date yet is skipped too.
- Recurring Schedule: the buttons go to the technician's previous or next weekday route, wrapping around the week. When the technician has only one route, the buttons don't show.
- Unassigned routes step through the other unassigned routes.
- Archived routes are skipped. To open a different technician's route, use the Route Schedule.
Where one-time stops and booked work orders sit in a day
- On a date with one-time additions added at the end (no spot picked) and no order set by hand for that day, the day view lists those additions after the regular stops, in the same order the technician's app runs them.
- A work order booked at a spot in the day (from the Schedule dialog on Work orders to schedule, or from Best fit or Best days on its Schedule page), or a job added for one day at a spot with Where on the route, goes right after the stop it was placed after, or first. It remembers only that stop, not a copy of the whole day.
- So when the recurring route is later reordered or optimized, or customers are added to or removed from it, that date follows the new route order and the work order stays right after its stop.
- If the stop it follows is skipped, transferred, or removed that day, the work order moves to the end of the day.
- If that specific date was already reordered by hand, the hand order is kept and the work order is slotted in after the chosen stop.
- Rescheduling, completing, or removing the work order clears its spot.
Add a job to a route — even one that doesn't exist yet
A route's Add button opens the Add Jobs to Route screen — a searchable list you can multi-select from like a cart. Click jobs to stage them, configure each one, then commit the batch with Add All to Route (or Clear Selection to start over). Each staged recurring service gets its own controls:
- This Day vs. Recurring — when you opened the screen from a specific date, each recurring service can be added as a one-time visit for just that day or onto the recurring schedule.
- Move Here Permanently — a job can only be on one technician's recurring route per weekday. If the job is already on another technician's route that weekday (the list tags it From: Carlos A.), the second choice reads Move Here Permanently (Move Here when several jobs are staged) instead of Recurring. It takes the job off the other route for good and puts it on this one with the same schedule; a purple This is a permanent move box spells that out before you click Move to This Route Permanently. To cover a single day instead, keep This Day Only.
- Frequency — recurring adds pick from Weekly, Every 2 Wks, Every 4 Wks, Every 13 Wks, Every 26 Wks, or Every 52 Wks; non-weekly frequencies also ask you to select the first date.
- Technician and day — a work order, or a recurring service added for This Day Only, shows a grid with technicians down the side and days across the top. Each box shows when that technician's day would end with the job added; a red box (for example 47m late) runs past their workday, and a dash is a day they don't work. Earlier and Later page through the weeks. It starts on this route's day (its next run, when you opened the screen without a date); click any other box to put the visit on that technician's day instead, and the line under the grid says where it is going (Going to Sam, Friday, October 2). A technician with nothing scheduled that day gets a route made for it. Recurring adds always go on the route you opened.
- Where on the route — with one job selected, pick its spot in the route: Best spot (the default, e.g. "Best spot: after Henderson, +0.4 mi"), First stop, After a specific stop, or Last stop. A one-day add is placed among that day's stops (the day picked in the grid); a Recurring add sets its place in the recurring order, so it holds every week. With several jobs staged, one Technician and day grid covers every one-day job in the batch, and a single Where on the route choice above Add All to Route covers the batch: Best spot for each job, Start of the route (the jobs go first, in the order you staged them), or End of the route.
If no jobs are available to add, a Create a Job button opens a quick-create dialog: pick the service location, keep or edit the auto-filled name, and optionally set a rate. It also supports Quick add contact for brand-new customers. The new job is staged onto the route automatically.
If the only jobs available are archived, the empty state on the Add Job to Route screen warns you and links to restore them. See pause, skip, and archive jobs.
Where a new stop goes on the route
When you add something to a route, it no longer just lands at the end. A Where on the route picker puts it at the best spot by default: the position that adds the least straight-line driving, measured from the route's start through that day's stops. The best-spot option says where that is and what it costs, for example "Best spot: after Henderson, +0.4 mi" or "Best spot: first stop, no extra driving". Or pick the spot yourself: First stop, After any stop in the list (numbered as on the route, like "After 3. Blake"), or Last stop.
- Web: the Add Jobs to Route screen (see above) and the Add Unplanned Stop dialog, opened from the Unplanned Stop button on a route's day view, or from the Unplanned Stops page when you assign the stop to a technician who has a route that day. See unplanned and open stops.
- Technician app: Add Unplanned Stop and Add Existing Job (when the job goes onto that day's route). On a route that is running, the choices are Best spot, Next stop, after a stop not yet started, or Last stop. See field work orders and stops.
- On a route that is already running, a new stop never goes ahead of stops that are started or done.
- A job added for one day at a spot stays right after the stop it was placed after, so that date still follows later changes to the recurring route (the same as booked work orders, below). An unplanned stop placed at a spot is slotted into that day's order.
- An address that isn't mapped yet can't be measured, so Best spot puts it at the end (the web picker says so under the field). The technician app does the same while offline.
- The picker only shows when the route already has stops that day.
Not every way of adding a stop has the picker yet. Transferring a stop to another technician still puts it at the end of that technician's day. Move it afterwards by dragging it on the route page, or re-optimize the day.
Scheduling frequencies
- Weekly — the standard cadence for pool service.
- Biweekly (every 2 weeks) and monthly (every 4 weeks) — for less frequent service.
- Quarterly (every 13 weeks), semiannually (every 26 weeks), and annually (every 52 weeks) — for filter cleans, salt cell service, and other long-cycle visits. These jobs aren't laid out in the Route Builder — schedule them from the job page's Schedule tab (see the next section) or the Add Jobs to Route screen, and they drop onto the route only in the weeks they occur.
- Multiple visits per week — pools serviced more than once a week are supported; when applying a recurring service in bulk you can set visits per week (1–5×) per pool.
Schedule a single job from its page
Every recurring service page has a Schedule card on its Schedule tab, and its Add to Route button (also the job's Add to route button at the top right while it is on no route) opens the Job Schedule page. On a work order, it is the Schedule button at the top right (or More actions → Schedule once something is booked). The Job Schedule page is — a calendar-based scheduler for that one job: pick a technician, pick days or dates on the calendar, and set the frequency (Weekly through Every 52 Weeks). Multi-visit jobs prompt you to select the right number of days per week, and on recurring services Recommended Tech + Day proposes the best route days. The same page powers rescheduling, transfers (with a This visit / Permanently toggle), and reopening completed work orders.
On a recurring service, and on the Schedule Quote Walkthrough page for a lead, each calendar day shows the selected technician's stop count and day length for that exact date, like 12 stops · 6h 30m. It counts everything booked that date: the regular stops due that week, work orders and other one-time stops, and stops transferred in, minus stops skipped or transferred away. The estimated end time in the Schedule Summary uses that same day length, and a work order's Schedule page shows the same stop count and day length for the date. Two things still look only at the route's regular stops: the mi away distance on each day measures to the nearest recurring stop, and the recommendations above the calendar rank routes by their weekly stops, ignoring one-time bookings.
On a work order, the page shows Best fit instead: the technician and day that add the least driving across all your technicians, with a Use this button. Under it, Best days for the selected technician ranks their best days, and the calendar marks the same days with their number. A day picked from either one is booked at its spot in the route, not at the end. See Work orders to schedule for how days are picked.
The Schedule card also shows Suggested routes — candidate routes for the job, each showing the technician, day, the miles and minutes the stop would add, and the route's total time, with a one-click Add button that drops the job straight onto that route.
Watch routes on the map
The Route Map page plots every stop on a single map, color-coded by day. By default it shows the recurring weekly layout; the View Specific Date button switches to an exact calendar date instead, showing what actually runs that day. Beside the map, the Stops tab lists the stops on the map, grouped by route in the order the route runs them, with the technician, day and stop count of each route. The Overview tab summarizes Total Stops, Active Routes, Technicians, and Unassigned jobs, plus a per-day distribution of stops.
- The list follows every filter below: pick a technician and a day to see that route's stops in order.
- Click a stop in the list to zoom the map to it and open its details. Click a pin on the map to highlight its row in the list.
- Find a stop searches the list by customer, address or job name. It narrows the list only, not the map.
- Only this on a route's header hides every other route; Show all routes brings them back. When the map shows a single route, each pin carries its stop number from the list and nearby pins are no longer grouped into count bubbles.
- Stops whose address has no map location are not on the map, so they are not in the list either.
Filters above the map narrow what it shows. The map, the Stop type key, Total Stops, Active Routes, Technicians and the per-day distribution all follow them (Unassigned is always company-wide):
- All Days (weekly view only) and All Technicians pick one day or one technician. All Technicians also offers Unassigned when some routes have no technician, to map just those routes (for example Unassigned - Wednesday).
- All routes opens a checklist of the routes in view. Untick a route to hide it, tick it to bring it back; Show all and Hide all do every route at once. Every route is shown until you hide one, and the button then reads, for example, 5 of 8 routes.
- All job types keeps only Recurring maintenance, Work order, or both. On a specific date it also offers Other stop, for ad-hoc stops a technician added that day.
- All statuses appears only on a specific date: Not started, In progress, Completed or Skipped, as recorded by the technician running the route that day. The weekly view has no status, because it is the repeating layout, not a day that has run.
- All tags keeps stops whose service location has any of the location tags you tick (for example Salt pool or Dog on site). Ad-hoc stops have no location tags, so a tag filter hides them.
- With a type, status or tag filter on, Active Routes and Technicians count only routes that still have a stop on the map. Reset filters clears the route, type, status and tag filters in one click.
- Filters are not saved: they reset when you leave the page or reload it.
Hover a pin to see the customer's name. Pin shape tells you the kind of stop: a circle is a recurring maintenance stop and a rounded square is a one-time work order. A Stop type key appears under the Day of Week legend whenever work orders are on the map. Click a pin for its details, led by the customer's name, then the address, job, route, and technician. The Route Builder map shows names on hover too, but it does not mark work orders with a different shape.
Field Operations is the real-time counterpart — a live map of active routes, technician locations, and job status while the day is running, with admin controls to skip stops or force-complete routes. See admin route tools. For what the technician sees on their phone, see run your route.
Frequently asked questions
How do I spread all my pools evenly across a set number of shifts, when one person does repairs one day a week?
Mark that day as a repair day on the person's Work Schedule (employee page → Work Schedule → Edit → Make repair day under the day), and check everyone's other working days are on their schedules. Then in the Route Builder click Rebalance, pick Every route, look over the preview, and click Apply. It splits the total pool time evenly across every working day (for example 4 + 5 + 5 = 14 days), keeps nearby pools together, and respects preferred people and days. The repair day gets no pools. Suspended, quarterly and annual jobs stay where they are.
Can I stop Auto-Assign from sending a technician to the same area twice in one week?
Pool Founder has no territories or zones to draw, so there is no setting that forbids it. Auto-Assign and Rebalance do group by area on their own, though. Each technician-day is built around its own part of your service area (or around the stops already on it), and nearby pools are kept together, so most of the time each day ends up with its own neighborhood. A pool on several visits a week is always split across different days, so that area gets more than one trip by design. To clean up what's left, use Route Health: it suggests moving a customer to another of the same technician's days when that saves driving. Or lasso a cluster on the Route Builder map and move it to one day.
Why does Route Health keep showing the same one suggestion, even after Check again?
That usually means it is working and that one change is all it found. Route Health (under Route Schedule in the sidebar) looks for customers who'd be a shorter drive on another of the same technician's days. It only lists changes that save at least 2 miles a week, only moves weekly stops (not every-other-week or monthly ones), keeps each job on its preferred days, and won't make a day much longer than the one the stop leaves. It checks every week on its own; Check again reruns it in the background, and the Last checked time under the title updates when it finishes. A suggestion stays on the page until you Apply it or dismiss it with the X, so if your routes haven't changed, checking again finds the same one. The panel under the banner also shows what a better stop order would save (with Optimize all) and any technician whose commute is most of their week; see Route Health and Optimize all. To rebuild routes more broadly, use Rebalance or Auto-Assign in the Route Builder.
Can I limit a job to certain technicians, like only the ones who do heater work?
Yes. Set them as the job's Preferred technicians (on the job under Customer requests, per row in Set up service in bulk, or ask George to set it on many jobs at once). Auto-Assign and Rebalance treat it as a rule, not a hint: they only ever place that job with those people. When you place or move it yourself, the picker lists them first with a Preferred tech tag, but you can still pick someone else. There's no skills list on an employee's profile; you choose them on each job.
Can I delete or archive several jobs at once from the Route Builder?
Yes, by archiving them. Tick the jobs in the Route Builder (unassigned cards, stops on the Routes tab, or a lasso on the map) and click Archive next to Assign/Move. After you confirm, they come off every route and leave the Jobs page. A job with an open or draft invoice is refused. Restore any of them from the Jobs page with Show archived. You need the Delete jobs permission.
Can I go to a technician's next or previous route day from the route page?
Yes. On a route's page, click Previous day or Next day beside the route's name. It opens the same technician's route for the day before or after, keeping the view you're in (single day or Recurring Schedule). In the single-day view it skips dates the technician has no route, so a technician who works one day a week goes to the same day next week. Hover a button to see which date and route it opens.
Can I build next week's routes while my technicians are out running today's routes?
Yes. Use the Route Builder. It never changes a route a technician has already started today: their phone keeps today's stops, and your changes take over from each route's next run. A stop moved off a running route stays on it for today, and a stop put on a running route (or still out on another technician's running route) starts on its next visit. Everything you change is permanent (every future week), so for a change to just one date use the route page's single-day view or Transfer stops → Just this visit.
How do I add a job to a technician's day when they don't have a route that day?
On the Route Schedule, click that technician's empty day (Add jobs), tick the jobs, choose This day only or Every Tuesday (whichever weekday it is), and click Add job. The route for that weekday is created for you. While you choose, the window shows how the day's finish changes against the workday and lets you pick Where on the route each job goes (Best spot by default). Days off the technician's work schedule are striped and say Off; adding to one asks first (for example Sam isn't scheduled to work on Saturdays) with Add anyway, Cancel and Edit work schedule.
Why does the estimate say a day runs dozens of hours long?
The estimate includes the drive from where the day starts and back to where it ends. If that point is states away from the stops (a wrong home address, work schedule start location or route start location), the drive is huge. The cell shows a Far start or Far end badge, and the route page and the Add window say how far it is (for example Start location is ~1,900 mi from Sam's stops. Check their address.). Fix the address and the estimate goes back to normal.
Can Pool Founder tell me when a technician will finish, or if they'll go past 8 hours?
Yes. On the Route Schedule each technician's day shows its estimated finish (Done ~4:40 PM) with a red chip such as 1h 10m over when it runs past their workday, or room for ~3 when there's time left. A route's page shows Est. finish vs when the schedule ends, and a warning like Runs 40m past Jake's workday listing which stops fit. The route page's Recurring Schedule view shows the next four run dates, for example Runs past Jake's workday on 4 of the next 4 Mondays, with a Fix permanently button. The workday comes from the technician's work schedule: the day starts at the schedule's start time and start location for that weekday (the route's start time and start location are only used when the technician has no schedule for that day), or 8 hours when they have none. It counts drive time (including the drive back) plus time at each stop.
Does this route run over every week, or just this one day?
Open the route and switch to Recurring Schedule (All future weeks). Above the stop list it checks the route's next four run dates against the technician's workday: for example Runs past Jake's workday on 4 of the next 4 Mondays (typically +1–2h), 1 of the next 4 Mondays runs past Jake's workday (+45m), or Fits every week, room for ~3 more stops. Each date shows its estimated finish and how far over (or room for ~N); click one to open that day. If any week runs over, Fix permanently opens the Transfer stops page for the first date that runs over with Every week selected, so the stops you move leave the weekly route for good.
How does route optimization order the stops?
Optimization is based on location and drive time, using Google Maps. It also prefers stopping on the same side of the street as each pool where possible, so the technician is not crossing traffic or U-turning at every other house. Traffic is factored in, so the order can differ depending on the time of day you optimize. Each day slot in the Route Builder has its own Optimize button, and Optimize All in the header runs every route that needs it at once.
Can I re-run optimization on a route I already optimized?
Yes. The green "Optimized" button on a day slot stays clickable, so you can re-run it whenever you want. You usually do not have to hunt for it: adding, removing, moving, or hand-reordering a stop marks that route "Changed since optimized" with a Re-optimize button, and Optimize All picks up exactly those routes.
Does optimizing a route move the work orders already booked on it?
A work order booked at a spot in the day stays right after the stop it was booked after. It remembers only that stop, not the whole day's order, so after you reorder or optimize the recurring route, or add or remove customers, the date follows the new order with the work order behind its stop. If that stop is skipped, transferred, or removed that day, the work order goes to the end of the day, and a date reordered by hand keeps its hand order.
Where does a new stop go when I add it to a route? Can I choose?
By default it goes to the best spot: the position that adds the least straight-line driving, measured from the route's start through that day's stops. The Where on the route picker on the Add Jobs to Route screen, the Add Unplanned Stop dialog, and the technician app's Add Unplanned Stop and Add Existing Job screens shows that spot (for example "Best spot: after Henderson, +0.4 mi") and lets you pick First stop, After a specific stop, or Last stop instead; on a running route the app also offers Next stop. A stop added to a running route never goes ahead of stops already started or done, and an address that isn't mapped yet goes at the end. A single stop moved with its Transfer button gets the same picker, and so does each stop moved from a route's Transfer stops page (under Choose a different place or spot for each stop).
Does Auto-Assign change my routes straight away?
No. Auto-Assign and Rebalance both build a proposal and show it as a preview first — proposed routes drawn as dashed lines on the map, plus a per-technician-and-day list of stops before → after with estimated time and miles. Nothing is written until you click Apply, and Cancel discards the whole proposal without creating, moving, or emptying a single route.
How do I undo a change in the Route Builder, like a stop I moved to the wrong technician?
Assigning, moving, or removing a stop raises a toast that names the change with an Undo button — for example "Moved Smith to Bob · Thu". Click Undo and it reverses that exact change: a stop dropped on the wrong technician or day goes back to its old route at its old position, an assign is taken back off the route, and a removal is put back where it was. It is one level deep, so the next change you make replaces it. Auto-Assign and Rebalance have no Undo because they are gated behind a preview — cancel the preview instead.
What does dropping a stop on a technician name do?
It puts the stop on that technician's best day, at the best position within that day. The builder measures which insertion adds the least driving (straight-line distance from the technician's home base through the day's stops), honours the job's preferred days when it has any, and breaks close calls in favour of the lighter day. Dropping on a day header does the same thing for that one day. The drag label shows the result before you let go, and a stop can never land on a day where that job already has a visit.
Can I assign several unassigned jobs at once?
Yes, two ways. In the Unassigned Jobs panel, tick the checkbox on each card (Shift-click selects a range, or use Select all visible). Or on the map, turn on Lasso and draw around a cluster of gray pins — every unassigned stop inside the shape joins the same selection. Either way, click "Assign N jobs…" and choose one technician and day for the whole selection. Two visits of the same multi-visit job cannot go on the same day, so that selection is blocked.
Can I move several stops that are already on routes at once?
Yes. In the Route Builder's Routes tab, tick the checkbox on each stop card (the checkbox on a day's header ticks the whole day), or filter the map to a technician or day and lasso the stops. Click "Move N stops…" and pick one technician and day. The stops move from now on, keep their schedules, and one Undo puts them all back. You can mix in unassigned jobs too: they are added to the same day.
Can I rebalance just one technician, or just a few days?
Yes. Click Rebalance and keep "Some techs and days" selected, then tick the technicians and days. Only the stops already on those days are reshuffled, among those same technicians and days, and every other route stays as it is. A stop with nowhere to go in your choice (for example it asks for a technician you didn't tick) stays where it is. You see a preview before anything is saved. Pick "Every route" instead to redistribute every job across the whole crew.
Route Schedule said I have unassigned jobs, but the Route Builder shows none. Why?
Both now count the same way: a recurring service counts as unassigned only when it is not suspended and is on fewer route days than its visits per week. Suspended (paused) jobs never count; the Route Builder lists the ones on no route under "Suspended, not on a route" at the bottom of the Unassigned tab. Jobs whose address has no map location are counted in the builder's "missing coordinates" chip instead, because they can't be placed on the map until the address is fixed.
Can I assign or move a stop straight from the map?
Yes. Click a gray pin for job details and an Assign… button, or a colored pin for Move… and Remove from route. Move… opens the same technician + day picker and relocates the stop rather than adding a second copy — the day it already sits on is greyed out.
Why are some route lines dotted and some solid?
Dotted lines are straight-line estimates between stops, drawn instantly and free. A solid line means real driving directions for that exact route and stop order were already calculated (by Optimize or by opening the Route Map) and were still cached, so the builder could reuse them. The Route Builder never requests new directions from Google just to draw a line, so a route you've never optimized stays dotted.
Does optimization need the technician to have a home address?
No. Optimization anchors on the route's start and end location if you've set one, then the technician's address if their employee profile has one, and otherwise on the route's current first stop. Filling in a technician's address (or the route's start/end location) makes the ordering more accurate, because the drive from home and back is counted, but it is not required.
Can I keep one stop first (or at a certain spot) and optimize the rest?
Yes. On the route's page, move the stop where you want it (Move to top makes it stop 1), then click the lock beside its number. Optimize keeps a locked stop in its position and reorders the others around it, and you can lock several stops at any positions. Locks hold every week and apply to Optimize on the route page, in the Route Builder, and in the technician's app.
Can I give a stop a time window, like arrive between 1 and 3 PM?
No. Optimization orders stops by drive time and does not take arrival windows. The closest option is to put the stop at the position in the day that lands it near that time and lock it there, so Optimize will not move it.
Can I reverse a technician's route for one day from the dashboard?
Yes. Open the route's page for that date and click Reverse next to Optimize, then confirm. On a running route only the remaining stops flip; completed, skipped and in-progress stops stay put. Before the route starts (or on a future day) the whole day's order flips and is saved for that date only. Click Reverse again to undo it. The Route Builder doesn't have a Reverse button.
Is there a limit on how many stops a route can optimize?
No practical limit. Google optimizes 25 stops per request, so longer routes are optimized in chained segments — a 40-stop route is split into consecutive chunks that are each ordered for shortest drive time, with the linking stop shared between them.
Why are there no jobs to add to my route?
Either every job is already assigned, or the only remaining jobs are archived — the Add Job to Route screen warns you when that's the case and links to restore them. You can also create a new job on the spot with the Create a Job quick-create dialog.
Can a pool be serviced more than once a week?
Yes — multi-visit-per-week scheduling is supported, alongside weekly, biweekly, monthly, quarterly, semiannual, and annual frequencies.
Why don't my quarterly filter cleans show in the Route Builder?
The builder lays out weekly, biweekly, and monthly jobs; quarterly, semiannual, and annual jobs are hidden there (day slots show a count of them). Schedule those from the Add to Route button on the job page's Schedule tab or the Add Jobs to Route screen — they appear on the route only in the weeks they occur.
What decides whether a route edit is permanent?
The mode toggle at the top of the route page. The dated day card ("Single day only") makes edits that affect only that date; Recurring Schedule ("All future weeks") makes permanent changes. A banner always states which mode you're editing in.