Delivery and Accountability
Roofing Lead Routing
Roofing lead routing is the decision process that takes a captured enquiry — a call, a form, or a chat — and determines which contracted roofer should receive it. The decision is built on two inputs: the homeowner's ZIP code and the service they need. Those two together resolve to a territory, and each territory has one assigned roofer under a written agreement. Routing is not a ranking or an auction; it's a lookup against your account's accepted services and territory boundaries.
Because only one roofer is assigned per territory, routing also has to handle the cases where the simple lookup doesn't resolve cleanly: a territory that's paused because the assigned roofer is at capacity, a service request that isn't in that roofer's accepted list, a delivery to the roofer's CRM that fails on the first attempt, or a homeowner who calls back weeks later about the same job. Each of those cases has a defined fallback, and this page walks through what that fallback actually does.
This page is written for the contractor side of that relationship — what you can expect to happen when an enquiry in your territory arrives, what happens if you're at capacity or unreachable, and what to verify before you accept live enquiries into a new territory. It does not expose the internal routing logic, scoring, or admin tools the network uses to manage territories across markets; those stay internal by design.
Whether a specific ZIP and service combination currently has an assigned territory, and whether that territory is open, paused, or already contracted to another roofer, depends on a Roofing Market Review. Routing described here is how the system is built to behave — it is not a confirmation that a given territory is available right now.
Updated 2026-10-03. Terms, prices and availability are set by the written agreement for your market.

How a roofing enquiry finds the correct contracted service territory
Every enquiry is checked against two pieces of information — the property's ZIP code and the service requested — and those two together determine which territory it belongs to. A territory is a defined set of ZIP codes tied to a written agreement with one roofer, not a city name or a radius drawn loosely around a map pin.
The lookup, step by step
- The homeowner's ZIP or town is captured from the call, form or chat.
- The ZIP is checked against the set of ZIPs assigned to a territory.
- If the ZIP matches a territory, the requested service is checked against that territory's assigned roofer's accepted service list.
- If both match and the territory is active (not paused), the enquiry is routed to that roofer's assigned delivery channel.
- If the ZIP doesn't resolve to any active territory, or the territory exists but is paused, the enquiry is held or routed to a waitlist rather than sent nowhere.
A ZIP that's never been captured for a prior enquiry doesn't block the process — the enquiry is still saved, and the ZIP match is attempted with whatever was reported. If the homeowner reports a ZIP that's clearly wrong or a town name instead of a code, that's noted in the record rather than silently guessed into the nearest territory.
Matching repair, replacement and specialist work to eligible partners
A ZIP match alone doesn't route an enquiry — the service requested also has to match what the assigned roofer in that territory has agreed to accept. A roofer who accepts repair and replacement work but not commercial coating, for example, won't receive a coating enquiry even if the ZIP is squarely inside their territory.
Why the service match matters
- It keeps enquiries aligned with the work your team actually wants and is set up to perform.
- It prevents a specialist request — multifamily, industrial, HOA, coating — from landing with a roofer who only does residential repair and replacement.
- It gives the network an honest answer when a service in a territory has no eligible partner yet, rather than forcing a mismatch.
Your accepted-service list is something you set and can review — it isn't inferred from past jobs or guessed from your company name. If a service category isn't on your list, an enquiry for that service in your territory either waits for a different eligible partner to be assigned, or doesn't route at all, depending on how the territory is configured.
If your team adds a new accepted service mid-agreement — taking on multifamily work for the first time, for example — that update is applied going forward, not retroactively to enquiries already captured before the change. Confirm the effective date of any service-list update with your account contact so expectations line up with what actually starts routing.
TEACHING DIAGRAM
ZIP-and-service routing decision path (illustrative example)
- 1Lead A — in-territory repair
ZIP matches an active territory; service is on the assigned roofer's accepted list; routes and delivers successfully.
- 2Lead B — paused territory
ZIP matches a territory currently paused for capacity; enquiry is held on the waitlist, not sent to another roofer.
- 3Lead C — failed delivery
ZIP and service match correctly, but the CRM push fails on the first attempt; the system retries, then falls back to an email/SMS alert.
Using estimator availability without breaking exclusivity commitments
Routing checks your territory and service eligibility — it does not check your estimator's personal calendar or manage crew scheduling. Appointment booking is a separate layer: the public booking page shows the homeowner three to six real open times pulled live from the assigned roofer's calendar, with a live check against Google Calendar so already-booked slots never appear, and the reservation itself is atomic so two homeowners can't claim the same slot.
Where routing and booking meet
Once an enquiry routes to your territory, the homeowner is shown booking options tied to your calendar, not a shared pool across multiple roofers. This keeps the exclusivity commitment intact: the territory routing decision and the calendar availability both resolve to the one assigned roofer, never a mix of partners competing for the same slot.
If your calendar has no open slots visible for the requested window, the homeowner either sees the next available real slot or is offered a callback request instead of a booking. The AI receptionist can record an appointment request without promising a specific slot — it does not fabricate availability to avoid a dead end in the conversation.
- Routing decides which roofer an enquiry belongs to, based on ZIP and service.
- Calendar OS decides which times are actually open for that roofer, checked live against Google Calendar.
- Neither system claims to handle crew dispatch, job scheduling, or ERP functions — those stay outside this platform.
Because booking depends on your calendar being accurate, a stale or disconnected calendar is one of the more common reasons a homeowner sees fewer open slots than you expect, or none at all. Checking that the connected calendar reflects your real availability is a simple step worth confirming whenever booking volume looks unusually low for a territory that should be active.
What happens when a call or lead delivery fails
A failed delivery is treated as an event to recover from, not a lost lead. Every push to your CRM — whether by webhook, Zapier, a native connection, or email/SMS fallback — carries a status: queued, sent, delivered, or failed, and a failed status triggers a retry with backoff rather than silently dropping the record.
The delivery fallback sequence
- The lead attempts delivery through your primary configured channel (CRM integration, webhook, or native connection).
- If that attempt fails, the system retries with backoff rather than immediately giving up.
- If retries don't succeed, an email or SMS fallback delivers the lead details directly so the record reaches a person even if the integration is down.
- A fallback alert notifies your team that the primary delivery path failed, so the integration issue itself can be fixed.
A similar logic applies to calls: if the AI receptionist or ring-first forwarding can't reach a live person for an urgent issue, the system gives the caller an honest message about the failed transfer rather than pretending someone is available, and alerts your team so a next-day or manual handoff can happen through the lead record's timeline.
Delivery failures are logged with enough detail — which channel failed, at what time, and how many retries ran — that a pattern of repeated failures on one integration is easy to spot and escalate, rather than looking like a series of unrelated one-off incidents.
MODEL CALCULATOR
Hypothetical Territory Routing Volume Model
A labeled, hypothetical model to think through routed-lead volume for a territory. Enter your own assumptions — this does not reflect published or guaranteed figures.
- Modeled monthly enquiries in territory (count)
- 24
- Modeled service-eligible enquiries (count)
- 19.2
- Modeled first-attempt successful deliveries (count)
- 17.3
Hypothetical only. ZIP count, enquiries per ZIP, and match/delivery rates are not published figures and vary by market, season and your accepted-service list. A Roofing Market Review reviews actual territory and inventory details for your market.
Handling overlapping ZIP codes, repeat callers and reassignment
Overlapping ZIP codes and repeat callers are handled by the same underlying mechanics as a first-time enquiry: a ZIP and service match to resolve the territory, and a duplicate check against existing opportunities before a new record is created.
Overlapping or boundary ZIPs
Where a ZIP sits near a boundary between two territories, the assignment follows the territory definition on file, not an estimate of which roofer is "closer." If a ZIP genuinely isn't assigned to any territory yet, the enquiry is still captured and flagged rather than forced into the nearest available match.
Repeat callers and existing opportunities
A homeowner who calls twice about the same roof problem is matched against the existing opportunity by phone number, and the system flags the second contact as a duplicate rather than creating a second lead record and billing event. This protects both the territory's lead count and your pay-per-call credits from being charged twice for one job.
Capacity pauses and waitlists
If a territory's assigned roofer pauses intake — for example, because they're at capacity — new enquiries for that territory don't simply vanish. They're held on a waitlist rather than routed to a different, non-contracted roofer, preserving the exclusivity the agreement is built on.
Admin reassignment
Lead caps, the maximum number of roofers routed per market, and reassignment of a territory when an agreement ends are managed through the network's internal admin controls. Those internal mechanics aren't exposed publicly here — what matters to your team is that a territory pause routes to a waitlist, not to a competitor, and that reassignment only happens under the written agreement's terms.
In practice, most reassignment questions come up around contract renewal or when a roofer's capacity changes significantly — expanding into a new crew, or scaling back after a slow season. Those conversations happen through your account relationship, not through an automated rule the platform applies without notice.
Proving a routing rule works before accepting live enquiries
Before a territory goes live for your account, the routing setup for it can be tested the same way any new integration should be: with a scenario test that confirms ZIP and service matches resolve correctly, the right person receives the delivery, and the fallback actually fires when it's supposed to.
What a scenario test covers
- Submit a test enquiry for a ZIP and service inside your territory and confirm it routes to your CRM with a delivered status.
- Submit a test enquiry for a service outside your accepted list and confirm it does not route to you.
- Simulate a failed primary delivery and confirm the retry and fallback alert both fire.
- Submit a duplicate test contact and confirm it's flagged rather than creating a second billable record.
- Confirm your calendar correctly shows (or correctly hides) availability for a test booking request.
Use the routing acceptance worksheet below to document each test and its outcome before a territory is treated as fully live for your account. This is the same kind of verification you'd want from any integration partner — proof the rule behaves as described, not just a verbal assurance.
Documenting these tests also gives both sides a shared reference if a dispute comes up later — for example, if a lead you expected never arrived. Instead of relying on memory of how the integration was supposed to work, you can point to the recorded test outcome and compare it against what actually happened on the live enquiry.
WORKSHEET
Routing Acceptance Worksheet
Use this before treating a new territory as fully live for your account.
0 of 7 checked
EXPLAINER VIDEO · 44 SECONDS
Where a Roofing Lead Goes and Why
Narrated explainer with diagrams drawn for this page. No customer data or private screens are shown.
Video transcript
Routing starts with two facts: the property ZIP and the roofing service needed. The ZIP maps to a territory, and the lead goes to the one roofer assigned to it under a written agreement. If a territory is paused, enquiries go to the waitlist. Lead caps and admin reassignment keep volume matched to capacity. The lead is sent to your CRM. If a send fails, it retries and a backup alert goes out, so the lead is never lost. You choose your services and ZIPs, and demand is reviewed per market. Book a Roofing Market Review to check your area.
STRAIGHT ANSWERS
Questions roofers ask
Can a roofing lead be routed by both ZIP code and service type?
Yes. Routing checks the ZIP against territory boundaries first, then checks the requested service against the assigned roofer's accepted service list. Both have to match before an enquiry routes to you.
What happens when my assigned salesperson does not answer?
For calls, an urgent transfer attempt is made, and if it fails, the caller gets an honest message and your team gets an alert, with next-day handoff available through the lead record's timeline. For lead delivery, a failed CRM push retries with backoff, then falls back to email or SMS so the lead isn't lost.
Will a capacity pause change the exclusivity of my territory?
No. Pausing intake sends new enquiries to a waitlist rather than routing them to a different roofer. Exclusivity under your written agreement is preserved; the territory simply isn't actively receiving new enquiries while paused.
What happens if a ZIP doesn't match any existing territory?
The enquiry is still captured and flagged rather than discarded or forced into the nearest territory. It's reviewed separately, since no active territory currently covers it.
How are duplicate or repeat-caller enquiries handled?
Enquiries are matched against existing opportunities by phone number and flagged as duplicates rather than treated as new billable leads, protecting both lead counts and pay-per-call credits from double charges.
Does routing include crew scheduling or dispatch?
No. Routing determines which roofer an enquiry belongs to; a separate Calendar OS shows live, real appointment availability for that roofer. Neither function manages crew-level scheduling, dispatch, or connects to an ERP.
Can I see the internal rules the network uses to assign territories?
No, the internal routing formulas and admin reassignment tools aren't exposed publicly. This page describes the behavior you can expect as a contracted roofer — territory matching, waitlist on pause, fallback on failed delivery — not the internal administration behind it.
See what exists in your market
A Roofing Market Review is a short call. We check which ZIPs and services you want, whether a network asset or territory is open there, and which plan options would apply. No lead counts or results are promised.
