BlogSales Operations

How to Build a Customer Location Map from a Spreadsheet

10 July 2026·8 min read

To build a customer location map from a spreadsheet, geocode your addresses in Google Sheets using =GEOCODE(A2:A50) and generate the map using =INSTAMAP(B2:B50, C2:C50). This creates a live, shareable URL that updates automatically when you edit account details, add new leads, or change statuses.

This is for field sales reps, regional managers, and operations teams tracking accounts across a 200-home farm or managing a 5-crew deployment schedule. You skip the per-seat licenses charged by mapping CRMs like Badger and keep your data inside a spreadsheet you already own, resulting in a zero-cost visual territory map.

TL;DR
  • Sales and ops teams usually pay per-seat fees for mapping software just to visualize spreadsheet data.
  • You can build a customer location map directly in Google Sheets using the free InstaMaps add-on.
  • Use =GEOCODE(A2:A500) to get coordinates, then =INSTAMAP(B2:B500, C2:C500) to generate a live, hosted map URL.
  • Color-code the map by account status or revenue by pointing the formula to a specific column in your sheet.
  • Use =WITHIN_RADIUS() to filter accounts or find opportunities near a specific sales rep or event.
  • The base tier provides 100 lookups per day (1,000/day with a free email unlock).
  • Share the generated map link with your team or embed it in a report without buying extra software licenses.

The per-seat trap in account mapping

Most field sales teams already have their customer data in a CSV export or CRM sync. Yet, standard routing and mapping platforms like Badger Maps charge a per-seat subscription-often $49 to $95 per user per month-simply to visualize the exact spreadsheet you already own. When an operations manager needs a customer location map to analyze account distribution, assigning per-seat licenses to five field reps, a sales manager, and an operations analyst means paying recurring monthly fees for static CRM extracts.

This is the per-seat trap: you are billed for the viewers of the data rather than the processing of the data. If an inside sales rep or an operations manager just needs to look at the map to plan inventory drops or balance territories, adding them as a viewer forces you into another software seat license.

A Google Sheets workflow sidesteps this by separating the data processing from the map viewing. Instead of paying for eight users to access a proprietary mapping platform, you run an array formula like =GEOCODE(A2:A500) in a single Google Sheet. You then generate a live, hosted map URL using =INSTAMAP(B2:C500, E2:E500). The resulting URL can be pasted into an email, a Slack channel, or a Google Doc. Anyone with the link can view the map, filter by status, or see the color-coded pins for free. The ops team pays zero per-seat fees for viewers because the map is rendered via the add-on and hosted on a shareable URL.

Step-by-step: Geocode your customer data

To build a customer location map, you must first convert your text-based addresses into latitude and longitude coordinates.

The add-on is free, but daily lookup limits apply to prevent quota abuse. The standard free tier provides 100 lookups per day. If your spreadsheet contains 450 accounts, processing the entire column will hit the daily limit after the first 100 rows, returning a quota error for the remaining 350. To process larger CRM extracts, use the free email unlock inside the add-on, which raises the daily limit to 1,000 lookups per day. You can process 1,000 rows every 24 hours.

If your CRM export contains messy formatting-such as missing commas or combined fields-run =CLEAN_ADDRESS(A2:A500) in an adjacent column first. Once your coordinate pairs populate, the data is spatially enabled and ready to be passed into the map function.

  1. Open your Google Sheet containing your raw CRM export or account list.

  2. Install the InstaMaps add-on and open the sidebar via Extensions > InstaMaps > Enable formulas. The sidebar includes a Build-the-workflow button that can write whole formula chains automatically.

  3. Assuming your addresses sit in column A, spanning rows 2 through 500, select cell B2 and enter: =GEOCODE(A2:A500). The add-on reads the text strings (e.g., "1600 Amphitheatre Pkwy, Mountain View, CA 94043") and outputs exact coordinate pairs.

  4. If your CRM only provides postal codes, you can use =ZIPCODE(C2:C500) or =ZIP(C2:C500) to get the central coordinates for those postal codes instead of street-level points.

Generate your live customer location map

Once your data is geocoded, the next step is to render the actual customer location map. The =INSTAMAP() function takes your coordinates, generates a map, hosts it on a live URL, and updates automatically whenever your Google Sheet changes.

Because you passed column E (status) into the second parameter of the formula, the map automatically color-codes your pins based on that data. Active accounts might appear blue, Prospects yellow, and Churned accounts red. If a sales rep updates a prospect to "Active" in row 42 of the spreadsheet, the pin on the hosted map URL automatically changes from yellow to blue on the next refresh.

You do not need to adjust map settings manually. The visualization is entirely driven by the sheet's underlying data. If you need to highlight a specific subset of accounts, such as those within a certain sales radius of a target anchor account, you can append a filter or use the =WITHIN_RADIUS() function. For example, =WITHIN_RADIUS(B2:B500, B2, 50) will identify which accounts sit within 50 miles of the coordinate in cell B2.

  1. Locate the column containing your geocoded coordinates (e.g., column B).

  2. Identify the column containing your account statuses or categories (e.g., column E with "Active", "Churned", "Prospect").

  3. In an empty cell, enter the INSTAMAP formula, passing both the coordinates and the status columns: =INSTAMAP(B2:B500, E2:E500)

  4. Press Enter. The cell returns a live hosted shareable map URL. Clicking this link opens a fully interactive map in any browser.

Worked example: 200-account territory farm

Consider an operations manager, Chris, managing a territory farm of 200 home service accounts divided among five field reps (Alexander, Sarah, David, Maria, John). Chris exports the raw CRM data into a Google Sheet structured with the following columns: Column A (Account Name), Column B (Full Address), Column C (Assigned Rep), Column D (Account Status), and Column E (Geocoded Coordinates).

Chris runs =GEOCODE(B2:B201) in Column E to get the coordinates for all 200 rows. Because 200 lookups exceeds the 100 lookups/day standard limit, Chris uses the free email unlock to access the 1,000/day allowance.

To build the customer location map, Chris uses the =INSTAMAP() function, referencing the coordinate column and the rep assignment column: =INSTAMAP(E2:E201, C2:C201). This generates a map where pins are color-coded by the assigned rep. Alexander’s 40 accounts appear as blue pins, Sarah’s as green pins, and so on. The map dynamically updates: if Chris reassigns 10 accounts from John to Maria in the spreadsheet, the URL instantly reflects the new color assignments.

To create individual maps for each rep’s daily routing, Chris filters the sheet by a specific rep (e.g., Alexander) and generates a targeted URL for just those rows. Because the data lives in the Sheet, Chris can also use =VISIT_ORDER() to sequence stops, or =ROUTE_LINK() (which uses Google Maps' official URL scheme, max 11 stops) to generate turn-by-turn driving directions.

Finally, Chris needs to distribute these maps in a weekly operations report. He copies the cell output from the =INSTAMAP() formula and pastes the URL into a Google Doc. Instead of taking screenshots of maps or attaching heavy PDF files, the weekly report contains a live hyperlink. When the sales director clicks the link on Friday morning, they see the exact real-time status of all 200 accounts in the farm, reflecting any edits the reps made on Thursday afternoon.

Filtering accounts with WITHIN_RADIUS

To isolate accounts near a specific hub, trade show, or sales rep, apply the =WITHIN_RADIUS() function. This formula checks a range of coordinates against a fixed center point and a specified distance, outputting a clean TRUE/FALSE array.

Assume your 250 accounts are listed in rows 2 through 251. After running =GEOCODE(C2:C251), your latitude and longitude data sits in column D. If your regional depot coordinates are pasted into cell G1 (formatted as "lat, long"), and you want to find every account within a 45-mile driving radius, use:

=WITHIN_RADIUS(D2:D251, G1, 45)

If you paste this into E2, it returns a boolean value for all 250 rows. You can then filter your spreadsheet (Data > Create a filter) to show only the TRUE values. This solves the account coverage overlap problem in field sales. Instead of paying a per-seat subscription to draw circles on a proprietary map, you manage it directly in your sheet.

To handle overlapping territories, set up multiple center points. You can test the same account range against a second rep's starting coordinates in cell H1 using =WITHIN_RADIUS(D2:D251, H1, 45). Any account returning TRUE for both columns indicates a territory overlap that requires manual adjustment. This programmatic filtering keeps your customer location map strictly limited to actionable leads for that specific day or route.

Who this workflow is for

A breakdown of which users benefit from a free Google Sheets mapping workflow versus those who need standalone routing software.

  1. Best for: Operations managers and regional sales leads who already manage their data in Google Sheets. If your daily workflow involves dispatching five crews to 47 stops or segmenting a 500-account territory by zip code, this fits your needs. It generates a live customer location map without forcing a data migration to a standalone CRM.

  2. Not for: Logistics managers requiring complex, multi-day routing optimization with capacity constraints, vehicle types, and time windows. InstaMaps calculates straight-line sorting and travel times, but it does not run the algorithms required for enterprise supply chain routing.

  3. Also good for: Solopreneurs and small teams avoiding per-seat SaaS pricing. Because the add-on runs entirely within Google Sheets, you share the map URL with as many team members as needed without buying additional licenses.

Limits and honest alternatives

InstaMaps will not solve multi-day routing optimization. The =ROUTE_LINK() function uses Google Maps' official URL scheme, which hard-caps a single route at 11 stops. If you need to sequence 45 stops across a 3-day timeline with live traffic re-routing, you need dedicated routing software.

The add-on also caps at 100 lookups per day on the free tier, or 1,000 lookups per day with a free email registration. If you attempt to geocode a 10,000-row database all at once via =GEOCODE(A2:A10001), the sheet will time out. You must process large lists in batches.

To bypass the manual formula setup, use the pre-built frameworks at get-instamaps.com/templates. The sidebar (Extensions > InstaMaps > Enable formulas) also contains a Build-the-workflow button that automatically writes formula chains for radius filtering and map generation.

Try it free

Map your Salesforce accounts in under 5 minutes — no admin setup.

Install Free →

Common Questions

How do I create a customer location map from Excel?

If you use Excel, the fastest method is uploading your XLSX file to Google Sheets and installing the InstaMaps add-on. Excel lacks native mapping formulas, but in Google Sheets you can extract coordinates using =GEOCODE() on your address columns. The add-on's sidebar (Extensions > InstaMaps > Enable formulas) inserts these functions without typing. You then use =INSTAMAP() to generate the hosted map link directly from your imported data.

Can you map addresses in Google Sheets?

Yes, Google Sheets supports custom mapping functions through the InstaMaps add-on. You can clean messy data with =CLEAN_ADDRESS() and then plot the exact coordinates using =INSTAMAP(). Unlike standard Google My Maps, which requires manual CSV uploads, this map updates live as you change cell values or account statuses. You can share the resulting URL or embed it in external reports.

How do I map multiple addresses for free?

InstaMaps is a free Google Sheets add-on that maps multiple addresses simultaneously without per-seat subscriptions. You can plot an entire spreadsheet of 200 rows by setting a single formula like =INSTAMAP(E2:E201, F2:F201). The free tier allows 100 lookups per day, which expands to 1,000 lookups per day with a free email unlock. For routing up to 11 stops, you can use the =ROUTE_LINK() function to open the path in Google Maps.

How do I color code a map based on customer status?

To color code accounts, you pass a status column into the =INSTAMAP() function parameters to group your markers. For example, you can structure the formula to represent 'Active' accounts in green and 'Prospect' accounts in red based on the text in column D. The add-on automatically applies distinct colors to different text values in your specified range. You can view pre-built status mapping templates at get-instamaps.com/templates to skip the setup.

How many addresses can InstaMaps process per day?

The base free tier processes 100 address lookups per day, allowing you to geocode a moderately sized spreadsheet quickly. When you verify your email with a free unlock, this limit increases to 1,000 lookups per day. This is useful for larger operations, such as plotting a 5-crew deployment across 47 stops or filtering a 200-location territory with =WITHIN_RADIUS(). The limits reset daily, making it suitable for ongoing route planning.

Build your customer location map today

Turn your spreadsheet rows into a live, shareable map without paying per-seat mapping software fees. Filter your accounts by radius, color code by deal status, and generate your visual territory in minutes.

Install InstaMaps free