To build a viewing schedule route in real estate, geocode your property addresses, then apply =VISIT_ORDER() to calculate the most efficient driving sequence. Finally, generate individual turn-by-turn navigation legs using =ROUTE_LINK() for each consecutive pair of properties.
This setup is for solo agents and brokerage administrators managing dispersed property portfolios, such as a 200-home farm split across five crews. Instead of manually plotting stops on a map, you end the day with a sheet that automatically sequences your 47 viewing stops and outputs clickable navigation links.
- →A poorly sequenced viewing schedule adds unnecessary driving time between properties.
- →InstaMaps provides custom Google Sheets formulas to sequence and route property viewings automatically.
- →Use =VISIT_ORDER() to calculate the most logical driving sequence for a list of properties.
- →Use =ROUTE_LINK() to generate a Google Maps navigation link for up to 11 stops per route.
- →The InstaMaps add-on is free and includes 100 lookups per day (1,000 with a free email unlock).
- →Formulas can be inserted via the sidebar under Extensions > InstaMaps > Enable formulas without typing.
The problem with unsequenced viewings
Agents scheduling 5 to 10 property viewings in a single afternoon often default to sorting their lead list by postcode. This approach ignores actual road layouts, one-way systems, and traffic choke points. Sorting alphabetically by postcode frequently forces backtracking across neighbourhoods, turning a two-hour loop into a four-hour slog.
When managing a large real estate farming campaign, inefficient routes compound rapidly. To build an accurate viewing schedule route, real estate teams need a method that calculates true driving sequences rather than relying on postal code proximity.
InstaMaps is a free Google Sheets add-on that calculates these exact driving sequences directly inside your spreadsheet. Instead of manually pinning addresses into a separate mapping application, you can sequence your viewing day and generate accurate driving directions using specific spreadsheet formulas.
Preparing your property data for routing
Start with a raw export of your property pipeline. Column A usually contains a messy mix of full addresses, partial postcodes, and formatting errors. Before calculating any routes, you must standardise this text into a uniform structure.
In Column B, apply the =CLEAN_ADDRESS() formula. If your raw data sits in cells A2 through A50, select B2 and enter: =CLEAN_ADDRESS(A2:A50). This function strips out redundant apartment numbers, corrects capitalisation, and standardises street suffixes (like changing "St" to "Street"). This prepares the text for accurate processing.
Next, extract the precise latitude and longitude for the entire column. Standard geographic mapping requires coordinates to calculate driving distances. In Column C, apply the =GEOCODE() function to your cleaned addresses: =GEOCODE(B2:B50). This processes your cleaned text and returns accurate coordinate pairs.
Keep in mind the free tier of InstaMaps allows 100 lookups per day, which increases to 1,000 lookups per day with a free email unlock. If you are preparing data for a 200-home farm managed by 5 crews that exceeds 1,000 properties, you will need to process your list across multiple days or use pre-built templates at get-instamaps.com/templates.
To speed up this initial setup, open the sidebar via Extensions > InstaMaps > Enable formulas. The sidebar inserts formulas without typing, and its Build-the-workflow button writes whole chains for you automatically.
Sequencing properties with =VISIT_ORDER()
Once you have accurate coordinates in Column C, you need to sequence them into a logical driving order. The =VISIT_ORDER() function evaluates your coordinates and assigns a chronological viewing number based on the shortest driving path between stops.
The syntax requires a range of coordinates. If your coordinates are listed in cells C2 through C50, select D2 and enter: =VISIT_ORDER(C2:C50). This formula outputs an integer representing the optimal sequence. The first property to visit will return a 1, the second a 2, and so on.
To arrange your actual itinerary, you must sort the spreadsheet based on this new output column.
Highlight your entire dataset, including the headers (A1 to E50).
Go to Data > Sort range.
Check the "Data has header row" box.
Sort by Column D (the VISIT_ORDER output) in ascending order.
Creating navigation links with =ROUTE_LINK()
Your spreadsheet will now rearrange to display properties in the exact sequence you should drive them. With your rows physically sorted by Column D, you need a way to send these directions to your phone or sat-nav. The =ROUTE_LINK() function pieces your sorted coordinates together into an official Google Maps URL.
Apply the formula to your newly sorted data. If your sorted coordinates remain in cells C2 through C50, select E2 and enter: =ROUTE_LINK(C2:C50). This generates a clickable hyperlink. Clicking it opens Google Maps with your itinerary pre-loaded, navigating from the first coordinate to the second, and so on.
However, you must account for a strict technical limitation: this specific formula uses Google Maps' official URL scheme, which enforces a maximum of 11 stops (1 origin, 9 waypoints, 1 destination) per link. If you have 12 consecutive viewings, a single =ROUTE_LINK() will fail or truncate the journey. You must break your viewing schedule route into logical legs.
For a heavy viewing day of 47 stops, you cannot generate one master link. You must segment your coordinate ranges. You would generate the first leg using =ROUTE_LINK(C2:C12), covering stops 1 through 11. You would then start a new formula in E13: =ROUTE_LINK(C13:C23) to cover stops 12 through 22. You repeat this process every 11 rows.
This segmented approach ensures your navigation links never break. If you prefer a visual overview of the entire 47-stop day rather than segmented driving links, replace =ROUTE_LINK() with =INSTAMAP(C2:C50). This function returns a live hosted shareable map URL that updates when the sheet changes. You can share this map URL with clients or team members so they can view the daily progress on their own devices.
Worked example: Routing 47 viewings across 5 crews
Consider a brokerage managing a 200-home farm, scheduling 47 viewings for a single Saturday with 5 available crews. Divide the 47 addresses in Column A, assigning rows A2:A11 to Crew 1, A12:A21 to Crew 2, A22:A31 to Crew 3, A32:A41 to Crew 4, and A42:A48 to Crew 5.
First, generate the optimal sequence for each crew. If Crew 1 starts at the agency office at 12 Mayfair Rd, London, enter their assigned addresses into the visit order formula. Place this formula in cell D2: =VISIT_ORDER(A2:A11, "12 Mayfair Rd, London"). This calculates the most efficient path between the 10 properties based on driving times, outputting the sorted list vertically. Repeat this for Crew 2 in cell D12: =VISIT_ORDER(A12:A21, "12 Mayfair Rd, London"), Crew 3 in D22, Crew 4 in D32, and Crew 5 in D42.
Next, convert those ordered lists into shareable driving directions. Because =ROUTE_LINK() relies on Google Maps' official URL scheme, it enforces a strict maximum of 11 stops (10 destinations plus the origin). Each crew's 10-property chunk fits perfectly under this cap.
In cell E2, wrap the ordered array inside the routing formula: =ROUTE_LINK(D2:D11). In cell E12, enter =ROUTE_LINK(D12:D21), repeating for E22, E32, and E42. This produces five distinct URLs in column E, one for each crew's mobile device. Agents simply click their assigned link to begin navigation.
If you prefer not to type these functions manually, use the InstaMaps sidebar. Go to Extensions > InstaMaps > Enable formulas. Select your address ranges and click the Build-the-workflow button; the add-on writes the =VISIT_ORDER() and =ROUTE_LINK() chains for you, adjusting cell references automatically down the column.
The routing accounts for one-way streets and standard traffic averages. If a property is a new-build missing from the mapping database, =VISIT_ORDER() will return an #N/A error, which you must fix by correcting the base address in Column A.
Mapping the schedule with =INSTAMAP()
While =ROUTE_LINK() provides turn-by-turn navigation for individual crews, =INSTAMAP() generates a macro-level view for the brokerage office.
In cell G1, enter =INSTAMAP(A2:A48, D2:D48). This formula returns a live, hosted shareable map URL. Plot the 47 properties and their optimised viewing orders. Because the add-on links directly to the spreadsheet, the map automatically reflects any changes made to the sheet's viewing order. If a seller cancels a viewing and you delete row 15, the hosted map updates immediately without requiring a manual refresh.
Administrators can embed this URL in their daily briefing document. Crews can check the master map to see the geographic spread of all 5 teams across the 200-home farm, ensuring coverage without overlap. The map acts as a single source of truth for the day's schedule.
Limits and honest alternatives
The formulas discussed have specific technical constraints. The =ROUTE_LINK() function uses Google Maps' official URL scheme, which enforces a hard limit of 11 stops (10 destinations plus your starting point). If you attempt to pass an array of 15 addresses into =ROUTE_LINK(), the URL will fail to generate correctly, truncating the final stops.
Additionally, the InstaMaps add-on imposes daily quotas. The free tier provides 100 lookups per day. Generating a =VISIT_ORDER() chain for 47 properties consumes a significant portion of this quota. You can increase this limit to 1,000 lookups per day with a free email unlock, which is necessary for brokerages processing large daily schedules. If you exceed your quota mid-route, the formulas will return a quota exceeded error. Check your usage in the sidebar before running the Build-the-workflow button on large datasets.
For agents who only need to route two or three properties, setting up a full =VISIT_ORDER() and =ROUTE_LINK() chain is unnecessary. If you have three viewings, simply select the three addresses in your sheet, copy them, and paste them directly into the Google Maps search bar. Maps will automatically suggest a multi-stop route.
Alternatively, you can generate a single destination link using =WAZE_LINK(A2) if you prefer the Waze interface for real-time traffic avoidance. For a static visual of a single property, =STREETVIEW_LINK(A2) provides a direct URL to Google Street View, useful for clients scouting the neighbourhood before a viewing. You can also download templates at get-instamaps.com/templates to bypass manual sheet setup.
Who this workflow is for
This =VISIT_ORDER() and =ROUTE_LINK() workflow is designed for high-volume operations: showing assistants, buyer's agents with packed weekends, and brokerage coordinators dividing listings among multiple teams. If you manage a 200-home farm and regularly schedule back-to-back viewings, this automated routing saves manual planning time.
However, if you are a solo agent showing one or two properties a week, this setup is overkill. You do not need a multi-crew routing matrix for two stops. This tool is specifically for users managing heavy geographic data who require a systematic approach to territory management.
Connecting this daily viewing routine to a broader [real-estate-farming](/real-estate-farming) strategy is logical. The same coordinate data you use for optimising Saturday viewings can filter your target demographics. You can use the exact add-on limits and routing mechanics to ensure your physical presence matches your geographical targets.
Map your Salesforce accounts in under 5 minutes — no admin setup.
Common Questions
First, list your addresses in column A (A2:A50) and geocode them using =GEOCODE(A2:A50) in column B. Next, calculate the optimal driving sequence by inputting =VISIT_ORDER(B2:B50) into column C; this returns the numeric stop order. Finally, create a navigation link for each leg by referencing the sorted coordinates with =ROUTE_LINK(C2, C3). You can insert these formulas without typing by using the sidebar at Extensions > InstaMaps > Enable formulas, then clicking its Build-the-workflow button.
The =ROUTE_LINK() function relies on Google Maps' official URL scheme, which enforces a strict maximum of 11 stops per link. If you attempt to chain more than 11 properties into a single formula, the URL will fail to generate correctly. To navigate a 47-stop viewing day, you must generate a separate =ROUTE_LINK() for consecutive legs (for example, stops 1 through 10, then 11 through 20).
The InstaMaps add-on is free, and the base tier provides 100 geocoding lookups per day. If you are processing a larger 200-home farm, you can increase this limit to 1,000 lookups per day by completing a free email unlock. This daily quota applies specifically to functions like =GEOCODE() and =REVERSE_GEOCODE() that fetch new coordinate data.
Yes, any map generated using the =INSTAMAP() function returns a live hosted shareable map URL that updates when the sheet changes. If you add a new property to your viewing schedule or cancel a stop, the underlying coordinates alter. When the sheet recalculates, the hosted map instantly reflects the newly routed properties without requiring you to manually refresh or regenerate the link.
The =VISIT_ORDER() function analyses your provided latitude and longitude coordinates to determine the shortest practical driving path between properties. For a 47-stop route, it orders the properties mathematically to minimise overall travel distance rather than simply sorting them by straight-line distance from the office. If you need to build specific [real-estate-farming] territories or constrain visits to a specific radius, combine this with =WITHIN_RADIUS() before calculating the visit order.
Stop manually reordering rows and pasting addresses into maps. Use InstaMaps to sequence your viewing day and generate navigation links directly in Google Sheets.
Install InstaMaps free