Back to Blog

How do I route HVAC or roofing leads by service area?

6 min read
How do I route HVAC or roofing leads by service area?

HVAC and roofing lead routing has one core problem: contractors have non-overlapping service areas in theory, but messy overlapping territories in practice. A lead from zip 30301 might qualify for three contractors who all claim to serve greater Atlanta. Without a structured routing system, you either call all three (homeowner gets three calls, contractor relationships suffer) or you manually pick one (doesn't scale past 20 leads a day).

Service area routing solves this by evaluating each contractor's territory definition against the lead's location and resolving conflicts through priority ordering, caps, and exclusive mode — all automatically on every lead.

The two approaches to service area definition

Contractors define their service area in one of two ways: a zip code list or a radius from their base location.

Zip list routing is more common and easier to manage. The contractor provides the zips they cover, you load them into the router, and every lead is matched against those zips exactly. Auditing is straightforward — you can see exactly which zips each contractor has claimed. The limitation is that zip boundaries don't always match how contractors actually operate: a contractor might serve homes within 20 miles of their shop, but some of those zips extend further than 20 miles in one direction.

Radius routing uses the contractor's business address as the center point and matches leads that fall within X miles. It's more accurate geographically but requires the router to compute distances using zip centroids or geocoordinates. For rural HVAC contractors whose service areas don't align with sparse zip codes, radius routing reduces false positives and false negatives.

In practice, most home services agencies use zip lists for simplicity, with contractors providing or updating their list periodically. LeadProsper ($499+/mo) and LeadMove ($149/mo) both support zip list routing natively. LeadMove adds radius routing as an additional option without a plan upgrade.

Service type filtering: keeping HVAC and roofing separate

A critical rule: service area routing must be combined with service type filtering. An HVAC contractor who serves zip 30301 should not receive a roofing lead from that zip, even if no roofing contractor is available. Delivering the wrong service type generates an immediate dispute and trains the contractor to distrust your lead quality.

Store service type as a field on the lead (HVAC, roofing, plumbing, electrical) and configure each contractor with the types they accept. The router evaluates service type before checking territory — a type mismatch disqualifies the contractor entirely. For multi-trade contractors (some large outfits handle both HVAC and roofing), the contractor profile lists all accepted types.

Priority ordering when territories overlap

Territory overlap is guaranteed in any metro area with multiple contractors. The resolution mechanism is priority ordering: when two contractors both cover a lead's zip, the router checks the higher-priority contractor first. If they're under their daily cap and within their operating hours, they get the lead. If they're unavailable for any reason, the router moves to the next contractor.

Priority can be static (Contractor A always has priority over Contractor B in Atlanta) or weighted (Contractor A gets 60% of Atlanta leads, Contractor B gets 40%). Static priority is simpler to configure; weighted distribution is more equitable when multiple contractors have similar qualifications and you want to maintain relationships with all of them.

Exclusive mode for HVAC and roofing

HVAC and roofing are high-urgency verticals where exclusive delivery is not optional. A homeowner whose AC fails in August or whose roof is leaking after a storm will commit to the first contractor who responds with a credible quote. Sending that lead to two contractors creates three problems: the homeowner is annoyed by the second call, the contractor who didn't get the job files a dispute, and you spend time arbitrating.

Exclusive mode is a pipeline-level setting that enforces one-lead-one-contractor delivery. Combined with real-time webhook delivery (sub-second from ingestion to contractor CRM), it maximizes the value of each lead and minimizes post-delivery conflicts.

Routing tool comparison for service area routing

ToolZip list routingRadius routingService type filterExclusive modeStarting price
Sheets + ZapierManual lookupNoSeparate zap per typeNo$50-300/mo
LeadMoveYes, nativeYes, nativeYes, per contractorYes, per pipeline$149/mo
LeadProsperYes, Pro tierYes, Pro tierYes, Pro tierYes$499+/mo
Custom buildYesYesYesYes$10,000-30,000 one-time

Overflow and fallback rules

Every service area routing setup needs overflow rules for two scenarios: when no contractor covers the lead's zip, and when all covering contractors are at their daily cap. For uncovered zips, you can either reject the lead (return a 422 with "no contractor available in this area") or route to a regional catch-all contractor who handles out-of-territory leads at a discounted rate. For capped contractors, route to the next-ranked contractor or queue the lead for delivery when a cap resets.

Silent drops — where the lead arrives, no match is found, and the system discards it without logging — are the worst outcome. Every routing engine should log the reason for non-delivery so you can identify coverage gaps and contractor capacity constraints over time.

Service area routing for HVAC and roofing is operationally straightforward once the data model is right — clean zip lists, standardized service type enums, and explicit overlap resolution via priority or weights. The complexity is in the edge cases: overlapping territories, uncovered zips, emergency leads on weekends. Handling those with explicit rules, rather than manual intervention, is what separates a scalable routing system from a daily headache.

Frequently asked questions

what's the difference between zip list routing and radius routing for contractors?

Zip list routing matches a lead's zip code against each contractor's list of accepted zips — simple, fast, and easy to audit. Radius routing computes whether the lead's location falls within a specified distance (e.g., 25 miles) from the contractor's base address. Zip lists work well for urban and suburban contractors whose service areas align with zip boundaries. Radius routing is better for rural contractors whose territories don't map cleanly to zips.

how do I handle HVAC and roofing contractors who cover the same zip?

Assign a priority rank to each contractor in the overlapping zip. When a lead arrives from that zip, the router checks the top-ranked contractor first: if they're under their daily cap and within their operating hours, they get the lead. If they're unavailable, the router moves to the next-ranked contractor. Exclusive mode ensures only one contractor receives any given lead.

can I route HVAC and roofing leads on the same pipeline or do I need separate ones?

Use separate pipelines if the contractor pools are different — your HVAC contractors and roofing contractors are probably different businesses. Separate pipelines mean each has its own routing rules, caps, and priority ordering without interference. If you have multi-trade contractors who handle both, a single pipeline with a service-type filter per contractor works, but it adds complexity.

what tools support zip routing for HVAC and roofing leads natively?

LeadProsper ($499+/mo) supports zip routing on Pro tiers. LeadMove ($149/mo) ships zip list and radius routing combined with service-type filtering on every plan. Sheets + Zapier handles small zip lists manually but breaks past 50-100 zips as lookup complexity grows. Custom builds handle any routing logic but take 4-8 weeks to build and test.

how do I handle HVAC leads that arrive on weekends when most contractors don't work?

Define an after-hours overflow rule: route to a contractor with weekend coverage, queue the lead for delivery Monday morning, or return an error to the source so the form can set expectations. For emergency HVAC in summer heat, a weekend overflow contractor is worth the setup — those leads have the highest urgency and lowest tolerance for a Monday callback.

does exclusivity matter for HVAC and roofing leads?

Yes, more than in most verticals. A homeowner with a burst pipe or a leaking roof after a storm is in a high-urgency situation and will commit to the first contractor who calls. If two contractors call within an hour, the second call feels like spam. Exclusive mode protects homeowner experience and prevents the dispute scenario where both contractors claim the lead and neither got the job.

how do I migrate from a spreadsheet-based zone system to a dedicated router?

Export your existing contractor zip assignments from the spreadsheet. In LeadMove (or LeadProsper), create each contractor and paste their zip list. Set priority order to match your current tiebreaker logic. Switch the webhook URL from your current delivery mechanism to the new router's ingest endpoint. Test with 10 leads across different zips before going live. Most migrations take 1-3 hours including testing.

Start distributing leads smarter today

Ingest. Score. Route. Track. One platform.