Booked Is Not Billed
A calendar that is full through August feels like success. It is not the same as revenue. Booked work is a promise. Billed work is money. In a normal trade with steady year-round demand, the gap between the two is a rounding error. In roofing, where demand compresses into a few months and then explodes after a storm, the gap becomes the whole business.
Here is the failure mode. A storm rolls through. Leads pour in faster than you can close them, and you close them faster than your crews can install. Your pipeline swells. It looks like a great quarter on paper. Meanwhile the jobs age. Customers who signed in week one are still waiting in week six, and roofing customers who wait shop around. Some cancel. The insurance clock on their storm claim keeps ticking. The backlog you were proud of is quietly leaking.
The number that matters is not how many jobs you booked. It is how many reached completed status while the season was open.
The Throughput Number
Every roofing business has a real capacity ceiling, and most owners have never written it down. It is completed jobs per crew per week. Not the theoretical max on a perfect dry day with a simple tear-off. The blended average across rain, complexity, drive time, and the odd day a crew is a man short.
Say a residential crew averages three to four average asphalt jobs in a good week and drops to one or two when weather and complexity bite. Treat those as illustrative, because your tear-off mix and market are your own, so run the numbers off your last full season. The point is the shape of it. Your annual revenue ceiling is that weekly throughput times your number of crews times the number of weeks your season stays open. Everything upstream of installation, the leads, the quotes, the signed contracts, cannot exceed that ceiling no matter how hard your phone rings.
Once you see the business as a throughput ceiling rather than a demand funnel, your spending priorities flip.
A booked-out schedule you cannot install through is not a backlog. It is deferred revenue, and some of it walks.
The Cost Of A Standing Crew
A roofing crew is expensive to keep idle. Roofers earned a median wage of about $55,440 a year as of May 2025, roughly $26.65 an hour (BLS), and a crew is several of those wages plus the truck, the fuel, and the overhead that runs whether they lay shingles or not.
A rain day you saw coming is a scheduling input. A rain day you did not is a fixed cost with zero output. So is a crew that shows up to a job the materials never reached, or sits at the shop because the next address was never dispatched. Every one of those is a crew-day you paid for and got nothing back. In a short season, you do not have crew-days to burn. The difference between a shop that clears its backlog and one that drowns in it is often just whether the next dry slot fills the instant a job cancels or a storm passes.
Overbooked Is A Different Failure
Idle crews are one tail. The other is the spike. When a storm hits and every closed deal stacks onto crews that were already full, you get a backlog that ages faster than you can work it. Both tails cost you, and they cost you in opposite directions, which is why the answer is rarely more of any one input.
More salespeople in a spike just widen the mouth of a funnel whose neck is your crew count. You close more, install the same, and the backlog grows. The lever is not the top of the funnel. It is the throughput at the bottom: how fast a signed job moves to a scheduled install, and how completely each crew-day gets used.
Dispatch Discipline Is The Lever
The thing that separates the roofers who clean up after a storm from the ones who choke on their own success is boring. It is scheduling and dispatch discipline. Routing crews to cut drive time. Rebooking a rained-out job into the next open dry slot the same day instead of next week. Making sure materials land before the crew does. Knowing, in real time, which crew-days are still open so a cancellation gets backfilled in minutes, not lost.
At one or two crews, a sharp owner runs this from memory and a whiteboard. Push past three crews through a compressed storm window and the manual version starts dropping jobs and stranding crews, because the human dispatcher becomes the bottleneck. That is where software earns out: it holds the whole board at once and fills the gaps you cannot see fast enough by hand. OptimizeIt runs Core at $79, Plus at $159, and Pro at $239 per month on annual billing; the AI Voice Agent starts at the Pro tier, which matters when the phone is ringing off the hook after a storm and every missed call is a lead a competitor catches.
Measure Completions, Not Bookings
If you take one operating change from this, change the number on your wall. Stop tracking jobs booked. Track completed jobs per crew per week across the season, the gap between booked date and install date, and the share of crew-days that produced billable output. When booked-to-install time shrinks and idle crew-days fall while your close rate holds, your dispatch is working. When the backlog grows but completions do not, you have a throughput problem that no amount of lead spend will fix. See the related read on why roofing has no recurring revenue to understand why every one of these completed jobs has to carry its own weight.
The Honest Take
This is not for the roofer running one crew in a market with steady, year-round demand and no storm spikes. If your calendar never overflows and you have never stranded a crew on a rain day, a whiteboard is fine and dispatch software is overhead you do not need yet. It is also not for the shop whose real problem is the top of the funnel, meaning you genuinely cannot fill a single crew's week. Fix demand first. Throughput math only pays off once your constraint has moved from finding work to installing it fast enough. If you run multiple crews through a compressed season and your backlog ages while your crews sit idle on the wrong days, that is the exact gap this closes.
Frequently asked questions
How many jobs can one roofing crew realistically complete per week?
It depends on tear-off complexity, crew size, and drive time, so treat any single number as illustrative and run your own math. A tight residential crew might finish three to five average asphalt-shingle jobs in a good week and half that in a wet one. The real lever is not the ceiling on a perfect day, it is how many of your booked jobs actually reach completed status during the weeks demand exists.
Why is a fully booked schedule still lost revenue?
Because booked is not billed. If leads arrive faster than crews can install, jobs age in your pipeline while customers shop competitors and warranties on storm damage lapse. Roofers held about 166,900 jobs nationally in 2025 (https://www.bls.gov/ooh/construction-and-extraction/roofers.htm), and labor is the binding constraint in a spike, not demand. A backlog you cannot install through is deferred revenue that some of it walks.
Should I hire more salespeople to handle a storm spike?
Usually no. In a post-storm surge, demand already exceeds what your crews can install, so more closed deals just lengthen the backlog. The constraint is throughput, meaning completed jobs per crew per week, not lead volume. Spend on scheduling and dispatch discipline first. Add sales capacity only once you have proven your crews can absorb more work without jobs aging past the point customers wait.
What does an idle crew on a rain day actually cost?
Roofers earned a median of about $55,440 a year as of May 2025, roughly $26.65 an hour (https://www.bls.gov/ooh/construction-and-extraction/roofers.htm), and a full crew is several of those wages. A rained-out day you did not see coming is fixed labor cost with zero output. The fix is not eliminating rain days, it is having a same-day rebooking plan so the next dry slot fills instantly instead of sitting open.
Is dispatch software worth it for a small roofing shop?
It earns out when your constraint is throughput and your season is short. If you run one or two crews and never miss a beat by memory, you may not need it yet. Once you run three or more crews through a compressed storm window, manual scheduling starts dropping jobs and stranding crews. OptimizeIt runs Core at $79, Plus at $159, and Pro at $239 per month on annual billing; the AI Voice Agent starts at the Pro tier.
How do I measure whether my scheduling is actually improving?
Track completed jobs per crew per week across the season, not total jobs booked. Watch the gap between booked date and install date, and the share of crew-days that produced billable output. If booked-to-install time is shrinking and idle crew-days are falling while your close rate holds steady, your dispatch discipline is working. If your backlog keeps growing but completions do not, you have a throughput problem, not a lead problem.
