How to Use Heatmaps to Find Untapped Demand in Your Service Region
To find untapped demand in your service region, export your booking addresses, plot them on a density heatmap, then look for the clusters of enquiries that fall outside your current territory lines or consistently land on a single overloaded tech. Those cold spots and overflow zones mark where unmet demand already exists — before you spend a dollar on ads.
Plot your booking addresses on a density heatmap, then look for enquiry clusters that sit outside your territory lines or pile onto one overloaded tech — those are your untapped demand zones.
Why most service businesses miss demand that is already in their data
A 12-tech HVAC company covering a mid-sized metro doesn't have a marketing problem. It has a geography problem. Leads come in from every direction, but the booking data lives in a spreadsheet, a CRM, or a dispatch system — never on a map. When you can't see where enquiries are coming from, you can't see the ZIP codes that keep requesting jobs you're turning down because "no one covers that area."
The heatmap is simply a way of making that invisible geography visible. It doesn't require expensive software. It requires the addresses you already have and 20 minutes to plot them.
The same logic applies across every segment. A mobile grooming van that keeps getting requests from the east side of town — but has no Tuesday route out there — is leaving van-capacity money on the table every week. A pool service company with 80 stops concentrated in three neighborhoods but enquiries trickling in from a fourth is looking at a natural expansion zone. A cleaning crew whose Monday jobs are spread across 18 miles is burning crew time that a heatmap would immediately surface as a re-zoning problem.
How to map your booking heatmap in 6 steps
- Export every booking address from the last 6–12 months.
- Add declined, unanswered, or out-of-area enquiries as a second layer.
- Geocode the addresses into latitude/longitude pairs (Google Sheets + a geocoding add-on takes under 5 minutes for 500 rows).
- Upload to a free heatmap tool — Google My Maps, Kepler.gl, or Datawrapper all work.
- Toggle between accepted bookings and declined/unanswered enquiries to see the gap.
- Draw a circle around any dense cluster that sits outside your current territory lines.
Reading the map: three patterns that mean money
The cold spot with warm enquiries. You have zero accepted bookings in a cluster of ZIP codes, but your second data layer shows 15 declined or unanswered enquiries from those same addresses over six months. That is not a territory with no demand — it is a territory with no coverage. A competitor is taking every one of those jobs.
The overloaded edge. One tech's territory contains 60% of your bookings but only covers 30% of your geography. The overflow enquiries along the edge of that territory are going unanswered or being pushed to a tech 40 minutes away. That edge is where your next hire or your next territory redraw should start. This is exactly the problem that techs driving past each other's jobs creates — and it starts with a territory map that hasn't been updated since you hired your third person.
The seasonal surge zone. A roofing company plotting enquiries by month will often find that storm-adjacent ZIP codes light up hard for 6–8 weeks, then go cold. That is a signal to build a temporary territory for surge season rather than leaving those bookings to whoever answers the phone first. For a deeper look at handling that exact scenario, see how roofing companies handle inbound booking after a storm.
Turning the heatmap into territory decisions
A heatmap tells you where demand is. Territory decisions are what you do about it. The practical options are:
- Extend an existing tech's zone into the cold-spot cluster — if the drive time math works. Use the rule of thumb that a tech doing 4–6 jobs a day shouldn't spend more than 20% of their day in windshield time. If the new ZIP codes push past that, you're solving demand by burning capacity.
- Create a new territory and hire into it. The heatmap gives you the business case: "We have had 23 unanswered enquiries from these five ZIP codes in the last 90 days at an average ticket of $340. That's $7,800 in confirmed demand before we post the job."
- Redraw existing territory lines to shift the overloaded tech's edge jobs to a neighbouring tech who has headroom. A territory-based assignment model makes this surgical — change the zone boundary in your booking tool and the right enquiries start routing automatically.
Once you've redrawn the territories, the booking tool needs to reflect them immediately. In Cartoply, you draw territories as freehand shapes, radius circles, or ZIP/county lists directly on the map. When a customer enters their address at booking, they're routed to the tech whose territory contains that address — no dispatcher decision required. If you're currently using a generic scheduling tool that ignores geography, the HVAC scheduling software page shows what territory-aware booking looks like in practice across a real trade workflow.
What to include in your demand audit checklist
Run this audit quarterly. It takes about 45 minutes once your geocoding step is set up as a reusable template.
- ✅ Accepted bookings by address, last 90 days
- ✅ Declined or unserviced enquiries by address, same period
- ✅ Bookings that required a tech to cross a territory line (a signal the boundary is wrong)
- ✅ Average drive time per tech per day — flag anyone above 90 minutes total
- ✅ Revenue density per square mile by territory (total job value ÷ territory area)
- ✅ ZIP codes with 3+ enquiries but 0 accepted bookings in the period
- ✅ Seasonal overlays: compare Q2 this year vs Q2 last year to catch growth corridors
Revenue density per square mile is the metric that surprises most owners. A large rural territory might look impressive on a map but generate $4,200/month. A dense suburban zone half the size generates $11,000/month. That comparison alone tells you where to concentrate your next hire and where to consider a tighter service radius.
Connecting the heatmap to your booking flow
None of this analysis matters if the booking tool doesn't enforce the territory decisions you make. The most common failure mode: the owner redraws the territories on a map, then forgets to update the booking system — so customers are still being routed to the wrong tech, or to no tech at all.
The fix is to make territory and booking the same system. When a prospect books online, their address is validated against the territory map in real time. If they're in the new ZIP codes you just added to Tech 3's zone, they see Tech 3's availability. If they're outside all territories, the booking form stops and shows your service area message rather than creating a job you'll have to cancel.
That tight loop — heatmap analysis → territory redraw → booking tool update → automatic routing — is what turns a demand discovery exercise into actual revenue. The analysis without the enforcement is just a pretty map.
Ready to enforce your territory decisions at the booking step?
14-day free trial — no credit card required. $7/seat/month after that.
Start free trial →Frequently asked questions
What data do I need to build a service region heatmap?
You need the street address (or at minimum the ZIP code) of every booking, enquiry, or declined job request from the last 6–12 months. If you also have the assigned tech and the job revenue, you can build a revenue-density layer on top of the basic demand map. Most field service businesses can pull this from their CRM, dispatch system, or even a Gmail search in under 20 minutes.
What free tools can I use to map booking addresses as a heatmap?
Google My Maps handles up to 2,000 rows and is free — import a CSV of geocoded addresses and switch on the heatmap layer. Kepler.gl (free, browser-based) handles larger datasets and lets you toggle multiple layers. Datawrapper produces cleaner output for sharing with a team or investor. All three accept a simple latitude/longitude CSV that Google Sheets can generate with a geocoding add-on.
How do I find ZIP codes with demand but no coverage?
Export your declined, unanswered, or out-of-area enquiries as a separate layer from your accepted bookings, then plot both. Any ZIP code cluster that appears in the enquiry layer but is absent from the bookings layer is a coverage gap — demand exists, but no tech is capturing it. Three or more enquiries from the same ZIP in a 90-day window is a reliable signal that the demand is real and recurring, not random.
How often should I run a service region demand audit?
Quarterly is the right cadence for most field service businesses. Run it at the start of each season so territory decisions are made before demand spikes, not during them. If you're in a high-growth market or adding new techs, run it monthly until your territory map stabilises. The geocoding step is the only time cost — once that template is set up, the analysis itself takes under an hour.
Get field service tips in your inbox
Scheduling, dispatch, and territory strategy for home service teams. No spam, unsubscribe anytime.
By subscribing you agree to receive emails from Cartoply. Unsubscribe anytime. See our Privacy Policy.