How to Forecast Next Quarter's Roofing Revenue (Without Guessing)
On this page
Most roofing owners I talk to forecast revenue the same way they check the weather out the window: gut feel, a glance at last year, and a number that sounds about right. Then payroll, material deposits, and a slow week land all at once, and the "about right" number turns into a cash crunch.
Forecasting next quarter's revenue is not fortune-telling. It is arithmetic applied to things you already know: how many jobs are in your pipeline, how often you actually close them, how long they take to build, how many crews you can field, and how your particular market moves across 13 weeks. Do that arithmetic honestly and you get a number you can staff to, order materials against, and report to a lender or partner without flinching.
This is the working method I'd hand a roofing company doing anywhere from $1M to $30M a year. It starts with your own data, layers in seasonality and storm exposure, accounts for the hard ceiling of crew capacity, and ends with a forecast you can defend line by line. Roof age is a range, not a birth certificate. A storm raises odds, it doesn't guarantee a sale. So the forecast is a band, not a single magic figure, and I'll show you how to build the band.
What a roofing revenue forecast actually is
A revenue forecast is your best estimate of dollars that will turn into recognized, collected revenue inside a defined window, here, the next 13 weeks. It is not your pipeline total. It is not your bid volume. It is not what you hope happens if everything breaks your way.
Three numbers get confused constantly, and keeping them separate is the whole game:
- Bookings (or signed contract value): the dollar amount of jobs you sign in the quarter. A contract signed June 28 is a booking in Q2.
- Revenue (recognized): the dollar amount of work you actually complete and can recognize. That June 28 contract probably builds in July, so its revenue lands in Q3.
- Cash collected: dollars that hit your bank. Deposit at signing, draw at delivery, balance at completion, plus the insurance-claim timing that can stretch a final payment 30 to 90 days past the install.
Most forecasting mistakes come from blending these. An owner sees a strong sales month, books the dollars as "revenue," then can't understand why the bank balance doesn't match. For a quarterly revenue forecast you care about work that gets completed and recognized in the window, regardless of when it was sold. For cash planning you run a separate collections timeline on top.
Decide which one you're forecasting before you start. The method below forecasts recognized revenue, then converts to cash at the end, because recognized revenue is what you staff and buy materials against, and cash is what keeps the lights on.
A quick test for which number you actually need
Ask what decision the forecast drives. If you're deciding how many crews to schedule and how much material to pre-order, you want recognized revenue by week. If you're deciding whether you can make payroll and cover a material PO next Friday, you want cash. If you're reporting growth to a partner, a bonding company, or a lender, they almost always want revenue on an accrual basis, and they'll compare it to last year's same quarter. Build the revenue forecast first; everything else is a transformation of it. Trying to forecast all three with one number is how owners end up confidently wrong on all three.
Recognition method matters for commercial work
Residential re-roofs are short enough that recognition timing barely matters, the job sells, builds, and completes inside a few weeks. Commercial changes the picture. A 60-square TPO job that takes six weeks straddling a quarter boundary should be recognized by percentage of completion: if 40% of the labor and material is in place at quarter-end, recognize roughly 40% of the contract value this quarter and the rest next. Picking a recognition method and holding it is what keeps your quarter-over-quarter numbers comparable. Switch methods mid-year and your growth rate becomes meaningless.
The five inputs every honest forecast needs
You can build a forecast on a napkin if you have five numbers and they're real:
- Weighted pipeline value for work that can complete this quarter.
- Historical close rate by lead source and job type.
- Average cycle time from signed contract to completed install.
- Crew capacity in squares or dollars per week.
- Seasonality and storm adjustment for your market and quarter.
Miss any one and the forecast gets fragile. Skip weighted pipeline and you overcount. Skip cycle time and you book revenue in the wrong quarter. Skip capacity and you forecast more than your crews can physically install. The rest of this walks each input, then assembles them.
Step 1: Build a weighted pipeline (stop counting bids as revenue)
Your pipeline is every open opportunity: inspected-not-sold, proposal sent, verbal yes, contract out for signature. The rookie move is to add up the dollar value of everything open and call it a forecast. That number is fiction, because not every bid closes and not everything that closes builds this quarter.
The fix is to weight each opportunity by two things: probability of closing and probability of completing inside the quarter.
Think of it as two filters in series. A bid has to survive both to count toward this quarter's revenue. A $50,000 commercial job at 60% close probability that won't even start until week 14 contributes $0 to this quarter's revenue forecast, despite being a perfectly real, healthy opportunity. It belongs in next quarter's forecast. Counting it now is the most common way owners overstate the near-term number while feeling like they're being rigorous.
Assign honest stage probabilities
Build stages that mean something and attach a close probability earned from your own history, not from a CRM's default settings. A reasonable starting structure:
| Stage | What it means | Typical close probability |
|---|---|---|
| Lead / not yet inspected | Contact made, no roof seen | 10-20% |
| Inspected, no proposal | You've been on the roof, scope forming | 25-35% |
| Proposal sent | Written number in their hands | 40-55% |
| Verbal commitment | They've said yes, no signature | 70-80% |
| Contract signed, not scheduled | Ink on paper | 95-100% |
Those ranges are a starting point. Replace them with your numbers the moment you have 6-12 months of stage history. If 60% of your "proposal sent" deals actually close, use 60%, not the table.
Weighted pipeline value, worked
Weighted value = contract value times close probability. Run it per deal, then total:
| Deal | Value | Stage | Probability | Weighted |
|---|---|---|---|---|
| Maple St re-roof | $18,000 | Proposal sent | 50% | $9,000 |
| Cedar Ct storm | $42,000 | Verbal | 75% | $31,500 |
| Birch Ln repair | $6,500 | Inspected | 30% | $1,950 |
| Oak Ave full | $28,000 | Contract signed | 100% | $28,000 |
| Pine Dr commercial | $115,000 | Proposal sent | 45% | $51,750 |
| Totals | $209,500 | $122,200 |
The raw pipeline says $209,500. The weighted pipeline says $122,200. The weighted figure is far closer to what you'll actually book, and if you've been forecasting off the raw number you've been overstating by 40 to 70% every quarter.
Now filter for completion timing
Weighted pipeline tells you expected bookings. For a revenue forecast you have to ask: of these, which will complete inside the 13-week window? A $115,000 commercial job signed in week 11 won't be recognized this quarter, it'll mostly land next. Tag each weighted deal with an expected completion week using your cycle time (Step 3), and only count the portion that finishes in-window.
A clean way to handle partial jobs: for multi-week commercial work, recognize revenue by percentage of completion. If the Pine Dr job is 30% built by quarter-end, count 30% of its value (further weighted by close probability) in this quarter's revenue.
Avoid double-weighting and other quiet errors
A few traps that corrupt a weighted pipeline:
- Don't weight a signed contract by a close probability. Once it's signed, close probability is 100%. The only remaining question is completion timing. Salespeople who leave signed jobs at "90%" out of habit drag the forecast down for no reason.
- Don't let two reps both count the same opportunity. Duplicate deals double the weighted value. De-dupe by address, not by contact name, homeowners and adjusters get logged under different names for the same roof.
- Don't weight by the inflated bid you hope to upsell to. Weight by the number actually quoted. If you commonly upsell ridge vent or decking, model that as a separate average-ticket adjustment, not by padding individual deal values.
- Watch the wildcat large deal. One $200,000 commercial bid at 45% can swing a small contractor's whole forecast. When a single deal is more than ~15% of weighted pipeline, report the forecast both with and without it so a reader sees the concentration risk.
Step 2: Nail down your real close rates
Close rate is the single most-fudged number in roofing sales. Owners quote the rate they wish they had. The forecast needs the rate you actually run, and it needs to be segmented, because a blended company-wide close rate hides everything useful.
Segment close rate by source and job type
A referral closes nothing like a cold-knocked door. A retail re-roof closes nothing like a storm-driven insurance job. Track close rate across at least these cuts:
- Lead source: referral, repeat customer, web/inbound, door-knock/canvass, storm canvass, paid lead, list/mailer.
- Job type: repair, retail re-roof, insurance/restoration, commercial.
Real-world spreads you'll commonly see (verify against your own data, these are directional):
| Source / type | Close rate range |
|---|---|
| Referral, retail re-roof | 50-70% |
| Repeat customer | 60-80% |
| Inbound web lead | 25-40% |
| Door-knock canvass (non-storm) | 5-15% |
| Storm canvass (active hail/wind event) | 15-30% |
| Purchased shared lead | 8-20% |
If your mix shifts toward lower-closing sources next quarter, like you're leaning hard on canvassing because referrals dried up, your blended close rate drops even if nothing about your sales team changed. A forecast that uses last quarter's blended rate will miss. Segment, then weight by the mix you actually expect.
The math on close rate
Close rate = jobs won / qualified opportunities, over a defined period. Two cautions:
- Define "qualified" consistently. If you count every tire-kicker as an opportunity, your rate looks terrible and forecasts run low. If you only count proposals sent, the rate looks great but you've hidden the leads that died before proposal. Pick one denominator and hold it.
- Use a trailing window that matches your cycle. A trailing 90-day close rate smooths out the noise of a single hot or cold week. For seasonal businesses, also keep a same-quarter-last-year rate, because spring closes differently than winter.
How many deals before a close rate is trustworthy
Close rate is a ratio, and ratios from small samples lie. A rep who's run 7 proposals and closed 4 does not have a 57% close rate in any meaningful sense, that's noise. As a rough rule, you want at least 25-30 closed-or-lost opportunities in a segment before you trust its rate enough to forecast on, and ideally 50+. Below that, fall back to a broader segment (all retail, rather than retail-by-rep) or a company average, and widen your scenario range to reflect the uncertainty. A brand-new canvassing program with three weeks of data should be forecast conservatively, with a wide band, precisely because you don't yet know its true close rate.
Rep-level vs. company-level rates
Forecast at the level where you have enough data and where the mix is stable. If one rep is leaving and a new hire is ramping, a company-wide rate built on the departing rep's numbers will overstate next quarter. Model the ramp explicitly: a new salesperson typically closes well below the team average for their first 60-90 days. Bake that into the new-sales layer rather than pretending headcount and productivity are the same thing.
Step 3: Measure cycle time (sold-to-completed)
Cycle time is where revenue quietly slips into the next quarter. You sign a job, but it doesn't become revenue until it's built. The gap between those two events decides which quarter the money counts in.
Break the cycle into stages and measure each:
| Stage | What's happening | Typical days |
|---|---|---|
| Contract to material order | Color/product confirmed, financing or deposit cleared | 2-10 |
| Material lead time | Distributor/manufacturer delivery | 3-21 |
| Permit (where required) | Application to issuance | 1-30 |
| Schedule to install | Backlog, weather holds | 3-45 |
| Install duration | On-roof days | 1-5 residential, 5-40 commercial |
| Completion to final inspection | Municipal sign-off, punch list | 1-20 |
Add the realistic middle of each range and you'll often find residential retail running 3 to 6 weeks sold-to-completed, insurance/restoration running 6 to 16 weeks (claim approval, supplement cycles, and scheduling all stack), and commercial running 1 to 6 months.
Why this matters for the forecast
If your average sold-to-completed time is 5 weeks, then anything you sign after roughly week 8 of the quarter probably won't be recognized until next quarter. That has two consequences:
- Most of this quarter's revenue is already in your backlog. The work completing in weeks 1-6 was largely sold last quarter. Your forecast should lean heavily on existing signed-and-scheduled backlog, not on hoped-for new sales.
- New sales late in the quarter feed the next forecast. This is the part owners miss. A great sales month in the back half of Q2 shows up as Q3 revenue. If you forecast Q2 revenue off Q2 sales, you'll be wrong twice, too high this quarter, too low next.
The disciplined version: split your forecast into backlog revenue (signed work that completes in-window, high certainty) and new-sales revenue (weighted pipeline that closes and completes in-window, lower certainty). Backlog is the floor. New sales is the variable layer on top.
The backlog burn-down view
There's a sharper way to see this. Lay your signed-and-scheduled backlog on a week-by-week calendar and "burn it down" against crew capacity. If you have $677,000 of backlog and your crews complete roughly $110,000 of work a week, you have about six weeks of guaranteed work in hand. That number, weeks of backlog, is one of the most useful operating metrics a roofing owner can watch. Climbing backlog (8-12 weeks) means you can ease off lead spend or raise prices; thinning backlog (under 2-3 weeks) means crews will idle soon and you need leads now. Your forecast should show, week by week, where backlog runs out and new sales have to take over. The week that handoff happens is the riskiest part of the quarter, because it's where high-certainty backlog gives way to lower-certainty new sales.
Cycle-time drift to watch for
Cycle time isn't fixed. It stretches when material is back-ordered, when permit offices get slow, when the season's first cold snap shortens installable days, and dramatically right after a storm when every distributor in the region is out of the popular shingle colors. If your forecast assumes a 4-week cycle but you're heading into a quarter where supply is tight, model a longer cycle, which pushes more of your late-quarter sales into the next quarter and pulls this quarter's number down. Owners who don't adjust cycle time for known conditions consistently forecast revenue too early.
Step 4: Respect crew capacity (the ceiling nobody forecasts to)
Here's the forecast killer that spreadsheets ignore: you cannot install more roof than your crews can physically build, no matter how full the pipeline is. Demand-side forecasting tells you how much work wants to happen. Capacity tells you how much can happen. Your revenue is the lower of the two.
Calculate weekly capacity in dollars
Work it bottom-up:
- Squares per crew per day. A seasoned residential tear-off-and-replace crew might average 15-30 squares/day on a standard asphalt roof; steep or complex work drops that hard. Use your trailing average, not a best day.
- Productive days per week. Five scheduled days minus weather and travel. In many markets that realistically nets 3.5-4.5 installable days/week across a quarter once rain is averaged in.
- Crews available. Count real crews you can field, including subs you can reliably call.
- Revenue per square. Your average installed price per square for the job mix expected.
Worked example, three residential crews:
- 3 crews x 20 squares/day x 4 productive days = 240 squares/week
- 240 squares x $450/square installed = $108,000/week capacity
- Over 13 weeks: $1.4M theoretical quarterly ceiling
That ceiling is theoretical because nobody runs at 100% utilization. Schedule gaps, callbacks, warranty work, a crew quitting, and the week a hailstorm pulls everyone onto emergency tarps all erode it. Apply a utilization factor, 70-85% is common, and the realistic ceiling becomes $980K to $1.19M for the quarter.
Use capacity to sanity-check, and to find your real constraint
If your demand-side forecast says $1.6M but your capacity ceiling is $1.19M, your forecast is $1.19M, and the gap is a staffing decision, not a revenue number. Either add a crew, lean on subs, push schedule into next quarter (growing backlog), or accept the cap. A forecast that ignores capacity will have you promising homeowners install dates you can't hit and ordering material you can't lay.
The inverse matters too: if capacity is $1.19M and weighted demand is $700K, your constraint is sales, not crews, and the fix is lead generation, not hiring. Knowing which constraint binds is half the value of doing this exercise.
Capacity isn't just crews
The binding constraint isn't always installation labor. Walk the whole production line and find the actual bottleneck:
- Sales/measurement capacity. If you can only get 30 roofs inspected and quoted a week, that caps how much pipeline you can even create, regardless of crew availability.
- Production/scheduling staff. One overloaded production manager ordering materials and booking inspections can throttle the whole company. A crew can't install a job that never got its material ordered.
- Dumpster and material logistics. In a busy stretch, dumpster availability and delivery slots become real limits.
- Cash to float material. If you buy material before collecting the deposit or insurance check, your working capital caps how many jobs you can have in flight at once. This one bites fast in a storm surge.
Forecast to whichever ceiling is lowest. A company with five crews but one production coordinator may be coordinator-constrained, and adding a sixth crew does nothing for the forecast.
Modeling a capacity change mid-quarter
If you're hiring or adding a sub crew partway through the quarter, don't apply the new capacity to the whole 13 weeks. A crew hired in week 5 contributes for 9 weeks, minus a ramp where they run slower than veterans. Model it week by week: weeks 1-4 at three crews, weeks 5-13 at three-and-a-half effective crews. The same goes for losing a crew, model the gap, not an average.
Step 5: Adjust for seasonality and your market's calendar
Roofing revenue is profoundly seasonal, and the shape of the curve depends on where you operate. A forecast that spreads annual revenue evenly across four quarters is wrong everywhere.
Build a seasonality index from your own history
Pull three years of monthly revenue. For each month, compute its share of the annual total, then average across years. That gives a seasonal index. A typical northern-tier asphalt market might look like:
| Quarter | Share of annual revenue (illustrative northern market) |
|---|---|
| Q1 (Jan-Mar) | 10-15% |
| Q2 (Apr-Jun) | 28-33% |
| Q3 (Jul-Sep) | 35-40% |
| Q4 (Oct-Dec) | 18-25% |
Southern and storm-belt markets flatten this curve, you can install most of the winter, and the spring hail season can spike Q2 hard. The point isn't the specific numbers, it's that you build your own index and apply it. If Q3 is historically 38% of your year and you're forecasting Q3, your annual run-rate divided by four understates it badly.
Don't forecast off a single trend line through seasonal data
A common error is fitting a straight-line growth trend to monthly revenue and extending it. Because the underlying data is seasonal, the trend line lies in every individual month. Deseasonalize first (divide each month by its seasonal index), fit the trend to the smooth series, then re-apply the index to the forecast period. It sounds fussy; it's the difference between a forecast that's directionally right and one that's confidently wrong.
A worked seasonality adjustment
Suppose your trailing-twelve-months revenue is $4.0M, a flat run-rate of $1.0M per quarter. You're forecasting Q3, which your three-year index says is 37% of annual revenue. The naive forecast is $1.0M. The seasonally-adjusted base is 0.37 x $4.0M = $1.48M. That's a 48% difference, the gap between a forecast that has you understaffed all summer and one that's right. Then layer growth on top: if you're trending up 12% year over year, multiply by 1.12 for a seasonally-and-growth-adjusted Q3 expectation of about $1.66M, which you then reconcile against your bottom-up pipeline-and-backlog build and your capacity ceiling. When top-down (seasonal index) and bottom-up (pipeline) land close, you can trust the number. When they diverge a lot, one of them is wrong, and finding out which is exactly the conversation worth having before the quarter starts.
Weather-shortened weeks within the quarter
Seasonality also shows up inside the quarter as installable days. Early Q2 in a northern market still loses days to cold and mud; late Q4 loses them to early snow. Don't spread capacity evenly across 13 weeks if the weather won't let you. Front-load or back-load your installable-days assumption to match the season's shape. This is where a generic forecast and a local one diverge: a contractor in Phoenix and one in Minneapolis forecasting the "same" Q4 are forecasting completely different installable calendars.
Step 6: Model storm exposure honestly
For any contractor doing storm-restoration work, weather is the largest swing factor in the forecast, and the hardest to predict. You can't forecast whether a hailstorm hits your service area next quarter. You can forecast the baseline and treat storm work as an upside band with a probability attached, never as a base-case certainty.
Separate base revenue from storm-contingent revenue
Structure the forecast as:
- Base case: retail, repair, referral, and already-signed restoration backlog. This is what happens with normal weather.
- Storm upside: incremental revenue if a qualifying event hits your area. Model this as a range with a likelihood, e.g., "15-25% chance of a hail event in the quarter that drives $300K-$600K of restoration work over the following 90 days."
Never fold an un-occurred storm into your base forecast. If you've staffed and bought materials assuming a storm that doesn't come, you're carrying cost against revenue that never showed.
Use historical storm frequency, not hope
Your own market has a hail and high-wind climatology. NOAA's Storm Prediction Center and Storm Events Database let you pull historical event frequency for your counties. The Insurance Institute for Business & Home Safety (IBHS) publishes hail and wind research that helps you reason about damage thresholds. Translate frequency into a base-rate: "our metro has averaged 1.8 significant hail days per spring over the last decade." That base-rate is what feeds your storm-upside probability, not a feeling that "we're due."
When a storm does hit, re-forecast immediately
A real event resets everything: demand spikes, close rates on canvass jump, but capacity becomes the hard ceiling and material lead times stretch. The day a storm lands, your old forecast is obsolete. Re-run it with storm close rates, a capacity-constrained ceiling, and a longer cycle time (claim approvals slow things down). The contractors who win storm seasons are the ones who can re-forecast and re-staff in 48 hours, not the ones still working off a January spreadsheet.
Stay on the right side of the line during storm work
Storm restoration is where the legal exposure lives, so a quick compliance note that also protects your forecast. Your role is to inspect, document the damage thoroughly, and prepare an accurate, Xactimate-aligned repair estimate for your own scope of work, then hand it to the homeowner. The homeowner files the claim; the insurer decides coverage. For a fee, you may not negotiate or "handle" the claim, interpret the policy or what's covered, promise a specific payout or approval, promise the deductible is waived or absorbed, advertise a "free roof," or represent the homeowner against their carrier, that's unlicensed public adjusting in most states, and your state Department of Insurance (in Texas, TDI) will tell you exactly where the line sits.
Why this belongs in a forecasting discussion: forecasts built on "we'll get every claim approved" or "the deductible disappears so they'll all sign" are both illegal to promise and statistically false. Model storm restoration as documented-and-estimated jobs that the homeowner files and the insurer may approve, with a realistic approval-to-completion rate, and your storm forecast becomes both compliant and accurate. Promise approvals in your sales process and you've built a forecast on sand and a liability on top of it.
Keep a do-not-say list posted where your canvassers and sales reps can see it, both for compliance and for forecast integrity:
- Don't say "free roof" or "we'll get this covered."
- Don't say "we'll waive/eat/absorb your deductible" (illegal in many states and a federal-program problem on insured properties).
- Don't say "we'll handle the insurance company for you" or negotiate the claim for a fee.
- Don't interpret the homeowner's policy or tell them what is or isn't covered.
- Don't promise a specific payout, approval, or timeline from the carrier.
What you can say and do: "We'll inspect the roof, document any damage thoroughly with photos and measurements, and write you an accurate, Xactimate-aligned estimate for the repairs in our scope. You file the claim; your insurer decides coverage; if it's approved, here's our schedule." That framing is both legal and a more honest forecasting input, because it forces you to apply a real approval rate rather than assuming 100%.
Modeling the restoration funnel
Storm restoration has more funnel stages than retail, and each one leaks. A realistic chain: inspections done, to homeowners who file, to claims the carrier approves for replacement, to jobs that schedule and build. If you inspect 100 storm-damaged roofs, maybe 70 file, maybe 45 get approved for replacement, maybe 40 actually build with you (a few switch contractors or stall). That's a 40% inspection-to-build rate, and it's the number that should drive your storm-revenue forecast, not the 100 inspections. Track each stage so your funnel reflects your market and your documentation quality. Better documentation tends to mean better approval rates, which is the legitimate, compliant lever you control.
Step 7: Assemble the quarterly forecast
Now put the pieces together. A clean structure separates certainty tiers so anyone reading the forecast can see where the soft numbers are.
The layered forecast
| Layer | Source | Certainty | Example |
|---|---|---|---|
| 1. Backlog completing in-window | Signed contracts, scheduled, cycle-time says they finish this quarter | High (90%+) | $620,000 |
| 2. Weighted new sales completing in-window | Open pipeline x close prob x in-window completion | Medium (50-70%) | $310,000 |
| 3. Seasonal/run-rate fill | Repair + repeat volume that reliably shows up but isn't in pipeline yet | Medium | $145,000 |
| 4. Storm upside | Probability-weighted storm-contingent revenue | Low / contingent | $0-$400,000 |
| Base forecast (1+2+3) | $1,075,000 | ||
| Capacity ceiling | Crews x productivity x weeks x utilization | Hard limit | $1,150,000 |
| Forecast (lower of base vs capacity) | $1,075,000 |
In that example the base forecast ($1.075M) sits just under the capacity ceiling ($1.15M), so you're demand-constrained with a little headroom, healthy. Storm upside is reported separately as a contingent band, not added into the committed number.
Express it as a range, because it is one
A single point estimate invites false precision. Report three scenarios:
- Conservative (P25): lower close rates, weather goes against you, a crew underperforms. Maybe 80-85% of base.
- Expected (P50): your assembled base case.
- Aggressive (P75): strong close rates, good weather, a small storm. Base plus part of the storm band.
For the example: conservative $880K, expected $1.075M, aggressive $1.35M. Staff and order to the conservative-to-expected range; treat anything above as upside you can capacity-flex into if it materializes.
How to build the three scenarios without hand-waving
Don't just multiply the expected case by 0.85 and 1.2 and call it scenarios, that's theater. Build each scenario by flexing the inputs:
- Conservative (P25): close rates at the low end of their historical range, two extra rain-out days, one large deal slips out of the window, no storm. This is your "can we make payroll" floor.
- Expected (P50): trailing-average close rates, normal weather, deals complete on their expected weeks. This is the planning case.
- Aggressive (P75): close rates at the high end, dry weather, a backlog deal pulls forward, and a partial storm hit you have spare capacity to absorb.
Writing down the specific assumption behind each scenario does two things: it makes the range defensible to a lender or partner, and it gives you a checklist to watch during the quarter. If by week 4 you've already had the two rain-outs from your conservative case, you know to manage toward the floor, not the middle.
A note on what "P25/P50/P75" really means
You don't need statistics software for this. P50 is the number you'd bet even money on, half your gut says you'll beat it, half says you'll miss. P25 is the number you're 75% confident you'll exceed. P75 is the number you'd only hit one quarter in four. Spacing them honestly is the discipline. If your conservative and aggressive cases are only 10% apart, you're kidding yourself about how much roofing revenue can swing on weather and close-rate luck. A spread of 25-40% between conservative and aggressive is normal for a storm-exposed contractor.
A full worked example, start to finish
Let's run a complete forecast for a hypothetical company, Northgate Roofing, forecasting Q3 (Jul-Sep) from the vantage point of late June.
Company profile: mixed retail and restoration, three residential crews plus one reliable sub crew, $475 average revenue per square, Q3 historically 37% of annual revenue.
Step A: Backlog. Signed-and-scheduled work that cycle time says completes Jul-Sep:
- 41 residential jobs averaging $14,200 = $582,200
- 2 small commercial jobs, % complete in-window = $95,000
- Backlog completing in-window = $677,200
Step B: Weighted new sales. Open pipeline of $1.31M. After applying stage probabilities, weighted pipeline = $640,000. Of that, cycle time says ~65% completes within Q3 (later signings push to Q4): 0.65 x $640,000 = $416,000.
Step C: Run-rate fill. Repair and repeat work that always materializes but isn't in the CRM yet. Trailing Q3 average = $160,000.
Base forecast = $677,200 + $416,000 + $160,000 = $1,253,200.
Step D: Capacity check.
- 4 crews x 22 squares/day x 4 productive days = 352 squares/week
- 352 x $475 = $167,200/week x 13 weeks = $2.17M theoretical
- x 78% utilization = $1.69M realistic ceiling
Capacity ($1.69M) comfortably exceeds base demand ($1.25M), Northgate is demand-constrained with real room to absorb a storm.
Step E: Storm upside. SPC climatology says ~20% chance of a qualifying hail event in their counties during Q3, which would drive an estimated $250K-$500K of documented, homeowner-filed restoration completing within the quarter (the rest spills to Q4 on claim and scheduling lag). Reported separately, not in base.
Step F: Scenario range.
| Scenario | Revenue | Assumptions |
|---|---|---|
| Conservative | $1,065,000 | Close rates run 10% under trailing, two rain-outs, one job slips to Q4 |
| Expected | $1,253,000 | Base case as built |
| Aggressive | $1,500,000 | Strong close, dry weather, partial storm hit absorbed by spare capacity |
Northgate plans payroll and material commitments to ~$1.15M (between conservative and expected), keeps the sub crew on standby for the storm-upside scenario, and revisits the whole thing every two weeks.
Where the data comes from: stop forecasting on stale lists
Everything above runs on data quality. Garbage close rates and a phantom pipeline produce a confident, wrong number. Two data problems sink most roofing forecasts:
- A pipeline full of dead or duplicate opportunities inflates weighted value.
- No forward read on which roofs are actually due, so the "run-rate fill" and storm-upside layers are pure guesswork.
The first you fix with CRM hygiene, covered below. The second is where knowing which roofs in your market are aging out or storm-worn turns a guess into a grounded estimate.
Where RoofPredict fits
This is the one spot where the right data does real work for a forecast. RoofPredict scores the roofs in a contractor's own service area or target list two ways: a roof-age range estimated from aerial imagery (a band like 16-21 years, never a false-precision install date), and a storm-physics model run per individual roof rather than a blanket "this ZIP got hail." Feed it your mailing list or CRM and it enriches each address with those age-and-storm signals, then ranks the doors, routes, and lists so crews work the roofs most likely to be due.
For forecasting specifically, that does two concrete things. It gives the run-rate and pipeline layers a defensible basis, instead of "we'll knock some doors and see," you can estimate, "there are roughly N roofs in our area in the due-now age band, our canvass close rate on aged-out roofs runs X%, so the expected book is N x reachable% x X% x average ticket." And after a storm, it sharpens the storm-upside band by modeling exposure per roof rather than per ZIP, so you're not forecasting restoration revenue off a county-wide assumption when only part of the area actually took damaging hail.
Honest limits, because a forecast built on overstated inputs is worse than none: a roof-age range is a probability, not a measurement, and you'll still find roofs older or newer than estimated. A per-roof storm model raises the odds a roof qualifies, it does not prove damage or guarantee a claim approval. Treat the output as a sharper weighting for your pipeline and storm layers, not as guaranteed revenue. Used that way, it tightens the band; it doesn't eliminate it.
CRM and data hygiene that keeps a forecast honest
The best method fails on dirty data. A short discipline list that pays off every quarter:
- Define stages once, train everyone, audit monthly. If "proposal sent" means different things to different salespeople, your weighted pipeline is noise.
- Force a close-probability and an expected-completion-week field on every open deal. No blanks. A deal with no expected completion date can't be placed in a quarter.
- Purge or recycle stale deals. A "proposal sent" that's sat 90 days is not a 50% deal anymore; either re-qualify it or move it to a long-shot bucket so it stops inflating the forecast.
- Reconcile bookings vs. revenue vs. cash monthly. Watch where signed dollars actually land as completed revenue and as collected cash. The gaps are your real cycle time and your real collections lag.
- Tag every deal with source and job type so you can segment close rates. Untagged leads make segmentation impossible and force you back to a misleading blended rate.
Converting the revenue forecast to a cash forecast
Recognized revenue pays no bills by itself, cash does. Once you have the revenue forecast, run a collections overlay, because the timing differs sharply, especially on insurance work.
A typical residential retail collection pattern:
| Milestone | Timing | % of contract |
|---|---|---|
| Deposit | At signing | 0-50% (varies by state law; some states cap or bar large deposits) |
| Material/start draw | At delivery or start | varies |
| Final | At completion + inspection | balance |
Insurance/restoration stretches this: the first claim check (ACV) may arrive weeks after approval, and the recoverable depreciation (the second check) often lands only after the work is complete, documented, and the carrier releases it, sometimes 30-90 days past install. If a big chunk of your forecasted quarter is restoration, your cash curve trails your revenue curve by a month or more. Model that explicitly or you'll hit a cash trough in a quarter your P&L says was great.
Know your state's rules on deposits and contracts before you assume a collection schedule; several states restrict upfront deposit amounts and require specific contract language. Check your state contractor board and attorney general guidance.
What roofing pros get wrong (the failure modes)
After enough forecasting post-mortems, the same mistakes recur:
- Counting raw pipeline as revenue. The single biggest error. Always weight.
- Booking sales as same-quarter revenue. Ignoring cycle time pulls revenue forward into the wrong quarter. Most of this quarter's revenue was sold last quarter.
- Ignoring capacity. Forecasting more roof than crews can install. Your number is the lower of demand and capacity.
- One blended close rate. Hides a shifting lead mix. Segment by source and job type.
- Baking in an un-occurred storm. Treating hoped-for storm work as base revenue, then staffing for it. Storm is upside, contingent, separate.
- Straight-lining through seasonality. Fitting a trend to raw seasonal data. Deseasonalize, trend, re-seasonalize.
- Promising claim outcomes to inflate close rates. Beyond the legal exposure, approval rates aren't 100%, so any forecast that assumes they are runs high and invites a regulator's attention.
- Forecasting once a quarter and walking away. A forecast is a living document. Re-run it every two weeks, and the same day any storm hits.
- No range. A single point estimate gives false confidence. Report conservative, expected, aggressive.
A repeatable cadence
Forecasting isn't a once-a-quarter event. The owners who consistently hit their numbers run a rhythm:
- Weekly: update pipeline stages and close probabilities; refresh backlog completion dates against the schedule board.
- Biweekly: re-run the full layered forecast; compare to last run; investigate any move over ~10%.
- Monthly: reconcile bookings vs. recognized revenue vs. cash collected; recompute trailing close rates by segment; update the seasonal index if a month closed.
- Quarterly: post-mortem, forecast vs. actual by layer. Which layer was off? Backlog should be tight; if it missed, your cycle-time or schedule data is wrong. If new-sales missed, your close rates or pipeline hygiene need work. Tune the inputs and repeat.
- Event-driven: any qualifying storm in your service area, re-forecast within 48 hours with storm close rates, capacity ceiling, and longer cycle times.
A one-page checklist
Before you call a quarterly forecast finished, confirm:
- Pipeline is weighted by stage probability, not counted raw.
- Each open deal has an expected completion week, and only in-window dollars are counted.
- Close rates are segmented by source and job type, drawn from trailing actuals.
- Backlog is separated from new-sales as its own high-certainty layer.
- The number is checked against crew capacity; the forecast is the lower of demand vs. capacity.
- A seasonal index from your own history is applied to the quarter.
- Storm revenue is a separate contingent band with a probability, never in the base.
- Any storm-restoration assumptions stay on the document/estimate side, no promised approvals, no erased deductibles, no "free roof."
- The forecast is expressed as a range (conservative / expected / aggressive), not a single number.
- A cash overlay accounts for collection timing, especially insurance lag.
- A re-forecast cadence is on the calendar.
Get those eleven right and next quarter's revenue stops being a guess. It becomes a number you built, can defend line by line, and can adjust the moment reality moves, which, in roofing, it always does. The roofs aging out and the storms that wear them are the demand under all of it; the better you can see which roofs are due, the less of your forecast rests on hope.
FAQ
What's the difference between forecasting bookings and forecasting revenue?
Bookings are the dollar value of contracts you sign in the period; revenue is the dollar value of work you actually complete and recognize. A job signed in the last week of the quarter is a booking now but usually becomes revenue next quarter once it's built. For a revenue forecast, count work that completes in the window regardless of when it sold, which is why most of any quarter's revenue comes from backlog sold the prior quarter.
How do I calculate weighted pipeline value for my roofing forecast?
Multiply each open deal's contract value by its probability of closing (based on your own stage history, not CRM defaults), then sum. A $40,000 job at 'verbal commitment' with a 75% close probability contributes $30,000 to weighted pipeline. Then filter further: only count the portion expected to complete inside the quarter based on your cycle time. Raw pipeline overstates expected bookings by 40-70% for most contractors.
Why does crew capacity matter in a revenue forecast?
You can't recognize revenue on roof you can't physically install. If demand-side forecasting says $1.6M but your crews can only build $1.2M of work in the quarter, your forecast is $1.2M. Calculate capacity as crews times squares-per-day times productive days times revenue-per-square times a realistic utilization factor (often 70-85%). Your forecast is always the lower of expected demand and capacity.
How should I handle storm revenue in a quarterly forecast?
Keep it out of your base case. You can't predict whether a hailstorm hits next quarter, so model storm-restoration as a separate contingent band with a probability drawn from your market's historical event frequency (NOAA Storm Prediction Center and Storm Events data help). Report it as upside, for example '20% chance of an event driving $250K-$500K,' never folded into the committed number. When a storm actually hits, re-forecast within 48 hours.
How far out can I reliably forecast roofing revenue?
One quarter (13 weeks) is the sweet spot for an operational forecast because most of it is already in backlog and your cycle time makes near-term completion predictable. Beyond a quarter, seasonality and storm uncertainty widen the band fast. You can build a rough annual outlook from your seasonal index and run-rate, but treat anything past one quarter as a planning range, not a commitment, and re-forecast every two weeks.
What close rate should I use if my lead mix is changing?
Never use a single blended rate when your mix is shifting. Segment close rates by lead source (referral, inbound, canvass, storm canvass, purchased) and job type (repair, retail, restoration, commercial), then weight by the mix you actually expect next quarter. If you're leaning harder on canvassing because referrals dried up, your effective close rate drops even though your sales team hasn't changed, and a blended rate from last quarter will overstate the forecast.
How do I account for cycle time so revenue lands in the right quarter?
Measure your average sold-to-completed time by job type: residential retail often runs 3-6 weeks, insurance/restoration 6-16 weeks, commercial 1-6 months. Tag each deal with an expected completion week. Anything that completes after the quarter ends counts toward the next forecast, not this one. This is why a strong late-quarter sales month shows up as next quarter's revenue.
Can I promise homeowners their insurance claim will be approved to close more storm jobs?
No. Promising a specific approval or payout, promising the deductible is waived or absorbed, advertising a 'free roof,' or negotiating the claim for a fee is unlicensed public adjusting in most states and creates real legal exposure. Your compliant role is to inspect, document the damage, and prepare an accurate repair estimate for your own scope, then hand it to the homeowner, who files the claim while the insurer decides coverage. Beyond the legality, approval rates aren't 100%, so a forecast that assumes they are runs high. Check your state Department of Insurance for the exact line.
How does knowing which roofs are due improve my forecast?
Your run-rate and storm-upside layers are usually pure guesswork without it. Tools like RoofPredict score roofs in your service area with a roof-age range from aerial imagery and a per-roof storm model, then enrich your own list. That lets you estimate expected book as roof count in the due-now band times reachable percentage times your aged-roof close rate times average ticket, rather than 'we'll knock some doors and see.' It tightens the band; it doesn't remove it, since age is a range and storm exposure raises odds, not certainty.
How often should I update my roofing revenue forecast?
Update pipeline stages weekly, re-run the full forecast every two weeks, reconcile bookings vs. revenue vs. cash monthly, and run a forecast-vs-actual post-mortem each quarter to tune your inputs. On top of that, re-forecast within 48 hours of any qualifying storm in your service area, because an event resets demand, close rates, capacity constraints, and cycle times all at once.
The Roofline by RoofPredict
Stay Ahead of Roofing Market Changes
Join The Roofline by RoofPredict for weekly roofing intelligence: material price signals, storm demand, insurance and regulatory updates, sales tactics, and local contractor opportunities.
Sources
- National Roofing Contractors Association — nrca.net
- NOAA Storm Prediction Center — spc.noaa.gov
- NOAA National Centers for Environmental Information - Storm Events Database — ncdc.noaa.gov
- National Weather Service — weather.gov
- Insurance Institute for Business & Home Safety (IBHS) — ibhs.org
- U.S. Bureau of Labor Statistics - Roofers Occupational Outlook — bls.gov
- U.S. Census Bureau - Construction Spending — census.gov
- Occupational Safety and Health Administration - Roofing — osha.gov
- International Code Council - International Residential Code — iccsafe.org
- Texas Department of Insurance - Public Adjusters — tdi.texas.gov
- Federal Trade Commission - Advertising and Marketing Guidance — ftc.gov
- U.S. Small Business Administration - Manage Your Finances — sba.gov
- National Association of Insurance Commissioners — naic.org
- RoofPredict — roofpredict.com
Related Articles
Roofing Job Costing: Where Margin Actually Leaks (and How to Plug It)
Most roofing companies don't lose margin in one big leak. They lose it in a dozen small ones spread across the bid, the field, and the office. Here is where to look and how to stop it.
Roofing Cost of Goods Sold vs Overhead: The Breakdown That Fixes Your Margins
Most roofers price jobs blind because they can't cleanly separate cost of goods sold from overhead. Here's the line-by-line breakdown that gets your gross margin honest and your bids profitable.
How to Price Roofing Jobs for Profit, Not Just to Win the Bid
Winning bids is easy. Winning profitable bids is the whole game. Here is how to build a roofing price from real costs up, recover your overhead honestly, and walk away from work that would bleed you dry.