Skip to main content

Building a Territory Heat Map for Roofing Demand

David Patterson, Roofing Industry Analyst··34 min readTerritory & Market Strategy
Branded illustration for the RoofPredict guide: Building a Territory Heat Map for Roofing Demand
Building a Territory Heat Map for Roofing Demand
On this page

Short Answer

A roofing demand heat map territory is a map of your service area shaded by how likely each neighborhood is to need roof work, so you can see — at a glance — where the demand actually is instead of guessing. You build it by joining three layers of real data to your map: age of housing stock (older roofs fail more), storm and hail exposure (events that damage roofs and trigger claims), and homeownership and home value (who can authorize and afford a reroof). Score each small area, shade it from cool (low priority) to hot (high priority), and you get a picture that tells your sales and marketing teams exactly where to spend the next dollar.

You can assemble the underlying data for free. The U.S. Census Bureau's American Community Survey publishes housing age, ownership, and value down to the neighborhood (tract) level. The Census Building Permits Survey shows where new construction is happening — useful as an inverse signal, since brand-new roofs are low priority. NOAA's Storm Events Database and the Storm Prediction Center give you the hail and wind history that drives storm demand. For sizing the actual mail drop, USPS publishes Every Door Direct Mail route counts. Layer those, normalize them to a common scale, weight them for your market, and you have a heat map.

The single most important rule: a heat map is a prioritization tool, not a verdict on any individual roof. The shading tells you where to offer inspections, not which homes are damaged. A hot tract means "lots of older homes that took hail" — it does not mean any specific roof needs replacing. Only a licensed roofer on the property can determine that. Keep that line crisp and your marketing stays both effective and compliant with FTC advertising rules.

This guide walks the whole build: which data layers matter and why, how to score and weight them, how to choose the right map unit (ZIP vs. tract vs. carrier route vs. parcel), the exact math to turn raw numbers into a 0–100 heat score, how to read the finished map without fooling yourself, common mistakes that produce pretty but useless maps, and how the picture changes by region and season. There are four worked tables, three copy-paste artifacts (a scoring worksheet, a weighting template, and a build checklist), and a long FAQ. Do it by hand for one ZIP to learn the mechanics; automate it across a whole market once you trust the model.

Sources checked: June 20, 2026.

Why a Heat Map Beats a Spreadsheet (and Beats Gut Feel)

Most roofing companies "target" their market with one of two methods: a gut feeling about which neighborhoods are good, or a giant spreadsheet of addresses nobody actually reads. Both fail for the same reason — neither shows you the shape of demand. Demand is geographic. It clusters. A hailstorm carves a swath three miles wide and twenty long. A 1995 subdivision sits in one pocket while the 2018 builds sit in another. Age, weather, and ownership do not spread evenly across a market, and a flat list hides exactly the pattern you most need to see.

A heat map turns that pattern into something your whole team can act on in five seconds. The owner sees where to plan saturation. The marketing manager sees where to drop the next mail campaign. The sales manager sees which routes to staff. A canvasser sees which streets to walk first. One picture, many decisions — and all of them grounded in data instead of the loudest opinion in the room.

The economic argument is simple. Roofing customer acquisition is expensive, and most of the waste comes from marketing to the wrong geography: blasting a brand-new subdivision, mailing renters who can't authorize a reroof, or saturating an area that never took a storm. A heat map is fundamentally a waste-reduction tool. Every dollar you move from a cool area to a hot one buys more conversations with homeowners who are genuinely more likely to need you. You will not convert every hot tract, and you will get some jobs from cool ones — but over hundreds of mail pieces and door knocks, working the heat beats working blind.

It is also a communication tool. When you tell a rep "go work the east side," that's vague. When you hand them a map with three tracts glowing orange and a note that says "1990s homes, hail in April, 78% owner-occupied," that's a briefing. The map aligns the company around the same view of the market.

The Three Demand Layers (What Actually Drives Roof Work)

Roof demand comes from a small number of forces. A good heat map models the big three and resists the urge to add noise.

Layer 1 — Age of the roof (proxied by age of the house). Asphalt shingles, the dominant residential roofing material, have a finite service life. The U.S. Department of Energy's Building America Solution Center describes asphalt shingle systems and their components; the practical takeaway for targeting is that as a roof ages it moves up the replacement curve. You can't see roof age directly in public data, but you can see house age, and on average older houses have older roofs. The Census ACS reports "year structure built" by neighborhood, so you can shade a map by the share of homes old enough to be on their first or second roof. This is the steadiest, most reliable demand signal — it doesn't depend on a storm.

Layer 2 — Storm exposure (hail and wind). Storms create sudden, concentrated demand. A single severe hail event can put a year's worth of work into one corridor. NOAA's Storm Events Database archives confirmed hail diameters and wind speeds; the Storm Prediction Center and the National Weather Service provide current and historical hazard records. The NWS hail page is a useful reference for what hail sizes mean. Storm exposure is the layer that makes a heat map dynamic — it changes every storm season, and a fresh storm can light up a previously cool area overnight.

Layer 3 — Ability and authority to buy (ownership + value). A roof only gets replaced if someone can authorize and pay for it. Renters generally can't; absentee landlords often won't. The ACS reports owner-occupancy and home value by tract, letting you down-weight areas that are mostly renters or very low value (where a full reroof may stall on affordability) and up-weight stable, owner-occupied neighborhoods. This layer is what separates a demand map from a need map: a tract of aging rentals has roofing need but low convertible demand.

Here's how the three compare on what they tell you and how often they change:

Layer What it signals Source (free) Map resolution How often it changes
Housing age Roofs near end of service life Census ACS (year built) Tract / block group Very slowly (yearly refresh fine)
Storm exposure Sudden storm-driven demand NOAA Storm Events, SPC County / event swath Every storm; refresh after events
Ownership & value Who can authorize + afford Census ACS Tract / block group Slowly (yearly)

A heat map that uses only one layer is a half-map. Age alone misses the storm corridor that just lit up. Storm alone over-targets new subdivisions that took hail but won't need full reroofs for decades. Ownership alone is just a wealth map. The power is in the combination — and in weighting the combination for your market, which we'll do below.

Optional Refinement Layers (Use With Care)

Beyond the big three, a few secondary signals can sharpen a map. Treat them as tie-breakers, not foundations.

  • Permit activity (inverse signal). The Census Building Permits Survey and many county portals show recent residential permits. New construction and recent reroofs mean fresh roofs — a reason to cool an area down, not heat it up. If a block shows a wave of recent roofing permits, those homes just got new roofs; skip them.
  • Roof imagery / condition signals. Top-down imagery can suggest a roof looks weathered or was recently replaced. This is a prioritization signal only — an image cannot certify condition, age, or remaining life. Use it to trim and rank, never to tell a homeowner their roof is damaged.
  • Density / saturation efficiency. A hot tract that's also dense (lots of homes close together) is cheaper to canvass and saturate than a hot but sprawling rural area. Density doesn't change demand, but it changes cost to serve, which matters when you choose where to start.
  • Prior job density. Where you've already done jobs, you have referral momentum and brand recognition. Some operators add a small "warm market" bump to areas where they've worked.

The discipline here: every layer you add dilutes the clarity of the map and adds a place for error. If you can't explain in one sentence why a layer changes a buying decision, leave it out.

Choosing Your Map Unit: ZIP vs. Tract vs. Carrier Route vs. Parcel

Before you score anything, decide what a "pixel" on your heat map represents. This choice shapes everything downstream.

ZIP code. Familiar, easy, and what most people picture. The problem: ZIPs are big and were designed for mail delivery, not demographics. A single ZIP can contain a 1960s neighborhood, a 2015 subdivision, and an apartment district. Shading by ZIP blurs real differences. Use ZIP only for the coarsest "which part of the metro" view.

Census tract / block group. The sweet spot for a demand heat map. Tracts hold roughly 1,200–8,000 people; block groups are smaller. The ACS publishes housing age, ownership, and value at exactly this resolution, so your three core layers line up natively. Tracts are small enough to capture real neighborhood character and big enough to have stable, statistically meaningful numbers. This is the recommended unit for the strategic map.

USPS carrier route. The unit that matters when you turn the map into mail. Every Door Direct Mail is sold by carrier route — you pick routes on a map and saturate them. Carrier routes don't line up perfectly with tracts, so a common workflow is: build the strategic heat map on tracts, then translate hot tracts into the carrier routes that overlap them for the actual EDDM order.

Parcel (individual property). The finest unit — one house. You don't make a heat map at parcel level (a map of millions of dots is unreadable), but once a tract is hot, parcel data is how you build the actual address list of specific homes to mail or knock. Heat map for strategy; parcels for the list.

Unit Best for Pros Cons
ZIP code Metro-level overview Familiar, simple Too coarse; hides neighborhoods
Census tract The strategic heat map Matches ACS data; right resolution Needs GIS to map
Block group High-detail heat map Finer than tract Noisier small-sample data
Carrier route Translating map → EDDM mail Native USPS mail unit Doesn't match tract boundaries
Parcel Building the address list Address-level precision Unreadable as a map; needs paid data

The practical recommendation: score and shade on Census tracts, then translate hot tracts to carrier routes for mail and to parcels for addressed lists. One strategic map, two operational hand-offs.

How to Score a Heat Map: The Math, Step by Step

A heat map needs every area on a common scale, or you can't compare them. Here's the method, plain enough to do in a spreadsheet.

Step 1 — Pull the raw numbers per tract. For each tract in your service area, gather: percent of homes built before a cutoff year (e.g., before 2005, so ~20+ years old), owner-occupancy rate, median home value, and a storm exposure value (e.g., max hail diameter recorded in the last 24 months, or a 0/1/2/3 storm-severity flag).

Step 2 — Normalize each layer to 0–100. Raw numbers aren't comparable (a percentage, a dollar value, and a hail diameter are different units). Convert each to a 0–100 score using min-max scaling across your service area:

normalized = 100 * (value − min) / (max − min)

So if tract age-share ranges from 12% to 86% across your market, a tract at 49% scores 100 * (49−12)/(86−12) = 50. Do this for each layer. For home value, you usually want a curve that peaks in the middle (very low value = affordability risk, very high value = may use premium niche contractors), but min-max is fine to start.

Step 3 — Weight the layers for your market. Not every layer matters equally everywhere. In a hail-belt market, storm exposure might be 50% of the score; in a calm coastal market with old housing, age might dominate. Assign weights that sum to 100%:

heat_score = (w_age   * age_norm)
           + (w_storm * storm_norm)
           + (w_own   * ownership_norm)
           + (w_value * value_norm)

Step 4 — Bucket into bands for shading. A continuous 0–100 score is precise but hard to read on a map. Bucket it:

Heat band Score Shade What it means Action
Hot 80–100 Deep orange Old homes + storm + owner-occupied Saturate first; lead with mail + canvass
Warm 60–79 Orange Two of three signals strong Mail; canvass on capacity
Moderate 40–59 Light orange One signal strong Test mail; watch for storms
Cool 20–39 Pale Weak signals Skip unless a storm hits
Cold 0–19 Gray New, renter, or no storm Exclude

Step 5 — Map it. Shade each tract by its band. Now you have a heat map you can read in seconds and defend with numbers.

The whole point of normalizing and weighting is that the map reflects your judgment about your market, made explicit and repeatable — not a black box and not a guess.

Worked Example: Scoring One Tract

Numbers below are illustrative — they show the mechanics, not real data for any place.

Imagine a tract where, across your service area, the ranges are: age-share 10%–80%, owner-occupancy 30%–95%, value $120k–$650k, and storm flag 0–3 (3 = golf-ball hail in the last year). This tract reads: 65% of homes built before 2005, 82% owner-occupied, median value $310k, storm flag 2 (quarter-to-half-dollar hail recorded).

Normalize each:

  • Age: 100*(65−10)/(80−10) = 78.6
  • Ownership: 100*(82−30)/(95−30) = 80.0
  • Value (min-max): 100*(310−120)/(650−120) = 35.8
  • Storm (flag/3): 100*(2/3) = 66.7

Apply hail-belt weights — age 30%, storm 35%, ownership 25%, value 10%:

heat = 0.30*78.6 + 0.35*66.7 + 0.25*80.0 + 0.10*35.8
     = 23.6 + 23.3 + 20.0 + 3.6
     = 70.5  →  Warm band

This tract lands in Warm: solid age and ownership, a real but not extreme storm, modest value. It's a strong mail candidate — not the very first place you saturate, but well above average. Change the weights (say you're in a no-hail market and zero out storm) and the same tract reshuffles, which is exactly why explicit weights matter.

Weighting Templates by Market Type

There's no universal weighting — the right mix depends on what drives demand where you work. Use these as starting points and tune them.

Market type Age Storm Ownership Value Why
Hail belt (TX, CO, OK) 25% 45% 20% 10% Storms drive most demand; ride the swath
Aging suburb, low storm 50% 10% 30% 10% Age is the engine; wear-out replacements
Coastal / high wind 30% 35% 25% 10% Wind events + salt-air aging both matter
New-growth metro 35% 25% 30% 10% De-prioritize new builds; find the older pockets
Premium / high-value 35% 20% 25% 20% Value matters more for upsell + premium materials
Insurance-restoration focus 20% 50% 25% 5% Storm trigger is the whole game

Two rules when tuning: weights must sum to 100%, and you should be able to defend each one with a sentence about your market. If you can't say why storm is 45% instead of 25%, you're guessing — and guessing is fine to start, as long as you revisit it after a season of results.

Copy-Paste Artifact 1: Heat Map Scoring Worksheet

Use this per tract (or paste into a spreadsheet, one row per tract).

TRACT HEAT SCORE WORKSHEET
==========================
Tract / area ID: __________   Service-area min/max set: [ ] yes

RAW INPUTS
  Age-share (% homes built before cutoff yr ____): ______%
  Owner-occupancy rate:                            ______%
  Median home value:                               $______
  Storm flag (0=none,1=small,2=mod,3=severe):      ______
  Recent reroof/permit wave? (cool-down):          [ ] yes  [ ] no

NORMALIZE (0–100), using service-area min/max:
  age_norm   = 100*(age − min)/(max − min)       = ______
  own_norm   = 100*(own − min)/(max − min)       = ______
  value_norm = 100*(value − min)/(max − min)     = ______
  storm_norm = 100*(flag / 3)                    = ______

WEIGHTS (must sum to 100%): age __  storm __  own __  value __

HEAT SCORE = (w_age*age_norm + w_storm*storm_norm
            + w_own*own_norm + w_value*value_norm) / 100
           = ______  →  BAND: Hot / Warm / Moderate / Cool / Cold

ADJUSTMENTS
  − If recent reroof wave: drop one band
  + If high density (easy saturation): note for sequencing
  + If prior jobs nearby (warm market): note for sequencing

DECISION: [ ] Saturate now  [ ] Mail  [ ] Test  [ ] Watch  [ ] Exclude

Copy-Paste Artifact 2: Weighting Decision Template

MARKET WEIGHTING DECISION
=========================
Market: __________________   Date set: __________

1. What drives demand here? (rank)
   [ ] Storms/hail   [ ] Aging housing   [ ] Wind   [ ] Growth churn

2. Storm frequency: [ ] frequent severe  [ ] occasional  [ ] rare
3. Housing age: [ ] mostly old  [ ] mixed  [ ] mostly new
4. Ownership: [ ] high owner-occ  [ ] mixed  [ ] many rentals

STARTING WEIGHTS (sum = 100%):
   Age: ___   Storm: ___   Ownership: ___   Value: ___

JUSTIFY each in one sentence:
   Age:      _______________________________________________
   Storm:    _______________________________________________
   Ownership:_______________________________________________
   Value:    _______________________________________________

REVISIT TRIGGER: after ___ campaigns or 1 storm season,
compare close rate by band and re-tune.

Translating the Map into Action: Mail, Canvass, Route

A heat map is only worth the data behind it if it changes what your team does on Monday. Here's the hand-off from map to ground.

Mail. Hot and warm tracts become your mail targets. Translate them to USPS carrier routes (the unit EDDM is sold in) for saturation drops, or to addressed parcel lists for precision. The USPS business mail resources explain the formats. A typical sequence: saturate the hottest routes first with EDDM, then run addressed, age-filtered lists in the warm tracts where you want less waste.

Canvass. Hot, dense tracts are prime door-knocking. Hand reps a shaded map, not a list — they work the orange. After a storm, the storm swath overlaid on your age map shows exactly which doors to hit while the event is fresh.

Route and staff. If two parts of your market are both hot but far apart, sequence them so crews aren't crossing the metro. The map plus a density note tells you where to concentrate so canvass and install routes stay tight.

Budget allocation. The map is also a budgeting tool. Spend in proportion to heat: the hottest band gets the first and largest share, cool bands get little or nothing until a storm changes the picture.

A note on cost, since the map drives spending: in RoofPredict's model, your subscription/credits cover the roof reports themselves — one report per home, no matter how many times you mail that home. The mailers are billed separately in real dollars, per piece (around $0.68/piece), with volume discounts at higher send sizes (roughly 7% off at 1,000+, 12% at 2,500+, 18% at 5,000+). So when the heat map tells you to saturate three hot routes, budget the report side against your subscription and the mail side as a dollar line item — and nothing is charged for printing until you approve the proof. Lead your planning with mail counts if that's how you think, but always carry the honest dollar total.

Copy-Paste Artifact 3: Heat Map Build Checklist

ROOFING DEMAND HEAT MAP — BUILD CHECKLIST
=========================================
[ ] 1. Define service area (counties / ZIPs you serve)
[ ] 2. Choose map unit: Census tract (recommended)
[ ] 3. Pull ACS housing age by tract (year built)
[ ] 4. Pull ACS owner-occupancy by tract
[ ] 5. Pull ACS median home value by tract
[ ] 6. Pull NOAA storm/hail events (last 24 mo) → tract flag
[ ] 7. (Optional) Pull permits → mark recent-reroof cool-downs
[ ] 8. Normalize each layer to 0–100 (min-max over service area)
[ ] 9. Set weights for your market (sum = 100%); justify each
[ ] 10. Compute heat score per tract
[ ] 11. Bucket into bands (Hot/Warm/Moderate/Cool/Cold)
[ ] 12. Shade the map; eyeball it — does it match what you know?
[ ] 13. Translate Hot/Warm tracts → carrier routes (for EDDM)
[ ] 14. Translate Hot/Warm tracts → parcel lists (for addressed mail)
[ ] 15. Validate addresses (USPS) before any drop
[ ] 16. Date-stamp every source; set a refresh cadence
[ ] 17. Run campaign; tag results by band
[ ] 18. After 1 season / N campaigns: compare close rate by band,
        re-tune weights, rebuild

How to Read a Finished Heat Map Without Fooling Yourself

A map is persuasive, which makes it dangerous. A few habits keep you honest.

Sanity-check against what you already know. Pull up the finished map and look at three or four areas you know well. Does the hot area match where you've actually gotten jobs? Does the cold area match the new subdivision you know just got built? If the map disagrees with hard-won field knowledge, find out why before you trust it — usually it's a data freshness or weighting problem, not a hidden insight.

Watch for the "wealth map" trap. If your map basically reproduces a map of home values, you've over-weighted value (or under-weighted age and storm). A demand map and a wealth map are different things. The richest neighborhood with brand-new roofs is cold for roofing.

Don't confuse hot with certain. A hot tract is more likely to contain homes that need work — it is not a list of damaged roofs. Over hundreds of touches the odds pay off, but any single hot home may have a perfect roof and any single cold home may have a failing one. The map sets odds; it doesn't call individual shots.

Beware stale storm layers. Storm exposure decays. A hail event from three years ago that's already been worked by every contractor in town is not the same opportunity as last month's. Date-stamp the storm layer and weight recent events more.

Mind the boundary mismatch. Tracts, carrier routes, and parcels don't share borders. When you translate a hot tract to mail routes, you'll capture some adjacent area. That's usually fine, but know it's happening so you don't think your targeting is more surgical than it is.

Common Mistakes That Produce Pretty but Useless Maps

  • Using ZIP codes as the unit. ZIPs are too coarse and blur the neighborhood differences that are the whole point. Use tracts or block groups.
  • One layer only. An age-only or storm-only map misses half the picture. The signal is in the combination.
  • Equal weights by default. Splitting 25/25/25/25 ignores what actually drives your market. Weight deliberately.
  • No normalization. Adding a percentage to a dollar value to a hail diameter is meaningless. Normalize to a common 0–100 scale first.
  • Treating the score as truth about a roof. The heat band is a priority signal, never a statement that a specific roof is damaged or a specific age. This is both a marketing-quality issue and a compliance one — FTC advertising guidance requires claims to be truthful and substantiated.
  • Never refreshing. A heat map built once and frozen goes stale — storms happen, homes age, subdivisions get built. Set a refresh cadence.
  • Ignoring the new-build cool-down. Forgetting to subtract recently reroofed and newly built areas leaves you mailing fresh roofs.
  • No feedback loop. If you never tag results by heat band, you never learn whether your weights are right. Close the loop.
  • Over-engineering. Ten layers and a machine-learning model you can't explain is worse than three clean layers you can defend. Start simple.

Regional Variations: The Map Looks Different Everywhere

Demand drivers shift by geography, and your weighting should shift with them.

Hail Alley (Texas, Oklahoma, Colorado, Kansas, Nebraska). Storm exposure dominates. The heat map is highly dynamic — a single spring outbreak can re-shade the entire market in a week. Weight storm heavily, refresh the NOAA layer aggressively, and keep an age layer underneath so you know which storm-hit homes are also old enough to convert to full reroofs rather than spot repairs. The Storm Prediction Center is your day-of confirmation source.

Aging Midwest and Northeast suburbs. Storms are occasional; the engine is age. Lots of post-war and 1980s–90s housing stock cycling through second and third roofs. Weight age heavily. The map is stable, so a yearly ACS refresh keeps it current. Wear-out demand is steadier and less competitive than storm-chase markets.

Gulf and Atlantic coasts. Wind and tropical systems plus salt-air aging. Weight storm/wind alongside age, and remember IBHS FORTIFIED and code-driven demand can concentrate in specific jurisdictions. Hurricane events create huge, sudden, geographically defined demand — the swath is the map for a season.

Sun Belt new-growth metros (Phoenix, parts of Florida, Carolinas). Tons of new construction means lots of cold area. The skill is finding the older pockets inside a young metro — the 1990s and earlier neighborhoods that are now on their second roof. Use permits as a strong cool-down and let age carve out the warm zones.

Pacific Northwest / mild coastal. Few damaging storms; the driver is age plus moss and moisture wear. Age dominates; storm is a minor layer. Stable, slow-moving map.

Region Dominant driver Refresh cadence Map behavior
Hail Alley Storm/hail After every event Highly dynamic
Aging Midwest/NE Housing age Yearly Stable
Coastal (Gulf/Atlantic) Wind + age After tropical season Spiky
Sun Belt new-growth Age pockets vs. new builds Yearly + permits Patchy
Pacific NW / mild Age + moisture Yearly Very stable

Seasonal Variations: When the Map Heats Up

Even in one market, the map breathes with the calendar.

Spring (storm onset). In hail and severe-weather regions, spring is when the map starts re-shading fastest. Refresh the storm layer weekly during the season; a fresh swath can outrank your age-based hot zones overnight.

Summer (peak storm + peak install). Storm demand and installation capacity both peak. The map is most dynamic; keep the storm layer current and use density to keep crews efficient as you chase fresh events.

Fall (cleanup + age-driven steady state). Storm activity tapers in many regions. Demand shifts back toward the steady age-driven base. Good time to work the warm age tracts you skipped while chasing storms, and to plan winter mail.

Winter (planning + age-only markets). In cold climates installs slow, but it's prime planning season — rebuild the map, refresh ACS, set next year's weights. In mild and storm-quiet markets, the age layer carries demand year-round.

A practical rhythm: rebuild the full map once a year (ACS + ownership + value), refresh the storm layer every event in season, and re-tune weights after each storm season based on what actually closed.

Free vs. Paid: What the Heat Map Really Costs

You can build a credible strategic heat map on entirely free data. The ACS (age, ownership, value) and NOAA (storm) cover all three core layers at no cost. The costs come later and in two distinct buckets — and it's worth keeping them separate so you budget honestly.

Data costs. Census and NOAA are free. USPS EDDM route counts are free to view. The thing that usually costs money is address-level parcel data for building the actual mailing list inside a hot tract — free from some county portals, a per-record fee from vendors, or bundled into a platform. Imagery/condition signals are the most expensive data category and are optional.

Production costs (the big one). The largest real cost is almost never the data — it's the physical mail. Mail is billed per piece in dollars, with volume discounts at larger send sizes. A heat map that tells you to saturate three hot carrier routes is a spending decision: the report side runs against a subscription/credits model (one report per home), while the mailers are a dollar line item billed per piece — and nothing is charged for printing until you approve the proof.

Cost bucket What it covers Typical shape
Strategy data ACS age/ownership/value, NOAA storm Free
List data Address-level parcels in hot tracts Free to per-record fee
Imagery (optional) Per-roof condition signal Most expensive; optional
Reports Branded roof/property reports Subscription/credits — 1 per home
Mail (production) Physical mailers Dollars per piece; volume discounts

The sequence that controls cost: validate the market and pick hot tracts on free data first, then spend on list data and mail only where the map says the odds are good.

A Simple End-to-End Example (One Metro, Start to Finish)

Walk the whole thing once, illustratively. Imagine a contractor in a mixed metro — some 1990s suburbs, a band of 2015+ new builds, and a hail corridor that ran through in April.

  1. Service area: four counties, ~140 Census tracts.
  2. Unit: tracts.
  3. Layers pulled: ACS age-share (before-2005), owner-occupancy, median value; NOAA storm flags for the last 24 months.
  4. Cool-downs: permit data flags two tracts of brand-new subdivisions — set to Cold regardless of score.
  5. Normalize all four layers 0–100 across the 140 tracts.
  6. Weights: this is a moderate-hail market, so 35% storm, 30% age, 25% ownership, 10% value.
  7. Score and band. Result: eleven Hot tracts (the April hail corridor crossing older 1990s suburbs), twenty-three Warm (older suburbs, no fresh storm, or storm-hit-but-newer), the rest Moderate to Cold.
  8. Read it: the hot band visibly traces the storm corridor where it overlaps old housing — exactly the homes most likely to convert. The new-build cool-downs sit cold even though they took the same hail, because those roofs are years from replacement.
  9. Act: EDDM saturation on the carrier routes overlapping the eleven Hot tracts first; addressed, age-filtered lists in the Warm suburbs; canvass the densest Hot tracts; budget mail in dollars proportional to heat.
  10. Close the loop: tag every lead by the band it came from; after the season, compare close rate by band and re-tune.

The map turned a vague "the storm hit the east side" into a ranked, defensible plan — and kept the contractor from mailing the brand-new subdivision that took the same hail but won't need a roof for a decade.

Where RoofPredict Fits

Everything above you can do by hand for one ZIP or one tract: pull the ACS numbers, check NOAA for storms, normalize, weight, shade, and translate to mail. It's real work, but it teaches you the model. The friction is doing it across a whole territory, keeping every layer fresh, and rebuilding it after every storm — that's where it becomes a part-time job.

RoofPredict is the operational layer that makes the heat map repeatable at scale. It scores the properties in a territory by how likely they are to need roof work — joining property age and characteristics, storm and hail exposure history, and roof imagery signals — so the "hot vs. cold" picture is built and kept current for you instead of rebuilt by hand each season. From that scored map you can plan saturation, build targeted direct-mail campaigns straight off the hot areas, and generate professional roof reports to walk in with. On cost, the model is honest and simple: your subscription/credits cover the reports (one per home, regardless of how many times you mail it), and the mailers are billed separately in real dollars per piece with volume discounts at higher send sizes — and nothing is charged until you approve the proof and the mail goes to print.

Guardrail: RoofPredict's heat map and property scores are a prioritization and targeting signal — they tell you where to offer inspections, not which roofs are damaged or how old any roof is. The software does not inspect, climb, or certify a roof, and it does not decide or guarantee any insurance claim. A hot score means "worth a conversation," nothing more. Only a licensed roofer on the property — and, for claims, the insurer and adjuster — can determine an individual roof's condition, age, or coverage. Keep that line clear and your heat map stays both effective and honest.

For Roofing Owners: Putting the Map to Work

If you run the company, the heat map is a planning and accountability instrument, not a one-time art project. Use it to set the marketing budget (spend in proportion to heat), to brief sales (hand reps the shaded map, not a list), to plan crew routing (sequence hot tracts so installs stay tight), and to hold the loop accountable (every lead tagged by band, every season's weights re-tuned against real close rates). The SBA's marketing and sales guidance is a sound general framework for tying spend to a plan; the heat map is what makes that plan geographic and specific to roofing. The companies that win their markets aren't the ones with the fanciest map — they're the ones who actually act on a decent one, measure it, and rebuild it every season.

Key Takeaways

  • A roofing demand heat map shades your service area by likelihood of roof work, turning a flat list into a picture your whole team can act on.
  • Build it on three core layers: housing age (steady demand), storm exposure (sudden demand), and ownership + value (who can authorize and afford).
  • Score on Census tracts, normalize each layer to 0–100, weight for your market, bucket into Hot/Warm/Moderate/Cool/Cold, and shade.
  • Translate hot tracts to carrier routes for EDDM mail and to parcels for addressed lists; the map is strategy, the parcel list is execution.
  • You can build the strategic map on free Census and NOAA data; the real cost is physical mail, billed per piece in dollars — reports run on a subscription, one per home.
  • Weight by region (storm-heavy in hail country, age-heavy in aging suburbs) and refresh by season (storm layer every event, full rebuild yearly).
  • A hot band is a priority signal, not a verdict on any roof — it tells you where to offer inspections, never which homes are damaged.
  • Close the loop: tag results by band, compare close rates, and re-tune weights every season.

FAQ

What is a roofing demand heat map?

A roofing demand heat map is a map of your service area shaded by how likely each neighborhood is to need roof work. It's built by scoring small areas (usually Census tracts) on housing age, storm exposure, and homeownership, then coloring them from cool (low priority) to hot (high priority). It lets a roofing team see, in seconds, where to focus mail, canvassing, and budget instead of guessing.

What data do I need to build a roofing heat map?

You need three core layers, all available free: housing age and owner-occupancy and home value from the Census American Community Survey, and storm/hail history from NOAA's Storm Events Database and Storm Prediction Center. Optionally add building permit data (to cool down newly built or recently reroofed areas) and roof imagery (to refine within a hot area). These cover the strategic map; building an actual address list inside a hot area usually needs parcel data.

What map unit should I use — ZIP code or Census tract?

Use Census tracts (or block groups) for the strategic heat map. ZIP codes are too coarse — a single ZIP can mix a 1960s neighborhood, a new subdivision, and apartments, which blurs the exact differences you're trying to see. Tracts match the Census housing data natively and capture real neighborhood character. Translate hot tracts to USPS carrier routes when you're ready to mail, since EDDM is sold by route.

How do I score a neighborhood for roofing demand?

Pull the raw numbers per tract (percent older homes, owner-occupancy, value, a storm flag), normalize each to a 0–100 scale with min-max scaling so they're comparable, then combine them with weights that sum to 100% to get a single heat score. Bucket the scores into bands (Hot, Warm, Moderate, Cool, Cold) and shade the map by band. The weighting is where you encode your judgment about what drives demand in your market.

How should I weight the layers in a heat map?

It depends on your market. In a hail belt, weight storm exposure heavily (often 40–50%). In an aging, low-storm suburb, weight housing age heavily (often 45–55%). Ownership usually gets 20–30% because renters can't authorize a reroof, and value gets a smaller share unless you're chasing premium work. The rule: weights must sum to 100%, and you should be able to justify each in one sentence, then re-tune after a season of results.

Can a heat map tell me which specific houses need a new roof?

No. A heat map is a prioritization tool that tells you which areas are more likely to contain homes needing work — it sets odds, not verdicts. A hot tract means lots of older, storm-exposed, owner-occupied homes, but any individual roof in it may be fine, and any roof in a cold area may be failing. Only a licensed roofer inspecting the actual property can determine a specific roof's condition or age.

How often should I update my roofing heat map?

Refresh the storm layer after every significant event during storm season — a fresh hail swath can re-shade your market overnight. Refresh the housing-age, ownership, and value layers about once a year, since they change slowly. A good rhythm is a full rebuild annually plus event-driven storm refreshes in season, and re-tuning your weights after each storm season based on which bands actually closed.

Is the data for a roofing heat map free?

The strategic layers are free: Census ACS for housing age, ownership, and value, and NOAA for storm and hail history. USPS EDDM route counts are free to view. The costs come from address-level parcel data (free to per-record fee) to build mailing lists, optional imagery (the most expensive layer), and — by far the biggest cost — the physical mail itself, billed per piece in dollars with volume discounts at higher send sizes.

How do I turn a heat map into a mail campaign?

Identify your Hot and Warm tracts on the map, then translate them into the USPS carrier routes that overlap them, since Every Door Direct Mail is sold by route. Saturate the hottest routes with EDDM for fast coverage, and use addressed, age-filtered parcel lists in warm areas where you want less waste. Validate addresses through USPS before each drop to remove vacants and undeliverables, and budget the mail as a per-piece dollar line item.

What's the difference between a demand heat map and a wealth map?

A demand heat map estimates where roof work is likely needed; a wealth map just shows where money is. They diverge sharply: the richest neighborhood full of brand-new roofs is cold for roofing demand, while a middle-value 1990s suburb that took hail is hot. If your heat map basically reproduces a home-value map, you've over-weighted value and under-weighted age and storm — fix the weights.

Why shouldn't I just use ZIP codes for targeting?

ZIP codes were designed for mail delivery, not demographics, and they're large enough to mix wildly different neighborhoods — old homes, new subdivisions, and apartments can all share one ZIP. Shading by ZIP averages those together and hides the exact neighborhood-level pattern a heat map exists to reveal. Census tracts are the right resolution for strategy; ZIPs are only useful for a coarse metro-level overview.

How do I handle a new subdivision that took the same hail as older homes?

Apply a cool-down. Even though a new subdivision took the same hail, those roofs are years from replacement, so a full-reroof play won't convert there. Use building permit data to flag recently built or recently reroofed areas and drop them to the Cold band regardless of storm score. The heat map should reward storm-hit homes that are also old enough to need real work, not fresh roofs that merely got rained on.

How do I know if my heat map is actually accurate?

Sanity-check it against field knowledge: look at areas where you've already gotten jobs (should read hot) and areas you know are brand-new or mostly renters (should read cold). If the map disagrees with hard-won experience, it's usually a stale layer or bad weighting, not hidden insight. The real test, though, is the feedback loop — tag every lead by the band it came from and compare close rates by band over a season.

What's the role of roof imagery in a heat map?

Imagery is a refinement layer, not a foundation. Top-down photos can suggest a roof looks weathered or was recently replaced, which helps you trim and rank homes within an already-hot area. But an image can't certify a roof's condition, age, or remaining life, so it's strictly a prioritization signal — never use it to tell a homeowner their roof is damaged. For most small operators, the free age and storm layers are enough; add imagery only once mail volume justifies the cost.

Does a heat map work in markets that don't get hail?

Yes — you just shift the weighting. In low-storm markets (much of the Pacific Northwest, mild coastal areas, aging Midwest and Northeast suburbs), demand is driven mostly by housing age and ordinary wear, so weight the age layer heavily and treat storm as a minor factor. These maps are stable and slow-moving, which makes them easier to maintain; a yearly Census refresh keeps them current.

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.

By signing up, you agree to receive The Roofline by RoofPredict. Unsubscribe anytime.

Related Articles