Google Sheets is a viable Circuit route planner alternative when you use InstaMaps to turn your spreadsheet into a dispatch system. Instead of paying $100 to $200 per depot for routing software, you can sequence stops with formulas like =VISIT_ORDER() and share links using =ROUTE_LINK() at no per-driver cost.
This setup is built for small delivery fleets, field service managers, and local courier operators who already track their jobs in a spreadsheet. The end state is a self-updating workspace where dispatchers organize routes and crews receive live map URLs without the business paying recurring per-seat software licenses.
- →Circuit charges roughly $100 to $200 per depot or driver, which adds up quickly for growing fleets.
- →You can replace this software using your existing Google Sheets dispatch system with the free InstaMaps add-on.
- →Use the =VISIT_ORDER() formula to sequence raw addresses into an optimal driving route.
- →Generate turn-by-turn navigation links for your crews using =ROUTE_LINK() and =LOGBOOK_LINK().
- →Publish a live, hosted map of all your daily stops using =INSTAMAP() that updates as you edit the sheet.
- →There are no per-driver or per-seat fees; dispatch unlimited crews simply by sharing a URL.
- →The free tier provides 100 lookups per day, scaling to 1,000 daily lookups with a free email registration.
The problem with per-depot routing fees
Paid routing applications typically structure their pricing around depots or driver seats. A standard plan on platforms like Circuit often costs between $100 and $200 per depot each month. If you operate a delivery or service business with multiple starting points or a growing roster of drivers, these per-depot fees compound quickly, turning basic route optimization into a significant recurring SaaS expense.
You do not need a standalone dispatch application if your operational data already lives in a spreadsheet. Google Sheets can function entirely as your dispatch system. By running natively inside your workbook, InstaMaps applies route optimization directly to your address columns. This approach completely eliminates per-driver and per-depot subscription costs.
Instead of exporting CSV files from a sheet to import into a paid routing app, you keep your dispatch operations in one tab. You can sequence lists of raw addresses, generate driver manifests, and share live tracking links without leaving your workbook. The add-on handles the routing calculations while you retain full control over your data structure. A sheet scales without charging you a premium for adding a new driver or opening a new regional hub.
Setting up your dispatch system in Google Sheets
1. Open your Google Sheet and navigate to Extensions > Add-ons > Get add-ons.
2. Search for "InstaMaps" in the Google Workspace Marketplace and install the add-on. The tool is free, providing 100 lookups per day by default, which scales to 1,000 lookups per day with a free email unlock.
3. Once installed, access the tooling by clicking Extensions > InstaMaps > Enable formulas. This opens a dedicated sidebar on the right side of your workbook.
4. Highlight the exact cell where you want your formula to begin-such as C2 next to a list of addresses in column B. Select the corresponding function from the sidebar menu. The sidebar inserts the exact syntax into your selected cell without manual typing, preventing syntax errors like missing parentheses or incorrect range dimensions.
5. For multi-step dispatch operations, use the sidebar's "Build-the-workflow" button. This feature evaluates your selected address columns and writes entire formula chains for you. It maps your raw data through geocoding, route sequencing, and map generation automatically.
You can build dispatch workflows that instantly process columns of addresses. If you have a messy intake form feeding customer data into column B, the Build-the-workflow tool can chain =CLEAN_ADDRESS(B2:B500) directly into =GEOCODE(), and finally into =VISIT_ORDER(). If you need a visual interface, the system uses the =INSTAMAP() function. Entering =INSTAMAP(C2:C50, D2:D50) returns a live, hosted shareable map URL that automatically updates whenever you add or remove addresses from those specific ranges. You can browse pre-built templates at get-instamaps.com/templates to find exact dispatch layouts you can copy directly into your drive.
Sequencing stops with =VISIT_ORDER()
Dispatching requires organizing a raw list of addresses into a logical driving sequence. The =VISIT_ORDER() function handles this by analyzing your list of locations and reordering them into a minimized travel path.
To sequence a daily route, you first need accurate location data. If your dispatch sheet contains a list of customer addresses in column A, starting at A2, apply =CLEAN_ADDRESS(A2:A50) in column B to standardize the formatting and correct minor typos. Next, run =GEOCODE(B2:B50) in column C to extract the exact latitude and longitude coordinates for each location.
With coordinates established, apply =VISIT_ORDER(C2:C50) in column D. The function analyzes the spatial distribution of the stops in that range and assigns a sequential number to each address, dictating the exact order your driver should follow. This output instantly transforms a chaotic, randomly entered list of stops into a numbered, driver-ready manifest.
To make those stops actionable, pair the sequenced data with =ROUTE_LINK(). If you apply =ROUTE_LINK(B2:B12) alongside your sequenced stops, it generates a direct Google Maps navigation URL. Because =ROUTE_LINK() relies on Google Maps' official URL scheme, it accepts a maximum of 11 stops per link. If a driver has 47 stops, you must break the route into multiple links spanning 11 stops each to ensure the navigation opens correctly on a mobile device.
Worked example: Routing 47 stops across 5 crews
Consider a 200-home irrigation service farm that needs to assign 47 specific maintenance stops to 5 different drivers on a Tuesday morning. Instead of paying for five separate driver seats in an expensive routing application, you manage the entire distribution directly inside your Google Sheet.
1. Segment the daily data: Start by assigning each of the 47 addresses in column A to a specific crew. In column B, label the stops Crew 1, Crew 2, Crew 3, Crew 4, and Crew 5. You can use standard Google Sheets filtering to isolate just the rows assigned to Crew 1.
2. Clean and geocode the subset: Isolate the 9 addresses assigned to Crew 1. Run =CLEAN_ADDRESS(A2:A10) and =GEOCODE(B2:B10) to generate precise latitude and longitude coordinates for this specific subset of stops.
3. Sequence the stops: In column D, apply =VISIT_ORDER(C2:C10). This evaluates the 9 stops and assigns them a sequence from 1 to 9 based on the shortest driving path, preventing the driver from zigzagging across the city.
4. Generate navigation links: Because 9 stops fall under the 11-stop limit for Google Maps URLs, apply =ROUTE_LINK(B2:B10). This generates a single clickable URL that Crew 1 can open in the Google Maps mobile app, routing them sequentially through all 9 homes.
5. Dispatch to the crews: To provide a live view of the day's work, generate driver logs using =LOGBOOK_LINK(B2). Sending these specific URLs to each driver gives them a manifest they can update from their phone.
If a dispatch manager wants a macro view of all 47 stops across the 5 crews simultaneously, they can run =INSTAMAP(C2:C48) on a master tab. This formula returns a live, hosted shareable map URL that plots every single stop for the day. The map updates automatically if you cancel a job in row 14 or add a late emergency stop to row 49, entirely bypassing the need to manually rebuild routes in external dispatch software.
Generating crew links and live maps
Once you sequence stops using =VISIT_ORDER(A2:A48, "123 Main St"), you distribute them to your crews without paying per-driver software fees. Instead of copying rows into a dispatch app, generate links directly in the spreadsheet.
For the dispatcher, place =INSTAMAP(A2:E47) in cell G1. This function returns a live hosted shareable map URL. When a crew's status changes or a new address is pasted into row 48, the hosted map updates automatically. You keep this URL open on a second monitor to track all 47 stops across your 5 crews.
To dispatch a specific crew route, use =ROUTE_LINK(). If Crew A has an 11-stop sequence in cells B2:B12, =ROUTE_LINK(B2:B12) uses Google Maps' official URL scheme to generate a direct navigation link. The driver taps the link on their phone, and Google Maps opens with the stops loaded in order. Because this relies on Google's URL limits, =ROUTE_LINK() strictly caps at 11 stops per link. If a route has 15 stops, split the sequence across two cells: =ROUTE_LINK(B2:B12) and =ROUTE_LINK(B13:B16).
For routes that exceed 11 stops, or when drivers need access to specific customer notes rather than strict turn-by-turn navigation, use =LOGBOOK_LINK(). If your addresses are in column B, delivery weights in C, and gate codes in D, =LOGBOOK_LINK(B2:D20) packages the entire manifest into a mobile-friendly web page. The driver opens the link on their phone to view their schedule, addresses, and specific manifest details synced from the sheet. You can text or email these generated URLs to the crew.
Limits and honest alternatives
Routing in Google Sheets has hard technical constraints. The most rigid is the 11-stop maximum on =ROUTE_LINK(). Google Maps' official URL scheme truncates URLs with more than 11 destinations, so attempting to pass 20 stops to =ROUTE_LINK() results in a broken link. Additionally, sorting =VISIT_ORDER() on a sheet with 5,000+ rows of complex distances will eventually cause the spreadsheet's calculation time to lag.
A paid enterprise tool or a standalone app like Circuit-which typically charges $100 to $200 per depot-remains necessary under specific operational conditions. You need dedicated software if you require live vehicle telemetry, OBD2 hardware integration, dynamic hour-by-hour traffic re-optimization across a 50-vehicle fleet, or automated barcode scanning tied directly to a proprietary API.
However, if your operation simply requires taking a list of 47 daily stops, putting them in an optimal sequence, and texting a manifest link to five different crews, spreadsheet routing covers the entire workflow. The InstaMaps add-on is free, allowing you to avoid the monthly per-driver subscription fees that rapidly scale up when you hire temporary or seasonal help.
Who this approach is for
This approach is designed for local delivery operators, regional field service managers, and dispatchers who already run their daily operations out of spreadsheets. If you currently store customer addresses, delivery windows, and crew assignments in Google Sheets, but you manually copy and paste those rows into a third-party routing app, this workflow replaces that paid step.
It is specifically for teams who need to stop paying per-driver software fees. If you manage a 5-crew HVAC team or a local farm delivering to 200 homes, and your primary requirement is sharing a live map and a 10-stop manifest link via text message, you do not need a $200/month depot subscription.
Map your Salesforce accounts in under 5 minutes — no admin setup.
Common Questions
Google Sheets becomes a viable alternative when you add custom location formulas to handle address validation, distance calculations, and stop sequencing. While it lacks a dedicated mobile app interface, it eliminates the $100 to $200 per-depot subscription fees charged by standard routing platforms. A spreadsheet works perfectly as a central dispatch system if your team relies on standard mapping links rather than integrated GPS turn-by-turn tracking.
The InstaMaps add-on is completely free to install from the Google Workspace Marketplace. The free tier includes 100 lookups per day, and registering an email address unlocks 1,000 lookups per day at no cost. There are zero per-driver or per-seat fees, meaning you can share routes with an unlimited number of crew members.
The =ROUTE_LINK() formula generates a clickable Google Maps URL using the official Google Maps URL scheme, which accommodates a maximum of 11 stops. Setting =ROUTE_LINK(A2:A12) creates a link drivers can click on their phones to launch navigation directly to their sequence of stops. It takes standard street addresses as inputs and formats them into the exact URL structure Google Maps requires for multi-stop routes.
You cannot map more than 11 stops on a single =ROUTE_LINK() URL because Google Maps limits multi-stop navigation URLs to 10 waypoints plus the final destination. To handle larger workloads, you must break your dispatch sheet into separate batches for each driver. You can use the =VISIT_ORDER() formula to sequence a larger list of 50 stops, then split that optimized list into separate 11-stop link batches.
You can share routes by generating standard URLs in your sheet and sending them directly to your drivers via text or email. Formulas like =LOGBOOK_LINK() and =ROUTE_LINK() output standard web links that anyone can open, meaning you do not need to buy software licenses for individual crew members. Drivers simply open the link on their mobile browser to view their stops and mark their progress.
The =INSTAMAP() formula returns a live, hosted map URL that automatically reflects any changes made to your Google Sheet. If a dispatcher updates an address in cell A14 or changes the visit status of a stop, the hosted map updates to show the new location or marker color. This ensures field crews looking at the shared link always see the latest dispatch data without needing a manual refresh.
Turn your existing Google Sheet into an unlimited dispatch system. Use InstaMaps to sequence stops, build live maps, and share links with your crews for free.
Install InstaMaps free