To dispatch drivers from Google Sheets, use the InstaMaps add-on to assign territories with =TERRITORY(), generate crew links with =LOGBOOK_LINK(), and track live check-offs with =VISIT_STATUS(). Finally, plot all active drivers and stops on a live map using =INSTAMAP() to monitor real-time progress.
This workflow is built for field service managers and delivery dispatchers running operations from spreadsheets instead of expensive routing software. The end state provides a central dashboard where dispatchers see current driver locations and completed stops, while crews access their daily routes via simple web links.
- →Standardize raw input addresses and convert them to coordinates using =CLEAN_ADDRESS() and =GEOCODE().
- →Assign drivers to specific geographic regions with =TERRITORY() and balance workloads using =CLOSEST_TO().
- →Send drivers their daily manifest via a single dispatch link generated by =ROUTE_LINK() (max 11 stops) or =WAZE_LINK().
- →Track live check-offs in the spreadsheet when drivers click their arrivals using =LOGBOOK_LINK(), =LOGBOOK(), and =VISIT_STATUS().
- →Visualize the entire fleet and pending stops on a live, hosted map URL generated by =INSTAMAP().
- →Access InstaMaps via Extensions > InstaMaps > Enable formulas, or use the Build-the-workflow button to write formula chains automatically.
1. Prep Your Dispatch Sheet & Standardize Addresses
Open a new Google Sheet containing your raw dispatch data. Install InstaMaps from the Workspace Marketplace. The add-on is free, providing 100 lookups per day, which scales to 1,000 daily lookups when you register a free email address within the add-on.
Navigate to Extensions > InstaMaps > Enable formulas to open the right-hand sidebar. You can select a target cell and click a function in the sidebar to insert it without typing. For bulk processing, click the Build-the-workflow button to generate a multi-column formula chain automatically.
Assume column A contains unformatted dispatch addresses (e.g., "123 main st apt 4 los angeles ca 90012"). In cell B2, insert =CLEAN_ADDRESS(A2:A50). This function standardizes casing, corrects suffixes (Street to St), and structures the text for reliable processing.
Once the addresses are clean, convert them into coordinates. In cell C2, input =GEOCODE(B2:B50). This outputs an array of exact latitude and longitude pairs. These coordinates are mandatory for calculating distances and assigning territories.
If a row fails, check for missing ZIP codes or Suite numbers. If you hit the lookup quota, cells return a limit error, halting further processing until the daily reset. Standardizing addresses with =CLEAN_ADDRESS() first prevents the geocoder from failing on formatting typos. You can bypass manual template creation by downloading pre-built sheets at get-instamaps.com/templates.
2. Assign Territories and Crews via Formulas
With coordinates in columns B and C, divide your 200-home farm into distinct geographic zones. Define your territory boundaries by referencing specific cell ranges containing your zone borders. In cell G2, apply =TERRITORY(B2:C50, G2:G4) to categorize each of the 49 stops into North, South, or East regions based on those bounds.
Next, assign crews to the stops within those territories. List your five active crews and their warehouse starting coordinates in range K2:M6 (Crew Name, Start Lat, Start Lon). To automatically assign the nearest driver to each stop, use the =CLOSEST_TO() function. In cell D2, input =CLOSEST_TO(B2:C50, K2:M6). This evaluates the straight-line distance between every stop and every crew's starting location, returning the name of the closest driver from column K.
If a crew is only permitted to work in specific zones, you can filter the second argument of =CLOSEST_TO() to only include drivers assigned to that specific region. For operations that require splitting stops by actual road metrics, use =DISTANCE() to measure the exact miles between the driver and the stop, or =TRAVEL_TIME() for estimated drive minutes.
If a coordinate falls outside your defined boundaries, =TERRITORY() returns a blank cell or error, alerting you to investigate the geocoded address. To verify that a stop genuinely falls inside a driver's standard coverage area, use =WITHIN_RADIUS(B2, K2, 15) to check if the stop is within a 15-mile radius of the crew's home base. This combination of territory mapping and radius checks automates the manual sorting process.
3. Generate Driver Links and Live Check-offs
Once crews are assigned in column D, generate their daily turn-by-turn navigation directly in the sheet. To create a Google Maps routing URL for a driver's entire run, use =ROUTE_LINK(B2:B12) in cell E2. You must note the hard limit: Google Maps' official URL scheme strictly supports a maximum of 11 stops per link. If a crew is assigned 15 stops for the day, =ROUTE_LINK() will fail or truncate the URL. You must break the route into two separate formula ranges, such as one link for stops B2:B12 and a second link for B13:B16. For drivers who prefer a different app, generate a direct navigation URL to a single destination using =WAZE_LINK(B2). This opens the Waze client directly on their phone with the coordinates pre-loaded.
Checking off stops without radio communication requires a data feedback loop. InstaMaps handles this via hosted logbook links. In cell F2, input =LOGBOOK_LINK(A2, D2). This generates a unique, clickable URL for that specific row, tied to the crew name in column D. Send this link via SMS or email.
When the driver reaches the location, they tap the link on their mobile device and press a button to indicate arrival. No app installation or account login is required on the driver's phone.
Back in the master sheet, monitor these check-offs instantly. In cell G2, use =VISIT_STATUS(A2). This formula polls the hosted server, displaying text such as "Pending," "En Route," or "Completed." To capture the exact timestamp of their check-in, use =LOGBOOK(A2) in cell H2, which returns a raw text string of the server time. You can also use =STREETVIEW_LINK(B2) to give drivers a visual reference of the drop-off point, reducing time spent looking for the correct building entrance. As drivers click through their 47 stops across the 200-home farm, the dispatch sheet updates automatically.
4. Generate a Live Master Map with INSTAMAP
To consolidate the text-based sheet into a single visual interface, deploy a master dispatch map. In an empty cell, such as I1, input =INSTAMAP(A2:H50). This formula reads your selected data range and returns a live, hosted, shareable map URL.
Unlike static map images, this URL points to a dynamic webpage. As drivers click their =LOGBOOK_LINK() to check off stops, the =VISIT_STATUS() in column G updates. Because column G is included in the =INSTAMAP() range, the hosted map instantly reflects the change. Completed stops disappear from the active queue, while pending stops remain visible.
You can share this URL with management, dispatchers, or clients. Anyone with the link can view the map in a standard mobile or desktop web browser without needing edit access to your Google Sheet or the InstaMaps add-on installed. Because the map is hosted externally, the mapping rendering does not slow down your spreadsheet's calculation speed or trigger formula errors.
If you add a new batch of stops to the bottom of your sheet, simply expand the range in your =INSTAMAP() formula (e.g., changing the range to =INSTAMAP(A2:H100)). The hosted map automatically ingests the new coordinates. If you need to display this view on a wall monitor in the dispatch center, use =EMBED_MAP() to generate an HTML iframe link. This creates a real-time operational overview of your entire 200-home farm, tracking crew progress visually.
Worked Example: Dispatching a 200-Home Farm Across 5 Crews
Consider a regional ISP installing fiber drops across a 200-home rural farm. Your master sheet tracks these homes in A2:A201, with raw addresses in B2:B201. First, generate coordinates in column C using =GEOCODE(B2:B201). Next, divide the farm into five geographic zones in column D using =TERRITORY(C2:C201, 5). This outputs "Zone 1" through "Zone 5", automatically assigning roughly 40 homes to each crew based on spatial clustering.
Filter Zone 1 into a new tab for Crew A. You have 41 stops. To sequence these stops from the depot outward, run =SORT_BY_DISTANCE(A2:A42). Because standard navigation links limit stop counts, you cannot pass all 41 stops into a single turn-by-turn link. Instead, generate a visual overview using =INSTAMAP(A2:A42) in cell F2. This outputs a live hosted shareable map URL. The crew views all 41 pins on their mobile browser, allowing them to drive their optimized route based on local road knowledge.
To manage check-offs without radio calls, assign a driver logbook using =LOGBOOK_LINK() in cell G2. The driver clicks this link from their dispatch text message to open a mobile web form. As they complete a stop and submit the form, the sheet runs =VISIT_STATUS(B2:B42) in column H. The cell output changes from "Pending" to "Completed" with an exact timestamp. Back at dispatch, the map generated by =INSTAMAP() automatically updates, dropping the completed pins so the dispatcher can visually track the remaining stops.
Limits and Honest Alternatives
Google Sheets dispatch operates under two hard technical limits. First, the free tier allows 100 lookups per day. Registering with a free email unlock raises this ceiling to 1,000 lookups per day. A lookup occurs when the add-on processes a new address-running functions like =GEOCODE(), =DISTANCE(), or =TERRITORY(). Viewing a live =INSTAMAP() URL or clicking a =LOGBOOK_LINK() does not consume your daily quota.
The second hard limit is turn-by-turn routing. The =ROUTE_LINK() formula relies on Google Maps' official URL scheme, which strictly maxes out at 11 stops. You cannot force a 47-stop sequence into a single navigation link.
If your operation requires dispatching more than 11 optimized stops to a single driver, factoring live traffic ETAs, or calculating cargo weight capacities, you have outgrown spreadsheets. You should migrate to dedicated SaaS routing software like Routific, Onfleet, or OptimoRoute. These platforms run algorithms that Google Sheets cannot compute locally.
Who This Dispatch Workflow is For
This setup is ideal for specific operational scales. Here is a breakdown of who benefits from this workflow and who needs a heavier platform.
Ideal user: Local delivery managers handling 5 to 15 crews. If your daily volume is 40 to 50 stops per driver and you want to visualize territories without paying per-seat SaaS fees, this workflow fits perfectly.
Ideal user: Field service ops (HVAC, plumbing, pest control). The =LOGBOOK() function provides enough timestamp tracking to verify technician arrivals without investing in specialized field service management software.
Look elsewhere: Enterprise fleets needing API-level telematics. If you require direct integration with OBD2 vehicle trackers, hard-coded geofencing alerts, or automated routing across a 50-vehicle warehouse, a Google Sheet will not process data fast enough.
Look elsewhere: High-density courier dispatch. If your drivers complete 100+ time-sensitive stops a day and require minute-by-minute traffic recalculation, you need a dedicated routing engine, not a spreadsheet map.
Map your Salesforce accounts in under 5 minutes — no admin setup.
Common Questions
Install the InstaMaps add-on from the Google Workspace Marketplace and open the sidebar via Extensions > InstaMaps > Enable formulas. You can manually type =CLEAN_ADDRESS(A2:A100) to standardize stops, =TERRITORY(B2:B100) to assign regions, and =LOGBOOK_LINK(C2:C100) to create crew links. Alternatively, the sidebar's Build-the-workflow button writes these formula chains automatically. The add-on is free.
You can process up to 1,000 route stops per day using InstaMaps on the free tier, depending on your daily lookup quota. To create turn-by-turn navigation links, use the =ROUTE_LINK() formula, which uses Google Maps' official URL scheme and has a hard maximum of 11 stops per link. For a 47-stop route, split the stops across multiple rows and generate separate links for each driver.
Use =LOGBOOK_LINK(A2) to generate a unique URL for each driver. When a driver taps the link on their mobile device, it opens a web view where they can check off completed stops. The =LOGBOOK() formula syncs these check-offs back to your Google Sheet, recording the exact timestamp for each location without requiring a native mobile app.
Yes. Type =INSTAMAP(A2:A50, B2:B50) into an empty cell to return a live, hosted shareable map URL based on your sheet data. As your drivers update their status via their =LOGBOOK_LINK() or the sheet data changes, the hosted map updates automatically to reflect current locations and completed stops.
The base free tier provides 100 lookups per day. If you verify your account, a free email unlock increases this limit to 1,000 lookups per day. Every time a custom function like =GEOCODE() or =VISIT_STATUS() processes a cell, it consumes one lookup, meaning a 50-stop list uses roughly 50 daily credits. You can find pre-built dispatch templates at get-instamaps.com/templates.
Stop paying for expensive routing software. Use InstaMaps to generate driver links, track visit statuses, and map your entire fleet in real-time.
Install InstaMaps free