How to Generate Your Own Roofing Leads (Instead of Renting Them)
On this page
Every roofing owner I have ever talked to has the same complaint about bought leads, and they say it almost the same way: "I'm paying for a homeowner who already talked to four other companies before I called." That is the whole problem in one sentence. When you buy a shared lead from an aggregator, you are not buying a customer. You are buying a foot race against everybody else who bought the same name, and the homeowner sits at the finish line deciding who annoyed them least.
Generating your own leads is a different animal. It is slower to start and it does not come with a credit card field and a dashboard. But the leads are yours, the cost per job drops every year as your name gets known in an area, and nobody is reselling the same homeowner to the guy across town. The point here is to give you the actual workflows, the numbers to budget against, and the mistakes that quietly drain margin, so you can stand up a lead machine that belongs to your company instead of renting one a click at a time.
We will go through the channels that work for residential and storm-restoration roofers, in roughly the order of return-on-effort: your existing customer list (the cheapest leads you already own), referrals, door-to-door canvassing, direct mail, local SEO and Google Business Profile, paid search done correctly, and the data layer that ties it all together so you stop knocking and mailing roofs that are five years old. None of this is theory. It is the stuff that fills a board on Monday morning.
Why bought leads feel expensive even when they look cheap
A shared lead from a national aggregator might cost you anywhere from $30 to well over $150 depending on your market and whether there has been recent storm activity. That number looks fine until you do the real math. A shared lead is sold to multiple contractors, so your set rate is a fraction of the people who answered first. If four companies bought that lead and you close one in four of the ones you actually reach, your true cost per signed job is the lead price multiplied by the contacts it took, plus the windshield time and the estimator hours burned on the three you lost.
Run it honestly:
- Lead price: $75
- You reach 6 of every 10 leads (the rest never answer): effective price per reached lead is $125
- You set an appointment on 1 of every 3 reached: $375 per appointment
- You close 1 of every 4 appointments (shared leads close low because they are shopped): $1,500 in lead cost per signed job, before a single estimator hour
That is a real cost-per-acquisition north of fifteen hundred dollars on a residential re-roof, and it never gets cheaper. Next year the same aggregator charges the same or more, and you have built nothing. You do not own the homeowner's information in any durable way, you cannot remarket to the neighborhood, and the second a competitor outbids you on the platform your flow stops.
Leads you generate yourself invert all of that. The first job in a new neighborhood is expensive. The tenth is nearly free, because your yard signs are up, your trucks have been parked on the street for a week, and three neighbors already asked the crew for a card. You are building an asset. Bought leads are a rented treadmill.
That does not mean you torch your aggregator account on day one. Bought leads can bridge a slow month while your own channels ramp. Treat them like a line of credit: useful in a pinch, expensive to live on. The goal is to shift the mix every quarter until owned leads carry the business and bought leads are the seasoning, not the meal.
Start with the money already in your file cabinet
The single most overlooked lead source in roofing is the customer list a company already has and never works. If you have been in business five years you are sitting on hundreds or thousands of past customers and old estimates that never closed. These people already know your name, already let you on their property, and in the case of old estimates already raised their hand once. Reaching them costs you a phone call or a postcard, not a $75 click.
There are three buckets in your existing data, and each gets worked differently.
Past customers (the warmest list you own)
A homeowner you re-roofed eight years ago is not a dead contact. They have neighbors, they have rental properties, they have gutters and skylights and ventilation that age, and they will eventually need work again or know someone who does. The mistake is treating the install as the end of the relationship instead of the start.
A simple past-customer workflow that prints money:
- Pull every customer from the last 10 years out of your CRM or, if you are honest about your systems, out of the shoebox.
- Tag them by install year so you know roughly how old each roof is.
- Anyone past year 7 on an asphalt roof gets a "time for a free maintenance check" touch every spring. Not a hard pitch. A check-in. You are reminding them you exist and putting eyes on aging roofs.
- Every past customer gets a referral ask twice a year (more on the mechanics below).
- After any significant local storm, the whole list gets a "we're in your area inspecting roofs we installed, want us to look at yours" call or text.
That last one is gold and it is honest. You installed the roof. Checking on it after a storm is good service, not a stunt. Some of those roofs will have damage that supports an insurance claim, some will be fine, and either way you are the company on the property instead of the out-of-town crew.
Old estimates that never closed (the forgotten pipeline)
Every roofer has a graveyard of estimates that went quiet. The homeowner got three bids, wasn't ready, the spouse said wait, the timing was wrong. Most companies never touch these again. That is leaving signed jobs on the table.
An unconverted estimate from two or three years ago is a homeowner whose roof is now two or three years older and two or three years closer to failure. A roof that was "fine for now" in 2023 might be leaking in 2026. Work this list on a quarterly cadence:
- Sort old estimates by the age of the roof at the time you bid it.
- Anyone whose roof was already 15-plus years old when you quoted them goes to the top.
- Call with a specific, non-pushy reason: "We were out your way, your roof was getting up there when we looked at it a couple years back, wanted to see if anything changed."
- Re-quote anything that has moved. Material prices have changed, their situation has changed, and you already have the measurements on file.
Service and repair customers (the upsell ladder)
A homeowner who paid you $400 to fix a leak is a re-roof waiting to happen. Track every repair, and when the same roof generates a second or third service call, that is your signal to have the replacement conversation. A roof that needs repeat repairs is usually telling you it is at end of life, and the homeowner has already proven they will pay you for roof work.
The reason your old list beats almost everything else is the cost structure. The leads are free or close to it. The trust is pre-built. And nobody else is reselling these people, because they are yours. The catch is you have to keep clean records to make it work, which is the unglamorous part most owners skip. Fix the data, work the list, and you will find a season of jobs you already paid to acquire once.
Referrals: the lead source with the highest close rate and the worst follow-through
Referred leads close at far higher rates than any cold channel, and most roofers know this, yet almost nobody runs referrals as an actual system. They "ask sometimes" and hope. Hope is not a program. A referral program needs a trigger, an ask, an incentive, and a follow-up, written down and enforced.
Build the ask into the job, not your memory
The single highest-converting moment to ask for a referral is the day the job finishes and the homeowner is standing in the driveway looking at a clean new roof, happy and impressed. That is the emotional peak. If your crew leads and project managers do not have a scripted referral ask at job completion, you are throwing away the best moment you will ever get with that customer.
A completion-day script that works without feeling slimy:
"We're really happy with how this turned out, and we hope you are too. Most of our work comes from neighbors telling neighbors, not from advertising. If you know anyone whose roof is getting up there, we'd love an introduction, and we take care of you when it turns into a job. Mind if I leave you a few cards?"
That does three things: it states plainly that you grow by referral (which signals you are a real local company, not an ad machine), it asks specifically, and it names a reward.
Make the incentive real and worth talking about
Vague "tell your friends" gets vague results. A concrete reward gets action. Common structures that hold up:
- A flat cash or gift-card reward per referral that turns into a signed job ($100 to $250 is typical and worth it).
- A tiered reward for repeat referrers, so the neighbor who sends you three jobs gets treated like the partner they are.
- A donation option, because some customers feel weird taking cash and would rather you give to the local school or food bank in their name. Offer both.
Keep the reward tied to a closed job, not a name. You are paying for outcomes, not contact information. And pay fast. The referrer who gets their check the week the job closes tells the story to everybody. The one who waits two months stops sending people.
Turn happy customers into a visible reputation
Referrals and reputation are the same engine running at different speeds. A private referral reaches one neighbor. A public review reaches everybody searching your name. Bake a review request into the same completion moment, but separate it from the referral ask so you are not asking for two things in one breath. Text a direct link to your Google Business Profile review page the evening of the completion day, while the new roof is still the most exciting thing that happened to them that week. A short, specific text outperforms a generic "please review us" email by a wide margin.
The compounding here is the whole point. Reviews lift your local search ranking, which generates inbound calls, which become jobs, which become more reviews. None of it shows up on an aggregator's invoice, and none of it can be outbid by a competitor with a bigger card on file.
Door-to-door canvassing: still the highest-control lead source in roofing
Knocking doors has a bad reputation, partly earned by storm-chasing crews that blew through neighborhoods making promises and vanishing. Done right, by a local company that stands behind its work, canvassing is the most controllable lead source there is. You decide exactly which streets, exactly which houses, and exactly what gets said. No platform sits in the middle taking a cut.
The problem is that brute-force knocking burns reps and burns margin. A canvasser who knocks 100 random doors and finds that 60 of them have roofs under ten years old just wasted most of a day and most of their morale. The fix is not knocking harder. It is knocking smarter, which means knowing something about the roofs before the rep walks up the driveway.
What the best canvassing operations get right
The gap between a canvassing program that works and one that quietly bleeds money usually comes down to a handful of disciplines:
- Target by roof condition, not by zip code. The neighborhoods with the most opportunity are the ones with aging roofs, not the ones that are simply nearby. Working a subdivision built in 2019 is a waste no matter how convenient it is.
- Give reps a reason to be there. "We're in the neighborhood" is weak. "We noticed a lot of the roofs on this street are getting up there in age" is a reason. A specific observation about the actual house is stronger still.
- Knock in tight density. Park the truck, work the block, leave signs and door hangers on every no-answer. Density builds the "that company is everywhere around here" feeling that makes the next door easier.
- Track every door. No-answers, not-interested, callbacks, and appointments all get logged so the same door gets a second touch and the same rep does not knock it twice.
- Lead generation crews, separate from closers. Your strongest knocker is rarely your strongest closer. Let the canvasser set the appointment and hand a qualified homeowner to the sales rep. Specialization lifts both numbers.
A canvassing day that actually produces
Here is the shape of a productive solo canvassing day, the kind your better reps run without thinking about it:
- Start with a route of pre-selected streets where roofs skew old, not a random radius from the shop.
- Knock the block in order, both sides, no skipping. Leave a branded door hanger on every no-answer with a handwritten note that you stopped by.
- At each answered door, lead with a specific, honest observation, not a pitch. The goal of the first sentence is to not get the door shut.
- Offer a no-cost roof check, set a time, and log it. Do not try to close the job at the door. Get the appointment.
- End the day by logging every outcome so tomorrow's route accounts for callbacks and second touches.
The reason rep churn destroys canvassing programs is simple: a new hire who knocks the wrong doors hears "no" all day, makes no money, and quits inside a month. A new hire who knocks doors where roofs are genuinely old gets real conversations, sets appointments, makes money, and stays. The difference is almost entirely in which doors they were sent to. Targeting is more than an efficiency play. It is how you keep a crew together.
The three objections you will hear at every door, and how to handle them
Green reps freeze at objections because nobody taught them the four or five things every homeowner says. There are not fifty objections; there are about five, and they repeat all day. Drill these and a first-week canvasser sounds like a veteran.
- "I'm not interested." This is a reflex, not a decision; the door is barely open and they have not heard anything yet. Do not argue. Agree, then add the specific reason you stopped: "Totally fair, I'd say the same thing. The only reason I knocked is the roofs on this block are getting up there in age, and I didn't want you to be the one who finds out the hard way during the next storm. Mind if I take two minutes to look from the ground?" You are not selling a roof at the door; you are selling a free look.
- "How much does it cost?" at the door means they are interested but testing you. Never quote a roof from the curb; you will be wrong and you will anchor low. "Honest answer is I can't give you a real number without getting up there, and I'm not going to make one up. That's exactly what the free check is for. If it's fine, I'll tell you it's fine." The willingness to say "it might be fine" is what separates you from the storm-chaser they are bracing for.
- "I already have a roofer" / "My brother-in-law does roofs." Don't fight it. "Great, keep them. A second set of eyes never hurt, and if your guy's busy after the next storm, at least you'll know where you stand." You are planting yourself as the backup, which is worth more than it sounds when their guy is three weeks out.
- "Now's not a good time." Take it at face value and set a real time. "No problem, I'm back out here Thursday. Morning or evening better?" A scheduled callback converts far better than a re-knock.
- The flat no / the angry door. Thank them, leave a hanger, log it, walk away clean. A rep who argues a hostile door generates complaints, and one council complaint can end canvassing for every roofer in town.
The through-line is that every honest answer ("it might be fine," "I won't make up a number," "keep your guy") builds the trust the trade lost to the chasers. Reps who lead with restraint out-set reps who lead with pressure.
Stay legal at the door
Door-to-door sales is regulated. The FTC's Cooling-Off Rule gives buyers the right to cancel certain sales made at their home within three business days, and you must provide written notice of that right. Many states and cities also require solicitation permits and have hours-of-operation rules and no-knock registries. Get your permits, respect no-soliciting signs and registries, and train reps on the cancellation notice. One complaint to a city council can shut canvassing down for every roofer in town, so the responsible operators police themselves.
Direct mail: boring, predictable, and still works when you target it
Direct mail is the channel everyone declares dead and the channel that keeps filling boards for roofers who do it right. The reason it still works in roofing is that the buying trigger (an old or storm-damaged roof) is tied to a physical address, and mail is the one medium that reaches a physical address with certainty. The reason most mail fails is that roofers blast an entire zip code, pay to reach thousands of brand-new roofs, and then conclude "mail doesn't work" when the response rate is a rounding error.
The whole game in roofing direct mail is the list. A great offer mailed to the wrong houses loses money. A plain offer mailed to the right houses prints. Spend your energy on who receives the piece, not on clever copy.
Build a mailing list worth paying postage on
A standard saturation mail buy hits every address in a carrier route. For a roofer that is mostly waste, because a carrier route includes the new construction, the recently re-roofed, and the homes that will not need you for fifteen years. The move is to mail a filtered list, not a saturation route:
- Filter by the age of the roof itself, not the year the house was built. The year built tells you nothing once a roof has been replaced, and re-roofs are invisible in public records and on Zillow.
- Layer in homeownership and length of residence where you can. Owner-occupied homes where someone has lived a long time skew toward roofs at end of life.
- After a storm, mail the specific blocks where the storm actually hit hardest, not the whole county.
That last point separates pros from amateurs in storm markets. A county-wide blast after a hailstorm reaches thousands of homes the storm never touched. Mailing the actual impact corridor cuts your spend by more than half and triples your relevance.
The economics, so you can budget honestly
Direct mail response rates for a cold, well-targeted roofing list typically land in the fraction-of-a-percent to low-single-digit range depending on offer, design, and whether there has been a storm. Run the math before you commit a dollar:
- Mail piece all-in (print + postage + list): roughly $0.50 to $1.00 each at volume.
- Mail 5,000 well-targeted pieces at $0.75: $3,750.
- A 0.5% response: 25 calls.
- Set appointments on 60% of calls: 15 appointments.
- Close 1 in 4: about 4 jobs.
- At an average residential re-roof, that is a strong return on $3,750, and it scales.
Notice how sensitive the whole model is to that response rate. Double the relevance of your list and the response rate climbs, and the cost per job falls through the floor. Mail to a saturation route instead and the response rate collapses because most recipients have no roof problem. The list is everything.
Mail mechanics that lift response
Once the list is right, a few mechanics move the needle:
- Make it look like a local company, not a national ad. A simple, personal piece often beats a glossy postcard for a trade like roofing.
- One clear offer and one clear next step. A free roof inspection with a phone number and a QR code beats a cluttered piece with five messages.
- Mail the same neighborhoods more than once. Direct mail compounds with repetition; the third piece into a neighborhood where your trucks are now visible outperforms the first.
- Track response by mail batch so you learn which lists and which neighborhoods pay, and double down.
Local SEO and your Google Business Profile: the inbound that runs while you sleep
Everything above is outbound: you reach out to the homeowner. Local search flips it. When a homeowner's roof starts leaking and they type "roof repair near me," you want to be the company they call. That inbound lead is the highest-intent lead in roofing because the homeowner started the conversation with a problem they already decided to fix.
The foundation is your Google Business Profile (the listing that shows up in the map pack and on Google Maps). It is free, and for most local roofers it is the single most valuable piece of online real estate they own. Yet plenty of roofers leave it half-filled-out.
Get the profile to actually rank
Google ranks local results on relevance, distance, and prominence. You influence all three:
- Complete every field. Correct categories (Roofing Contractor and relevant secondary categories), service area, hours, phone, website, and a real description. Incomplete profiles get buried.
- Pile up reviews, and respond to them. Review quantity, quality, and recency are a major local ranking factor, which is exactly why the completion-day review text earlier matters so much. Respond to every review, good or bad, professionally.
- Keep your name, address, and phone identical everywhere. Your business name, address, and phone number should match exactly across your website, your profile, and every directory. Inconsistency confuses the ranking and costs you visibility.
- Post photos of real jobs. Before-and-after roof photos, your crew, your trucks. Profiles with steady fresh photos outperform stale ones.
- Use Google Posts to keep the profile active with current offers and recent work.
Back it with pages that match how homeowners search
The profile gets you into the map pack; your website earns the organic clicks below it and the trust that closes the inbound call. The pages that pull their weight for a roofer are local and specific:
- A real page for each city or town you serve, with genuine local content, not the same paragraph with the town name swapped. Thin doorway pages get you nowhere.
- Pages for each service: re-roofing, repair, storm and hail damage, gutters, whatever you do.
- Honest, useful content that answers the questions homeowners actually ask, which is how you earn organic visibility and how you become the company that looks like the local authority.
Local SEO is slow. It can take months to climb. But once you are ranking in the map pack for your town, you have an inbound lead source that costs nothing per lead and that no competitor can outbid. It is the closest thing in roofing to a lead source you fully own.
Paid search, done so it doesn't bleed you
Google Ads is the fastest way to turn on inbound, and the fastest way to light money on fire if you run it loosely. The difference between profitable roofing PPC and a budget bonfire is discipline on a handful of settings.
- Bid on high-intent terms, not vanity terms. "Emergency roof repair [your town]" and "roof replacement quote" are buyers. "How does a roof work" is a tire-kicker. Spend on the former.
- Use a tight negative keyword list so you stop paying for clicks from people looking for roofing jobs, DIY tutorials, or materials suppliers. The negative list is where most wasted PPC spend hides.
- Geo-fence tightly to the areas your crews actually serve. Paying for a click 90 minutes away that you cannot profitably drive to is pure waste.
- Send clicks to a matching landing page with a phone number, a form, and proof, not to your generic homepage. Mismatched landing pages tank conversion.
- Use call tracking so you know which keywords produce phone calls, because in roofing the lead is usually a call, not a form fill.
- Look at Local Services Ads (the Google-screened ads at the very top of local results) where available, since they are pay-per-lead rather than pay-per-click and carry a trust badge.
Paid search is rented attention, which is fine as long as you understand that and use it to fill gaps and accelerate. The leads convert because the intent is high, but the moment you stop paying, the flow stops. Treat it as a throttle you can open and close, sitting on top of the owned channels that keep producing whether or not the card is funded.
The data layer: knowing which roofs are actually due before you spend a dollar reaching them
Every owned channel above (the old list, the canvass route, the mail drop) shares one weakness, and it is the same weakness: you are spending real money and real labor reaching addresses, and most addresses do not have a roof problem right now. The canvasser who knocks 100 doors and finds 60 new roofs. The mail buy that pays postage to thousands of homes that were re-roofed last year. The estimator driving to a house whose roof has another decade in it. The waste is not in the channel. It is in the targeting.
Public data does not solve this. Zillow and county records show the year the house was built, which tells you nothing once a roof has been replaced, and re-roofs leave no trace in those records. Measurement tools like aerial measurement reports tell you the size and pitch of a roof, which is a different question entirely. None of those answers the only question that matters for targeting: which roofs are actually old enough or beat-up enough to be due for replacement right now.
This is the gap RoofPredict was built to close. It scores roofs house by house from aerial imagery and weather data, and gives you two things for each address: a roof-age range (not an exact date, which nobody can honestly promise from the air, but a tight range like 18 to 22 years), and a per-roof model of the storms that home has actually taken. The hail and wind piece matters because a hail map only shows you where it hailed; it does not tell you which specific roofs in that area got worn out. Modeling the storm on each roof, rather than the region it passed over, is what turns a county-wide blast into a street-by-street plan.
What that changes in practice, channel by channel:
- Canvassing: instead of a random radius, your reps get a route ranked by which roofs are oldest and most storm-worn. They knock doors where the conversation is real, set more appointments, make more money, and quit less.
- Direct mail: instead of a saturation route full of new roofs, you mail a filtered list of homes whose roofs are genuinely at end of life or recently storm-hit, so the same postage budget reaches three or four times the relevant homes.
- Your old list: layered against current roof-age ranges, the past customer whose roof is now aging out floats to the top of the call list automatically.
- Storm response: after a hailstorm, instead of mailing the whole county, you work the specific blocks the model says took the worst of it.
Here is the math that makes the case, using a single canvassing day. Say a rep can knock 60 doors well in a day. On a random radius where roughly a third of the homes have a roof old enough to matter, 40 of those 60 doors are dead before the rep opens their mouth, and the rep spends the day getting told no by people with five-year-old roofs. Now hand the same rep a route where the homes have been ranked by roof-age range, top of the list first. If even 70 percent of those doors hide a roof in the worn-out range, the rep is having real conversations nearly all day. Same effort, same gas, same payroll. The number of qualified conversations more than doubles, the appointment count follows, and the rep who used to quit now makes money and stays. Apply the same filter to a 5,000-piece mail drop and you stop paying postage to the 60 percent of a saturation route that has no roof problem, which either cuts your spend or, better, lets you mail two or three times deeper into the homes that actually convert for the same budget.
Be clear-eyed about what this is and is not. It is a targeting and prioritization layer, not a lead service. It does not hand you a homeowner who is ready to sign; it tells you which doors are worth your crew's time so the work you already do produces more per hour. The roof age is a range, not a birth certificate. A storm model is odds about which roofs were likely worn, not proof of damage on any specific house. You still put eyes on the roof, you still document conditions, and your roofer documents what is there while the homeowner and their insurer decide anything about a claim. Used honestly, it makes every owned channel cheaper to run, which is the entire point of owning your leads instead of renting them.
The plumbing nobody wants to fix: your CRM and your data
Every owned channel above leaks if the data underneath it is a mess, and most roofing data is a mess. The owner who cannot work the old-customer goldmine usually cannot because the records live in three places: a desktop accounting program, a stack of paper estimates, and the sales manager's phone. You cannot pull a list you cannot find, and you cannot target a customer you logged as "John" with no address.
You do not need expensive software to fix this. You need one place where every lead, estimate, customer, and job lives, and the discipline to put things in it. A few rules that make a roofing CRM actually useful:
- One record per property, not per person. Roofs belong to addresses. Tie history to the address so a future owner inherits the roof-age and repair history.
- Capture install year and material on every job. This is the field that lets you sort your whole book by roof age later. Skip it now and you blind yourself in five years.
- Tag the lead source on every single lead. Without this you can never compute cost per job by channel, which means you are flying blind on where to spend. Make it a required field.
- Log every touch. Knock, call, mail, appointment, no-show. The follow-up that closes the job depends on knowing what already happened.
- De-duplicate quarterly. Duplicates wreck your counts and double-knock your customers, which annoys the very people most likely to refer you.
The payoff is concrete. A clean book lets you ask the database a question ("every asphalt roof we installed before 2012 within ten miles") and get a call list in seconds instead of a week of digging. Layer that clean book against current roof-age data and the system itself surfaces which of your own past customers are now due. The unglamorous data work is the difference between owning a lead engine and owning a filing cabinet.
Tie it together: the mix, the cadence, and the numbers to watch
No single channel carries a roofing company. The owners who get off the bought-lead treadmill run a stack, where each channel covers the others' weaknesses and the whole thing compounds. A realistic owned-lead stack for a residential or storm-restoration roofer:
| Channel | Speed to leads | Cost per lead | Control you have | Best at |
|---|---|---|---|---|
| Past customers and old estimates | Fast | Lowest | Total | Filling slow weeks from money you already spent |
| Referrals | Medium | Very low | High | Highest close rate, lowest acquisition cost |
| Door knocking | Fast | Low (labor) | Total | Storm response, dense neighborhoods, new-area entry |
| Direct mail | Medium | Medium | High | Predictable, scalable volume to targeted homes |
| Local SEO and Google profile | Slow | Lowest over time | Medium | High-intent inbound that compounds for years |
| Paid search | Immediate | Highest | Medium | Filling gaps, accelerating, storm surges |
A quarterly operating cadence
Put the stack on a calendar so it runs whether or not you feel like doing it:
- Weekly: every completed job triggers a referral ask and a review request, same day. Non-negotiable, scripted, tracked.
- Weekly: canvass crews work pre-targeted routes, log every door, follow up callbacks.
- Monthly: mail a fresh targeted batch to the highest-priority neighborhoods; mail repeat into neighborhoods where you have active jobs.
- Quarterly: work the old-estimate list and the aging past-customer list with a specific reason to call.
- Seasonally: spring maintenance-check touch to past customers; storm-response activation (call list, mail corridor, canvass routes) whenever a significant storm hits your area.
- Always on: Google Business Profile fresh with photos and posts, reviews answered within a day, paid search throttled up or down based on how full the board is.
The numbers that tell you the truth
Most roofers track revenue and nothing else, which is why they cannot tell which channel is working. Track these by channel, every month:
- Cost per lead: total spend (including labor) divided by leads generated.
- Cost per appointment: because a lead that never becomes an appointment is not a lead.
- Cost per signed job: the only number that matters for budgeting, and the one that exposes how expensive bought leads really are.
- Close rate by source: referrals and inbound will crush bought leads here, and seeing it in your own data is what finally gets owners to shift the mix.
- Lifetime value by source: a referred customer refers again; a bought lead rarely does. Measure it.
When you can see cost-per-signed-job and close rate side by side for every channel, the decision makes itself. The bought lead that looked cheap at $75 reveals its true $1,500 cost per job and its bottom-of-the-pack close rate, and the referral that cost you a $150 reward and a phone call reveals itself as the best lead you ever got.
What pros get wrong, and the edge cases that bite
A few failure modes show up over and over, and they are worth naming so you can avoid them.
Abandoning a channel before it ramps. Owners try direct mail once, get a weak response from a saturation route, and quit. They try SEO for two months, see nothing, and quit. Owned channels compound; they are slow at the start and cheap forever after. The ones that quit are the ones who never targeted properly in the first place and blamed the channel for a list problem.
No follow-up system. The lead is not the win; the closed job is. A canvasser sets an appointment, nobody confirms it, the homeowner forgets, and the lead is dead. Money spent generating leads with no system to work them is money lit on fire. Build the follow-up before you build the lead flow.
Treating storm season as the whole business. Storm-restoration roofers who only generate leads when it hails ride a feast-or-famine cycle and fight out-of-town swarms for every job. The owned channels (your list, referrals, local SEO, targeted mail) keep the pipeline full between storms, so you are not starving in the quiet months and not desperate in the loud ones. The edge of owning your leads is strongest, not weakest, outside of storm season.
Sloppy data. Every owned channel depends on knowing your customers and knowing which roofs are old. A CRM full of duplicates and missing fields makes the old-list goldmine unworkable and makes targeting impossible. The unglamorous discipline of clean records is the foundation under everything else.
Compliance shortcuts. Skipping solicitation permits, ignoring no-knock registries, omitting the cooling-off cancellation notice, or buying a mailing list that was not legally sourced can shut a channel down or worse. The operators who last are the ones who treat compliance as part of the cost of doing business, not an obstacle.
Confusing data with proof in storm work. A per-roof storm model and a roof-age range are targeting tools. They tell you where to look and what is likely. They are not a finding of damage and not a promise of a claim. You still inspect, you still document what is actually on the roof, and you keep the claim itself between the homeowner and their carrier. Mixing those up is how roofers get into legal trouble; keeping them separate is how you stay the trusted local company.
The bottom line
Buying leads is renting a homeowner who is being sold to four other companies at the same moment, at a true cost per job that never improves and never builds anything you own. Generating your own leads is slower to start and asks more of your systems, but it produces an asset: a customer list that compounds, a referral engine that prints the highest-close leads in the business, canvass routes and mail drops aimed at the roofs that are actually due, a local search presence no competitor can outbid, and a reputation that does the selling for you.
The roofers who win the next decade will be the ones who own their next jobs instead of renting them, who turn their own streets and their own customer book into work nobody else can take from them, storm or no storm. Start with the money already in your file cabinet, build the referral and review habit into every completed job, target your knocking and mailing by which roofs are genuinely worn out, and put the whole thing on a calendar so it runs without you. Do that for a year and you will wonder why you ever paid for a foot race against the company across town.
FAQ
How do I generate roofing leads without buying them?
Work the channels you own: your past-customer list and old unconverted estimates first (the cheapest leads you already paid to acquire), then a referral and review habit built into every completed job, then door knocking and direct mail targeted by which roofs are actually old or storm-worn, then local SEO and your Google Business Profile for inbound. Stack them, put them on a calendar, and track cost per signed job by channel so you can shift budget toward what works.
Are bought roofing leads ever worth it?
They can bridge a slow month while your owned channels ramp, like a line of credit you use sparingly. The problem is the true cost: a shared lead is resold to several competitors, closes at a low rate because the homeowner is being shopped, and never gets cheaper year over year. When you track real cost per signed job, bought leads usually land far above your owned channels. Use them to fill gaps, not to run the business.
What is the cheapest source of roofing leads?
Your existing customer list and old estimates. Past customers already know you and have neighbors, rental properties, and aging roofs of their own. Old estimates are homeowners who raised their hand once and whose roofs are now older and closer to failure. Reaching them costs a phone call or a postcard instead of a click fee, and nobody is reselling them because they are yours. Clean records are the prerequisite.
Does door knocking still work for roofing?
Yes, when it is targeted. Brute-force knocking of random doors burns reps and margin because most doors hide roofs that are too new to need you. Knocking streets where roofs genuinely skew old produces real conversations, sets more appointments, and keeps crews from quitting. Knock in tight density, lead with a specific honest observation rather than a pitch, log every door, and follow local solicitation permit, no-knock registry, and cooling-off cancellation rules.
How do I build a roofing referral program that actually works?
Make it a system, not a hope. Trigger a scripted referral ask at job completion when the homeowner is happiest, offer a concrete reward (a cash or gift-card amount per referral that turns into a signed job, plus a donation option), pay it fast once the referred job closes, and follow up. Separately, text a Google review link the evening of completion. Referred leads close at the highest rate of any channel, so the program pays for itself many times over.
Why does direct mail fail for so many roofers?
Because they mail a saturation route, paying postage to reach thousands of brand-new and recently re-roofed homes that will not need them for years, then blame the channel when response is near zero. The fix is the list. Mail a filtered list of homes whose roofs are genuinely old or recently storm-hit, filtering by the age of the roof itself rather than the year the house was built, since re-roofs are invisible in public records. The same budget then reaches several times the relevant homes.
How do I rank my roofing company in Google's map pack?
Fully complete your Google Business Profile with correct categories, service area, hours, and a real description; accumulate and respond to reviews (quantity, quality, and recency are major ranking factors); keep your business name, address, and phone identical everywhere online; post real job photos and updates regularly; and back the profile with genuine local service and city pages on your website. It takes months but becomes inbound that costs nothing per lead and that no competitor can outbid.
How does RoofPredict help me generate my own leads?
It is a targeting layer, not a lead service. From aerial imagery and weather data it scores roofs house by house, giving each address a roof-age range and a per-roof model of the storms that home actually took, then ranks streets and addresses by which roofs are most likely due. That lets you point canvass routes, mail drops, and old-list calls at homes that genuinely need a roof instead of new ones, so the outbound you already do produces more per hour. You still inspect and document every roof yourself.
Can roof-age and storm data tell me which houses have damage?
No, and treating it that way is a mistake. A roof-age range is an estimate from the air, not a birth certificate, and a per-roof storm model gives odds about which roofs were likely worn, not proof of damage on any specific house. It tells you where to look and what is probable so you spend your crew's time on the right doors. You still put eyes on the roof, document the actual conditions, and keep the insurance claim itself between the homeowner and their carrier.
How long before owned lead channels replace bought leads?
Plan on a year to shift the mix meaningfully. Your old list and referrals can produce within weeks, door knocking and targeted mail within a month or two, and local SEO over several months. The key is to start the slow-compounding channels now, keep bought leads as a shrinking bridge, and track cost per signed job by source every month. As your reviews, reputation, and neighborhood density build, owned leads get cheaper while bought leads stay expensive, and the mix tips on its own.
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
- FTC Cooling-Off Rule: When and How to Cancel a Sale — consumer.ftc.gov
- FTC Business Guidance: The Cooling-Off Rule — ftc.gov
- Insurance Institute for Business & Home Safety (IBHS) — ibhs.org
- NOAA National Weather Service Storm Prediction Center — spc.noaa.gov
- NOAA Storm Events Database — ncdc.noaa.gov
- OSHA Fall Protection in Construction — osha.gov
- U.S. Census Bureau American Housing Survey — census.gov
- International Residential Code (ICC) — iccsafe.org
- U.S. Bureau of Labor Statistics: Roofers Occupational Outlook — bls.gov
- Google Business Profile Help: Improve Your Local Ranking — support.google.com
- Google Local Services Ads — ads.google.com
- National Do Not Call Registry (FTC) — donotcall.gov
- RoofPredict — roofpredict.com
Related Articles
How to Build a Roofing Mailing List That Actually Books Jobs
Most roofing mailers lose money because the list is wrong, not the postcard. Here's how to build a list of addresses that are actually due for a roof.
How to Build an Aged Roof Mailing List by Address (Without Burning Your Postage Budget)
A practical playbook for roofing contractors who want to mail only the houses with old roofs, address by address, instead of carpet-bombing whole ZIP codes and praying.
The Best Mailing List for Roofing Contractors Is the One You Build From Roof Age and Storm Data
Most roofing mailing lists are just county property dumps with a pretty cover. Here is how to build one that targets roofs the storm wore out and the roofs aging out, then mail it so the phone rings.