Roofing Database Marketing: How to Turn a Cold List Into Booked Jobs
On this page
Most roofing companies spend the bulk of their marketing budget chasing strangers. Pay-per-click, shared leads, door-knockers walking a fresh subdivision, billboards on the highway. All of it is expensive, all of it gets more expensive every year, and most of it forgets one thing: you already have a list of people who are far more likely to buy from you than a stranger ever will be.
That list is your database. It is every address you have ever bid, every customer you have ever invoiced, every form fill that went cold, every neighbor of a job you completed, every storm-affected street you canvassed. Database marketing is the discipline of treating those addresses and contacts as the asset they are, organizing them, adding signal to them, and working them on a schedule so they turn into booked work.
This is the playbook a sharp roofing operator uses to do exactly that. We will cover what a roofing database actually is, how to build one from scratch or clean up the mess you have, how to enrich it so you know which roofs are actually due, how to segment it so every contact gets the right message, the channels that work and the cadence that wins, the math that tells you whether it is working, and the legal lines you must not cross when storm and insurance get involved. Bring a list of 500 addresses and you can start this week.
What "database marketing" actually means for a roofer
Database marketing is not email blasts. It is not buying a CSV of 40,000 homeowners and spraying postcards at all of them. Both of those are list marketing at best and spam at worst.
Database marketing means you maintain a structured, deduplicated, permission-respecting record of every household and contact you have any relationship or signal with, you attach attributes to each record (roof age range, storm exposure, last contact, where they came from, what they bought), and you trigger the right outreach based on those attributes. The database is the system of record. Campaigns are just queries against it.
The difference shows up in the numbers. A cold shared lead might close at 3 to 8 percent and cost you $40 to $150 to acquire before you ever talk to a human. A past customer who already trusts you closes at a far higher rate and costs you the price of a stamp or an email. A referral from that customer closes higher still. Database marketing is the machine that systematically harvests those high-trust, low-cost opportunities instead of letting them rot.
Three jobs the database does for you:
- It remembers. A roof you bid in 2021 and lost on price is a real opportunity in 2026 when the homeowner finally has the money or the leak gets worse. Your salesperson does not remember that bid. The database does.
- It prioritizes. Not every address is equal. A 22-year-old asphalt roof in a hail swath is worth a knock today; a 4-year-old roof two streets over is not. The database, enriched correctly, tells you the difference before you spend a dollar of labor.
- It compounds. Every job you complete adds the customer, their neighbors, and the proof (photos, address, scope) to the database. Done right, the asset grows faster than you spend it down.
The anatomy of a roofing database that actually works
Before you build or buy anything, decide what a record looks like. A weak database is a pile of names. A strong one is a structured set of fields you can filter, sort, and trigger on. Here is the field set I would insist on for every household record.
Core identity fields
| Field | Why it matters | Example |
|---|---|---|
| Full street address (standardized) | The household is the unit of a roofing database, not the person | 1420 Birchwood Ln, Plano, TX 75074 |
| Owner name(s) | Personalization and skip-trace matching | Maria and Devon Hart |
| Phone (mobile + landline) | Call/text channel; mobile is gold | 469-555-0142 |
| Cheapest channel you own | dhart@your-domain | |
| Parcel / APN | Stable key that survives owner changes | 12345-678-90 |
Property fields
| Field | Why it matters |
|---|---|
| Roof material (asphalt, metal, tile, flat) | Determines lifespan math and message |
| Roof age range | The single most predictive attribute for replacement |
| Roof square footage / pitch | Rough job-size and price banding |
| Year built | A fallback proxy for original roof age |
| Stories / complexity | Affects who you send and how you price |
Signal and lifecycle fields
| Field | Why it matters |
|---|---|
| Source (referral, past customer, web form, canvass, list) | You manage each source differently |
| Storm exposure (last hail/wind event, date, intensity band) | Triggers time-sensitive outreach |
| Stage (prospect, bid sent, lost, customer, warranty) | Drives the right cadence |
| Last contact date + channel + outcome | Prevents over-contacting and embarrassing misses |
| Do-not-contact flags (DNC, unsubscribed, opted out) | Keeps you legal |
| Notes / objections | The texture that makes the next conversation land |
If your CRM cannot hold these fields, your CRM is the problem. You do not need expensive software to start; you need a spreadsheet with these columns and the discipline to fill them. Most roofing-specific CRMs (the ones built for contractors) handle this natively, and we will talk about tooling later. The point now: design the record first, then pour data into it.
Where the data comes from: building the list
There are two databases living in your business and you should treat them differently.
The warm database is everyone you already have a relationship or first-party signal with. This is the most valuable list you will ever own and it is almost always neglected.
The cold/prospect database is addresses you have a reason to target but no relationship with yet. This is where enrichment earns its keep.
Mining your warm database (do this first, it is free)
Most roofers are sitting on thousands of warm records scattered across systems and never consolidated. Go get them:
- Past invoices and accounting software. Every customer you have ever billed. Export from QuickBooks or your accounting system. These are your highest-trust, highest-converting records.
- Old estimates and bids, especially the ones you lost. Lost bids are not dead. A homeowner who got three bids and went with the cheapest in 2022 is a prime target in 2026 when that cheap roof leaks. Pull every bid for the last 5 to 7 years.
- Form fills and web leads that went cold. That landing-page lead from 18 months ago that never answered the phone may answer a postcard today.
- Canvass logs. If your crews knocked a neighborhood after a storm, the "not home" and "maybe later" doors are records, not rejections.
- Warranty and service records. Anyone you did a repair for is a replacement candidate down the line and a referral source now.
- Phone and email history. Inbound calls that did not book. Email threads that died.
Consolidate all of it into one sheet with the field structure above. You will be shocked how many addresses you already own.
Building the cold/prospect database
When you have mined the warm side, you expand outward to addresses you have a reason to pursue:
- Neighbors of completed jobs. The single best cold source in roofing. When you finish a roof, the 20 to 40 nearest homes have similar build dates, similar roofs, and just watched a crew work next door. Pull every address within a few hundred feet.
- Subdivisions of a known age. Homes built in the same development in the same year have roofs aging out on roughly the same timeline. A neighborhood built in 2003 with original asphalt is statistically due now.
- Storm-affected areas. Streets inside a verified hail or wind footprint. This is time-sensitive and legally sensitive; more on both below.
- Public property records. County assessor and parcel data give you year built, owner name, and property characteristics for entire ZIP codes. Much of this is public; some is available through data vendors who package it cleanly.
- Purchased lists, used carefully. You can buy filtered homeowner lists (by ZIP, home value, year built, owner-occupied). These are fine as raw material but worthless without enrichment and segmentation. A bought list with no roof-age or storm signal is just a more expensive way to mail strangers.
Enrichment: turning a list of addresses into a list of roofs that are due
This is the step that separates pros from people who waste money on postcards. A raw address list tells you a house exists. An enriched list tells you which houses have roofs worth your time right now.
The two attributes that predict roof replacement better than anything else are roof age and storm exposure. If you can attach those to every record, you can stop marketing to everyone and start marketing to the roofs that are actually due.
Roof age: think in ranges, not dates
Nobody can tell you a roof was installed on a specific day from the street or from the sky. What you can responsibly estimate is a range. A roof that reads as 18 to 24 years old on asphalt is in the replacement window regardless of the exact install date. That range is enough to act on.
Where roof-age signal comes from:
- Aerial and satellite imagery analysis. Modern imagery can estimate roof age ranges from visible wear, granule loss, color fade, patching, and material. It is probabilistic, not a birth certificate, but a range like "likely 16 to 22 years" is exactly what you need to prioritize a route.
- Year-built as a proxy. If a home was built in 2002 and you see no sign of a re-roof, the original asphalt roof is at or past end of life. Year-built from assessor data is a free, rough first pass.
- Permit records. Some jurisdictions publish roofing permits. A re-roof permit pulled in 2019 tells you that roof is young; the absence of any permit on a 2001 home suggests the original is still up there.
- Your own field observations. Every roof your crews drive past is a data point. Train them to flag obvious end-of-life roofs.
The practical move: append a roof-age range to every prospect record, then sort. The roofs reading 17+ years on asphalt go to the top of the work list. The 5-year-old roofs get parked for a future cycle. You just made your mail, your knocks, and your dials several times more efficient without spending more.
Storm exposure: model it per roof, not per county
A hail report for a county is almost useless for targeting. Hail falls in narrow swaths. The house on one street can be totaled while the house a mile away is untouched. What you want is exposure modeled at the address level: did meaningful hail or damaging wind pass over THIS roof, when, and how hard.
Storm signal sources:
- Official storm reports from the national weather service and storm prediction center give you dates and general areas of severe hail and wind. Good for "a storm happened here on this date," weak for "this specific roof was hit."
- Radar-derived hail footprints. Higher-resolution products estimate hail size and path at a finer grain, letting you draw a swath over a map and select the addresses inside it.
- Per-roof storm modeling. The most actionable form: a model that estimates, for each individual address, the odds that the roof took damaging hail or wind, given the storm physics and the roof's own characteristics. This is odds, not proof. A roof never "definitely" has damage until someone inspects it. But odds let you rank an entire affected area and work the highest-probability roofs first.
The honest framing matters here, and not only for ethics: a model gives you probability, an inspection gives you facts. You market on the probability, you sell on the inspection.
Where RoofPredict fits
Doing roof-age estimation and per-roof storm modeling by hand, address by address, is not realistic across thousands of records. This is the specific gap RoofPredict was built for. You feed it an area or your own address list, and it returns, per household, a roof-age range estimated from aerial imagery plus storm exposure modeled per roof, so you can rank doors, routes, and mailing lists by which roofs are most likely due, either from age aging them out or a storm wearing them out. It will also enrich a list you already own, appending roof-age and storm signals to your existing CRM or mailing file so your warm database gets the same prioritization as a fresh prospect pull.
What it does not do, and what no honest tool should claim: it does not tell you a roof has damage, it does not give an exact install date, and it does not promise a sale. Roof age comes back as a range, and storm exposure comes back as odds. You still send a human to inspect. What changes is that your human goes to the right roofs first instead of burning a day knocking on 4-year-old roofs. If you have ever wanted your direct mail and your canvass routes pointed at the roofs that are actually aging out and the ones a storm just chewed on, that ranking is the product.
A worked enrichment pass, step by step
To make this concrete, here is how you would actually enrich a raw 2,000-address pull for a target ZIP, start to finish.
- Standardize the addresses so each one is a clean, matchable string. Roughly 5 to 15 percent of a raw pull will have formatting problems that break matching if you skip this.
- Append assessor data: year built, owner name, owner-occupied flag, and property characteristics. Year built gives you a free first-pass roof-age proxy and lets you drop obviously-young homes immediately.
- Append a roof-age range from imagery analysis. Now "built in 2002" becomes "original asphalt, reads 20 to 24 years, no sign of re-roof" versus "built in 2002 but re-roofed around 2015, reads 9 to 12 years." Those two homes get completely different treatment despite identical build dates.
- Overlay storm history: which of these roofs sat under damaging hail or wind in the last few years, and how hard. Tag each with an exposure band and the most recent significant event date.
- Score and sort. Combine age and storm into a simple priority: due-now (aged or recent high-probability storm), due-soon, not-due.
- Drop the dead weight. Renters where you need an owner, young re-roofs, addresses that failed validation. You will typically cut a 2,000-address raw pull to a few hundred genuinely-due records. That cut is the whole point: you are paying to mail and knock the few hundred that can buy, not the 2,000 that mostly cannot.
The mistake is skipping straight from raw pull to mail house. Every dollar you spend before enriching is a dollar mostly aimed at roofs that are not due.
Segmentation: stop mailing everyone the same postcard
A database is only as good as your ability to slice it. The single biggest mistake in roofing direct mail and email is sending one message to the whole list. Different records are at different stages and have different signals; they need different messages and different timing.
Here is a segmentation scheme that covers most roofing businesses. Build these as saved filters in your CRM or as tabs in your sheet.
Segment by relationship stage
| Segment | Who they are | The job of the message |
|---|---|---|
| Past customers | You did their roof | Referral ask, service/maintenance, warranty check-in |
| Lost bids | You bid, they went elsewhere | Re-engage; the problem you found is still there |
| Cold prospects (aged roof) | No relationship, roof reads end-of-life | Educate on roof age, offer inspection |
| Cold prospects (storm) | No relationship, in a verified storm footprint | Documentation offer, time-sensitive |
| Neighbors of jobs | Adjacent to recent work | Social proof, "we are in your neighborhood" |
| Dead/unqualified | Bad data, young roof, opted out | Suppress; do not spend on them |
Segment by roof signal
Within the prospect pool, sort by the enrichment you just did:
- Due now: asphalt roofs reading 18+ years, or any roof in a recent high-probability storm swath. These get your best effort and your fastest follow-up.
- Due soon (12 to 36 months): roofs reading 13 to 17 years. These get a long, low-cost nurture (an email or postcard a couple times a year) so you are top of mind when they tip over.
- Not due: young roofs. Suppress from active campaigns, keep in the database, revisit on a cycle.
A worked example of why this matters. Say you have a 5,000-address prospect list and a $5,000 direct-mail budget at roughly $1 per touch. Mail all 5,000 once and you reach everyone once and convert almost nobody, because most of those roofs are not due. Instead, enrich the list, find the 900 reading 17+ years or sitting in a storm swath, and mail those 900 five times over a quarter. Same budget, same number of touches, but every touch lands on a roof that might actually buy, and repetition is what makes mail convert. The enrichment did not cost you reach; it concentrated it.
Channels and cadence: how to actually work the list
A segmented, enriched database is a loaded gun. Cadence is how you fire it. Roofing buyers do not respond to one touch. They respond to a sequence across channels, timed to their signal.
The channels, ranked by cost and intimacy
- Email. Cheapest channel you own. Great for nurture, past-customer reactivation, seasonal reminders, and educational content. Weak as a sole channel for cold prospects. Keep your list clean or you will land in spam.
- Direct mail (postcards and letters). The workhorse of roofing database marketing. Tangible, local, hard to ignore. Works best as a repeated sequence, not a one-shot. Handwritten-style letters and "we just roofed your neighbor" postcards outperform generic glossy cards.
- SMS/text. High open rates, high intimacy, high legal risk. Powerful for warm contacts who gave you their number and consent; dangerous for cold lists. Respect consent rules rigorously.
- Phone. Best for warm records: past customers, lost bids, people who filled a form. A salesperson dialing a list of aged-roof past bids will book appointments a postcard never could.
- Door knock (targeted). Not random canvassing. Knocking only the enriched "due now" and storm addresses, ideally near a job you are already doing. The database turns a wandering canvass into a tight route.
- Retargeting ads. Upload your list to ad platforms and show ads only to your database. Cheap reinforcement that makes your mail and knocks feel familiar.
The winning play is multi-touch across two or three of these aimed at the same segment in a coordinated sequence.
A sample 90-day cadence for an "aged roof" cold segment
- Day 1 — Postcard #1. Lead with the roof-age angle: roofs in your neighborhood from this era are reaching the end of their life; free inspection.
- Day 10 — Postcard #2. Social proof: photos of a nearby completed job, "we just finished a roof two streets over."
- Day 21 — Letter. A personal-format letter explaining what end-of-life asphalt looks like and why catching it early beats waiting for a leak.
- Day 35 — Email (if you have it) + retargeting ads switch on.
- Day 50 — Postcard #3. A specific, low-friction offer: a free roof age and condition report, no obligation.
- Day 70 — Phone call (if you have a number). "We sent you a couple of notes about your roof's age; can we get you on the schedule for a free look?"
- Day 90 — Final postcard. Last touch before the record moves to long-cycle nurture.
Non-responders do not get deleted. They drop into a low-cost nurture (two to four touches a year) and re-enter an active sequence when a storm hits their street or their roof crosses an age threshold.
A sample storm-segment cadence (faster, tighter, compliant)
When a verified storm passes over part of your database, speed wins, but so does compliance. The message stays strictly on documentation, never on claim outcomes.
- Day 1 to 3 — Door knock the high-probability addresses while it is fresh, offering a free inspection and damage documentation.
- Day 2 — Postcard hits the wider storm swath: "A storm passed over your area on [date]. We document roof damage thoroughly so you have an accurate record."
- Day 4 — Text/email to any warm contacts in the footprint who opted in.
- Day 7 to 14 — Second knock/mail to non-answers; storm urgency fades fast, so the window is short.
Message copy that converts (and the copy that flops)
Cadence is the skeleton; the words on the card are the muscle. A few principles that separate mail that books appointments from mail that goes in the trash.
Lead with the roof, not with you. The homeowner does not care that you are family-owned since 1998. They care that the roof over their kids is twenty years old. Open every piece with their situation. Weak: "Acme Roofing — Quality You Can Trust." Strong: "Homes on your street built around 2003 are reaching the end of their original asphalt roof's life. Here is how to tell if yours is one of them."
Be specific and local. Generic mail reads as junk; specific mail reads as a neighbor. Name the subdivision. Reference the build era. Mention the job you just finished two streets over. Specificity is the cheapest credibility you can buy.
Make the offer low-friction. The first ask is never "buy a roof." It is "let us take a free look and give you a written roof-age and condition report, no obligation." You are selling the inspection, not the replacement. The replacement sells itself once you are on the roof with photos.
One call to action per piece. A postcard that asks the reader to call, scan a code, visit a site, and follow you on social does none of them. Pick one action and make it obvious.
Here are three message skeletons you can adapt by segment. Fill the brackets with real specifics.
- Aged-roof prospect: "[Subdivision] homes built around [year] are hitting the age where the original roof starts to fail — usually before there is a visible leak. We will give your roof a free age-and-condition check and a written report, so you know exactly where you stand. No pressure, no obligation. Call [number] or scan to book."
- Neighbor-of-job: "We just replaced the roof at [nearby street] and we are still in your neighborhood this week. Homes here are about the same age, so if you have wondered about yours, now is an easy time for a free inspection. [number]."
- Past-customer reactivation: "It has been [X] years since we put your roof on — thank you again. Two quick things: (1) we would love to do a free no-charge check to make sure everything is holding up, and (2) if you know a neighbor whose roof is showing its age, we have a referral thank-you for you. [number]."
Notice what is absent from every one of these: no payout promises, no "free roof," no deductible talk, no guaranteed approvals. We will get to exactly why in a moment.
The referral and neighbor engine inside your database
The highest-converting, lowest-cost records in any roofing database are not prospects at all. They are the people who already love you and the people who live next to a roof you just nailed down. A database that does not systematically harvest both is leaving the easiest money on the table.
Turn every job into a neighbor campaign
The moment a job is scheduled, the database should automatically generate a neighbor list: the 20 to 40 nearest addresses, pulled by proximity to the job site. Those homes were built around the same time, carry similar roofs, and are about to watch your crew work for two days. Hit them with a coordinated mini-cadence timed to the job:
- Before the job: a "we are about to replace a roof on your street, sorry in advance for the noise, here is who we are" card. Sets the stage, feels courteous, plants your name.
- During the job: a yard sign at the job site and a door-hanger on the immediate neighbors while the crew is visibly working. Live social proof beats any postcard.
- After the job: a "we just finished the roof at [address] — want a free look at yours while we are in the area?" card to the same list.
Enrich that neighbor list with roof-age the same way you enrich any prospect pool, so you knock the genuinely-due neighbors first. A job is not finished when the dumpster leaves; it is finished when the neighbor list is in the sequence.
Systematize referrals instead of hoping for them
Referrals are the highest-trust lead a roofer can get, and most companies generate them by accident. Build them into the database lifecycle:
- Ask at peak happiness. The referral ask should fire automatically a few days after job completion and final walkthrough, when satisfaction is highest, not six months later when the warm feeling has faded.
- Make the ask specific. "Do you know anyone who needs a roof?" gets nothing. "Is there a neighbor whose roof looks about as old as yours did?" gets names.
- Give the referrer a reason and a tool. A simple thank-you for a referral that turns into a job, plus an easy way to pass your info along (a card, a link), removes friction.
- Track the referral chain in the database. Tag each referred record with who sent it. Your best referrers become a segment of their own worth extra attention.
A single completed job, worked correctly, should drop a neighbor list and a referral ask back into your database every time. That is the flywheel that makes the asset grow faster than you spend it down.
The legal lines you cannot cross (storm, claims, and consumer rules)
Roofing database marketing runs straight into two bodies of rules: contact-consent law and insurance/claims law. Cross either and you trade a marketing win for fines or a license problem. Know the lines.
Contact and data rules
- Do-not-call and texting consent. Calling and especially texting cell numbers without proper consent is heavily regulated. Scrub against do-not-call registries, honor opt-outs immediately, and get real consent before you text. A purchased list does not come with texting consent.
- Email rules. Commercial email must let people opt out and must honor it promptly, with a real physical address in the footer. Keep your list clean; high complaint rates wreck deliverability.
- Honest claims in your marketing. Consumer-protection law forbids deceptive advertising. "Free roof," guaranteed approvals, and fake urgency are exactly the kind of claims that draw complaints and enforcement.
The insurance and claims line (read this twice)
When storm work enters the picture, contractors routinely wander into territory that is, in many states, unlicensed public adjusting. Here is the safe frame and the do-not-say list.
What a roofer absolutely may do: inspect the roof, document damage thoroughly with photos and measurements, prepare an accurate, line-item repair estimate (aligned to standard estimating practice) for the work you would perform, and state plain facts about your own scope of work to the carrier. You hand that documentation and estimate to the homeowner. The homeowner files the claim. The insurer decides coverage. You are the documentation-and-estimate expert. Full stop.
What a roofer may NOT do (this is the do-not-say list — keep it taped to every salesperson's dashboard):
- Do not, for a fee, negotiate, adjust, or "handle" the homeowner's claim with the insurer.
- Do not interpret the policy or tell the homeowner what is or is not covered.
- Do not promise a specific payout, a specific approval, or that the claim will go through.
- Do not promise the deductible will be waived, absorbed, eaten, or made to disappear. Offering to cover a deductible is illegal in many states and is insurance fraud.
- Do not advertise a "free roof" or imply the homeowner pays nothing.
- Do not represent the homeowner against the insurer. That is the homeowner's role, or a licensed public adjuster's.
Your database marketing should capture storm intent (people are searching, people are worried) and answer it on the side you are allowed to operate on: thorough documentation and an accurate estimate. Market the inspection and the documentation, never the outcome. A postcard that says "we document storm damage thoroughly and give you an accurate repair estimate" is clean. A postcard that says "we get your roof approved and waive your deductible" can end your business. Teach the difference to everyone who touches the list.
Edge cases: storm chasing, commercial roofs, and slow seasons
The core playbook holds across roofing businesses, but a few situations need their own handling.
When a storm hits and your whole database lights up
A major hail or wind event in your footprint is the highest-leverage moment a roofing database ever sees, and also the moment most companies blow it. Two failure modes: they are too slow (the out-of-town storm chasers knock the neighborhood before the local roofer even pulls the address list), or they get sloppy on compliance because everyone is in a hurry.
The database fix is to have the storm response pre-built so it fires on day one. Before storm season, you should already have: the enrichment pipeline ready to draw a swath and pull addresses, the door-hanger and postcard templates printed or print-ready with compliant copy, and the crews briefed on the do-not-say list. When the storm hits, you draw the footprint, pull the highest-probability addresses, and your trucks are knocking the right doors while the chasers are still pulling permits. Speed plus a pre-built compliant process is how the local company beats the out-of-state chaser.
One discipline that pays off: do not knock the entire county. Use per-roof storm odds to knock the narrow swath that actually took hail. A focused knock on 300 high-probability roofs beats a scattershot knock on 3,000, and it keeps your crews out of the homes where there is no damage to honestly document.
Commercial and property-manager databases
If you do commercial work, your database looks different. The unit is the building and the relationship is the property manager, facility manager, or building owner, often controlling many roofs. Fields shift toward roof system type (TPO, EPDM, modified bitumen, built-up), square footage that runs into the tens of thousands, last service date, warranty status, and the decision-maker's role.
The marketing motion is slower and more relationship-driven: fewer accounts, much higher value, longer sales cycles, and outreach that looks more like account-based selling than postcards. But the database logic is identical. You enrich (which commercial roofs are aging out, which sit in a storm path), you segment (by manager, by portfolio, by roof age), and you work a cadence. A property manager who controls fifteen buildings is worth a personal sequence of calls, emails, and a roof-condition assessment offer, not a generic mailer.
Working the database through the slow season
Roofing is seasonal, and the database is your hedge against the winter dip. The slow months are when you should be doing the unglamorous, high-value work the busy season never allows: mining and cleaning the warm list, re-enriching roof-age signals, running past-customer maintenance and referral campaigns, and filling the spring pipeline with nurtured "due now" prospects. A company that works its database in January books a fuller March. The list does not take a season off.
Data hygiene: the boring work that makes the whole thing function
A database degrades. People move (homeowners turn over every several years on average), emails bounce, numbers change, roofs get replaced. A neglected database quietly fills with garbage until your campaigns mail dead addresses and dial dead numbers. Hygiene is not optional; it is the maintenance that keeps the asset valuable.
Run these on a schedule:
- Deduplicate. The same household entered three ways (web lead, canvass, past bid) is one record, not three. Merge on standardized address or parcel number. Duplicates waste money and make your numbers lie.
- Standardize addresses. "1420 Birchwood Ln" and "1420 Birchwood Lane" must resolve to one record. Run addresses through a standardization step so they match.
- Validate and append. Periodically re-verify phones and emails; append missing ones via skip-trace where appropriate and legal.
- Suppress the dead and the opted-out. Maintain a suppression list of unsubscribes, do-not-call entries, and confirmed bad records. Never mail or dial them again. This protects both your deliverability and your legality.
- Refresh roof-age and storm signals. A roof you flagged at "16 years" three years ago is now in the replacement window. Re-enrich your database periodically so the "due soon" segment graduates into "due now" on schedule, and so roofs you have since replaced drop out.
- Decay-handle non-responders. After a full sequence with no response, move records to long-cycle nurture rather than hammering them.
A practical rhythm: dedupe and standardize quarterly, re-enrich roof/storm signals every 12 months (or immediately after a storm in your footprint), and process opt-outs and bounces continuously.
The math: measuring whether your database marketing works
If you cannot measure it, you cannot improve it, and you will eventually convince yourself it does not work and quit right before it pays off. Track these.
Per-campaign metrics
| Metric | How to read it |
|---|---|
| Response rate | Of records touched, how many raised a hand (call, form, reply). Direct mail to a tight, enriched roofing list commonly runs well above generic mass-mail benchmarks because the list is qualified. |
| Cost per response | Total campaign spend divided by responses. Watch this trend as you tighten segmentation. |
| Appointment set rate | Of responses, how many became a booked inspection. |
| Close rate | Of appointments, how many became contracts. |
| Cost per acquired job | Total spend divided by jobs won. The number that actually matters. |
| Revenue per record per year | Total revenue from the database divided by record count. The asset-value metric. |
A worked ROI example
Suppose you enrich a 5,000-address prospect list and isolate 900 "due now" records (aged roofs plus a storm swath). You run a 5-touch direct-mail sequence at roughly $1 per touch:
- Spend: 900 records x 5 touches x $1 = $4,500.
- A tight, enriched, repeated-touch roofing list might pull a 3 to 5 percent response. Take the low end: 3 percent of 900 = 27 responses.
- Of 27 responses, set 60 percent as inspections = 16 appointments.
- Of 16 inspections, close 40 percent = 6 jobs.
- At a modest $12,000 average job, that is $72,000 in revenue from $4,500 in mail.
That is a roughly 16-to-1 return, and it does not even count the referrals and neighbor opportunities those 6 jobs spawn back into the database. Now compare that to spending the same $4,500 on shared leads at $75 each: 60 leads, closing maybe 5 percent, equals 3 jobs. The enriched database doubled the output of the same dollars. Run your own numbers with your own averages, but build the model so you can see where the leverage is. Almost always, the leverage is in better targeting (enrichment) and more touches per qualified record, not in buying more raw names.
Attribution discipline
Tag every record with its source and every booked job with the campaign that produced it. Without this you cannot tell which segment, channel, or message is carrying the load, and you will keep funding the losers. A simple "how did you hear about us / which postcard" question at the appointment, logged back to the record, closes the loop.
Tooling: what you actually need to run this
You do not need a six-figure software stack. You need a few capabilities, however you assemble them.
- A system of record (CRM). Roofing-specific CRMs hold the property and storm fields natively and integrate with mail and email. A general CRM works too if you can add custom fields. At the very smallest scale, a disciplined spreadsheet runs your first few campaigns.
- An enrichment source for roof age and storm exposure. This is the capability most roofers are missing and the reason their lists underperform. Whether you use RoofPredict to append roof-age ranges and per-roof storm odds, or assemble it from assessor data and storm reports by hand, you need the signal. A list without roof-age and storm enrichment is mailing in the dark.
- A mail vendor. For printing and sending postcards and letters at volume, ideally one that takes your segmented file and runs sequences.
- An email platform. Any reputable email service that handles opt-outs and gives you deliverability tooling.
- A skip-trace / data-append source. For filling in missing phones and emails, used within the contact-consent rules.
- An ad platform for list retargeting. Optional but cheap reinforcement.
Start with what you have. A spreadsheet, an enrichment pass, a mail vendor, and a phone will out-earn most roofers' entire paid-lead budget.
A 30-day launch plan
If you are starting from zero, here is the order of operations. You can run this in a month.
Week 1 — Consolidate. Pull every warm record (invoices, bids, lost bids, web leads, canvass logs, warranty) into one sheet with the field structure from earlier. Do not clean yet; just gather. Expect to surface more addresses than you guessed.
Week 2 — Clean and structure. Dedupe, standardize addresses, kill obvious junk, flag opt-outs into a suppression list. Add the prospect addresses you want (neighbors of recent jobs, a known-age subdivision or two). You now have a real database.
Week 3 — Enrich and segment. Append roof-age ranges and storm exposure to every record. Build your saved segments: past customers, lost bids, due-now prospects, due-soon nurture, storm swath, suppress. Sort the prospect pool so the genuinely-due roofs float to the top.
Week 4 — Launch two campaigns. (1) A past-customer referral + reactivation touch (email plus a postcard) to harvest the easy, high-trust wins. (2) A direct-mail sequence to your "due now" prospect segment, set up as a multi-touch cadence. Tag everything for attribution. Then watch the response numbers and feed every result back into the database.
From there it is a flywheel: every completed job adds the customer, their neighbors, and fresh proof; every storm re-activates a swath; every quarter of hygiene keeps the signal sharp. The database that printed 6 jobs this quarter is bigger and better-targeted next quarter.
What pros get wrong
A few failure modes worth naming, because they are common and expensive:
- Treating the warm list as worthless. Owners obsess over cold lead gen while thousands of past customers and lost bids sit untouched. The warm list is where the cheap money is. Work it first.
- One-and-done mail. A single postcard to a list almost never works, and the roofer concludes "mail doesn't work." Mail works in sequences. Budget for 4 to 7 touches per qualified record, not one touch to seven times as many records.
- No enrichment. Mailing an un-enriched list means most of your spend hits roofs that are nowhere near due. The fix is roof-age and storm signal, which concentrates the same budget on the roofs that can actually buy.
- Letting the database rot. No hygiene, no re-enrichment, and within a year half the list is dead. The asset only compounds if you maintain it.
- Crossing the claims line. Chasing storm intent with "free roof / we waive your deductible / guaranteed approval" messaging. It converts a little faster right up until it gets you fined or shut down. Stay on the documentation-and-estimate side, always.
- No attribution. Running campaigns with no source tagging, so you cannot tell what worked and you defund the winners by accident.
Get those right and database marketing becomes the most durable, highest-return channel a roofing company owns. It does not get more expensive when the ad auction heats up. It does not dry up when a competitor outbids you for shared leads. It is yours, it compounds, and the roofs that are due are already sitting in it, waiting for you to point your trucks at the right doors.
FAQ
What is roofing database marketing?
It is the practice of maintaining a structured, deduplicated record of every household and contact you have a relationship or signal with, attaching attributes to each (roof age range, storm exposure, last contact, source, stage), and running targeted outreach based on those attributes. The database is your system of record; campaigns are just filtered queries against it. It is the opposite of buying a giant list and spraying the same postcard at everyone.
How do I build a roofing customer database from scratch?
Start by consolidating every warm record you already own: past invoices, old bids (especially lost ones), cold web leads, canvass logs, and warranty records, all into one sheet with consistent fields. Then expand with prospect addresses you have a reason to target, such as neighbors of completed jobs and same-age subdivisions. Dedupe, standardize the addresses, suppress opt-outs, and only then start marketing. Most roofers find they already own thousands of addresses before buying a single one.
How do I know which roofs in my database are actually due for replacement?
The two best predictors are roof age and storm exposure. Append a roof-age range (estimated from aerial imagery, year-built, or permit records) and a storm-exposure signal (which roofs sat under damaging hail or wind, and when) to every record. Then sort so asphalt roofs reading 17 or more years and roofs in a recent high-probability storm swath rise to the top. You market on those odds and ranges; you confirm with a physical inspection. Roof age is always a range, not an exact install date.
What is the difference between a roofing list and a roofing database?
A list is a flat pile of names and addresses you mail once. A database is a living, structured asset where each record carries attributes and history, so you can segment it, trigger the right message at the right time, and watch it compound as you add jobs, neighbors, and proof. Lists decay to zero after one campaign; databases grow more valuable the more you work them.
How many times should I contact a prospect before giving up?
For an enriched, genuinely-due prospect, plan a sequence of roughly 4 to 7 touches across mail, email, and phone over about 90 days, not a single postcard. Non-responders should not be deleted; move them into a low-cost long-cycle nurture (a couple of touches a year) and re-activate them when a storm hits their street or their roof crosses an age threshold.
Is roof age data accurate enough to market on?
Yes, as long as you treat it as a range rather than an exact date. Imagery-based and year-built-based estimates give you bands like "likely 16 to 22 years," which is precisely the resolution you need to decide whether a roof is worth a knock today or belongs in a future cycle. You are not claiming to know the install date; you are prioritizing where to spend your marketing and field time.
Can I tell homeowners their roof has storm damage in my marketing?
No. A model or a storm report gives you odds that a roof was exposed to damaging hail or wind, not proof of damage. Damage is only established by a physical inspection. Market the inspection and your documentation (we document storm damage thoroughly and provide an accurate repair estimate), not the outcome. Claiming damage you have not inspected, or promising a result, invites consumer-protection complaints.
What can a roofer legally do versus not do on insurance claims?
A roofer may inspect, document damage with photos and measurements, prepare an accurate line-item repair estimate for their own scope, and state facts about that scope to the carrier, then hand it all to the homeowner. A roofer may NOT, for a fee, negotiate or handle the claim, interpret what the policy covers, promise a specific payout or approval, waive or absorb the deductible, advertise a free roof, or represent the homeowner against the insurer. Those last items are, in many states, unlicensed public adjusting or outright fraud. The homeowner files; the insurer decides coverage.
How do I keep my roofing database from going stale?
Run hygiene on a schedule: dedupe and standardize addresses quarterly, validate and re-append phones and emails, continuously process unsubscribes and do-not-call entries into a suppression list, and re-enrich roof-age and storm signals about once a year (or immediately after a storm). Re-enrichment is what graduates your due-soon records into due-now on schedule and drops roofs you have since replaced.
How do I measure whether database marketing is actually working?
Track response rate, cost per response, appointment-set rate, close rate, and the number that matters most, cost per acquired job, plus revenue per record per year as your asset-value metric. Tag every record with its source and every booked job with the campaign that produced it, so you can tell which segments and channels carry the load and fund the winners. Build a simple ROI model and compare it head-to-head against your shared-lead spend.
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
- Asphalt Roofing Manufacturers Association — Roofing Resources — asphaltroofing.org
- National Roofing Contractors Association — nrca.net
- Insurance Institute for Business & Home Safety (IBHS) — Hail — ibhs.org
- NOAA National Weather Service — Storm Prediction Center — spc.noaa.gov
- NOAA National Centers for Environmental Information — Storm Events Database — ncdc.noaa.gov
- Federal Trade Commission — CAN-SPAM Act Compliance Guide for Business — ftc.gov
- Federal Communications Commission — Telephone Consumer Protection Act (TCPA) Rules — fcc.gov
- FTC / National Do Not Call Registry — donotcall.gov
- Texas Department of Insurance — Public Insurance Adjusters — tdi.texas.gov
- National Association of Insurance Commissioners — Public Adjusters — naic.org
- U.S. Census Bureau — American Housing Survey — census.gov
- International Code Council — International Residential Code (Roofing) — iccsafe.org
- USPS — Direct Mail and Every Door Direct Mail — usps.com
- RoofPredict — roofpredict.com
Related Articles
How to Rank Neighborhoods by Roof Replacement Potential
A practical scoring system roofing companies use to rank neighborhoods by how likely the roofs are to need replacing soon, so canvassing, mail, and CRM work hit the highest-probability streets first.
Building a Pre-Listing Roof Inspection Service for Realtors: A Roofer's Playbook
A practical playbook for roofers who want listing agents to call them first: what to inspect, what the report needs to say, how to price it, and how to turn a free or low-cost inspection into a repeatable book of jobs.
Roofing Customer List Segmentation Strategy: Turn a Flat List Into Booked Jobs
How to cut a flat pile of names into segments your crew can actually work, so you stop mailing new roofs and start booking the homeowners who need you now.