How to Get Roofing Leads Without Angi or HomeAdvisor
On this page
Every roofing owner who has paid for shared leads knows the feeling. The phone rings, you race to the appointment, and the homeowner says some version of: "You're the fourth roofer who called today." You quoted, you followed up, and the job went to whoever was cheapest or fastest to answer. You paid for that privilege whether or not you closed. Multiply that across a season and the lead spend starts to look like a tax on your business that you cannot opt out of.
You can opt out of it. The contractors with healthy margins are not winning because they found a secret cheaper lead vendor. They built acquisition systems they own, where the "lead" is a roof they already know is due rather than a form fill they are sharing with three competitors. The shift is from buying intent to manufacturing it from property and weather data you can pull yourself.
Below is the full operating plan: why the marketplaces structurally work against you, the eight channels that replace them ranked by cost and control, the exact workflows to run each one, the numbers to track, and how to use roof-age and storm data to stop guessing which doors to knock. It is long because doing this well is operational, not inspirational. Skim the table of contents, then run the parts that fit your crew size.
Why Angi, HomeAdvisor, and the shared-lead model fight your margin
Start with the math, because the math is the whole argument. A shared lead is sold to multiple contractors at once. You are not buying a customer; you are buying a chance to compete for a customer who is now annoyed at being called repeatedly. The marketplace has no incentive to limit how many roofers get the same lead, because each sale is revenue for them and cost for you.
There are four structural problems, and none of them are fixable by "working the leads harder."
1. You are renting demand, not owning it. The moment you stop paying, the pipeline stops. There is no compounding. A referral network or a ranked door list you built keeps producing after you stop spending. A purchased lead produces exactly once.
2. Price is the default tiebreaker. When four roofers hit the same homeowner within an hour, the homeowner has no way to tell you apart except price and availability. The marketplace format strips out everything that justifies a premium price: your reputation in the neighborhood, the referral that warmed the intro, the fact that you already documented their storm damage before you knocked. You are forced into a commodity frame.
3. Lead quality is opaque and degrading. You cannot see how a lead was generated, how old it is, or how many times it was sold. Wrong numbers, renters who cannot authorize work, tire-kickers comparison-shopping a project two years out — you pay the same price for those as for a ready buyer. Disputes exist but the burden is on you, and the time you spend disputing is time you are not selling.
4. The incentives are misaligned by design. The platform earns when you spend, not when you profit. Their product roadmap optimizes for more contractors paying for more leads, which means more competition per lead over time, not less. You are a cost center to a business whose customer is the homeowner, not you.
None of this makes the platforms fraudulent. They are a clearing house, and a clearing house is sometimes the right tool — a brand-new company with zero reputation and no route density might use them to bootstrap the first ten jobs. The mistake is treating a bootstrap tool as a permanent acquisition strategy. The rest of these channels are what you build so you never need the clearing house again.
What "cost per acquired job" actually means
Before comparing channels, fix your unit. Cost per lead is a vanity number. The number that runs your business is cost per acquired job (CPAJ) and, downstream of it, customer acquisition cost relative to gross profit.
Work a simple example. Say a re-roof nets you $4,000 gross profit (revenue minus materials and crew labor, before overhead). If a channel costs you $400 to produce one signed job, your CPAJ is 10% of gross profit. That is excellent. If a shared-lead channel costs $90 per lead, you close 1 in 8, and half the "leads" are unreachable, your real CPAJ is roughly $90 × 8 = $720 plus the labor hours your sales rep burned chasing seven dead ends. Suddenly the "cheap" lead is the expensive channel.
Track these four numbers per channel, every month, in one spreadsheet:
| Metric | How to calculate | Why it matters |
|---|---|---|
| Cost per lead (CPL) | Channel spend ÷ leads produced | Sanity check only; do not optimize on this |
| Lead-to-appointment rate | Appointments ÷ leads | Catches junk leads early |
| Appointment-to-close rate | Signed jobs ÷ appointments | Measures lead quality and your sales process |
| Cost per acquired job (CPAJ) | Total channel spend ÷ signed jobs | The number that decides where money goes |
If you only build one habit out of everything here, build this one. Most roofers cannot tell you their CPAJ by channel, which is exactly why they keep funding the channel that feels busy instead of the one that prints profit.
Attribution: the part everyone skips
The spreadsheet only works if you know where each job came from, and that is harder than it sounds because homeowners blend channels. Someone sees your truck around town for a year, gets a postcard, then searches your name on Google and calls. Which channel gets credit? Use a simple "first touch and last touch" rule: ask every caller "How did you first hear about us?" and log it, and separately track the channel that produced the actual call (the route-specific phone number, the LSA lead, the referral name). When in doubt, credit the channel that you paid for the call, because that is the one whose CPAJ you are trying to manage. Build the "how did you hear about us" question into your call-intake script so the answer is captured before the conversation moves on. Within two months of disciplined logging you will see patterns that change where you spend, and almost every owner who does this discovers at least one channel they were overfunding and one they were starving.
The eight channels that replace shared leads, ranked
Here is the field, ordered roughly from highest control and lowest marginal cost to lowest control. "Control" means how much the channel keeps producing after you stop actively spending, and how much you own the relationship versus rent it.
| Rank | Channel | Typical CPAJ range | Speed to first job | Control / durability |
|---|---|---|---|---|
| 1 | Referrals & past-customer reactivation | Lowest | Slow to build, fast once warm | Very high |
| 2 | Targeted canvassing on a ranked door list | Low–medium | Fast | High |
| 3 | Local SEO + Google Business Profile | Medium (front-loaded) | Slow (3–9 mo) | Very high |
| 4 | Storm-response operations | Low per job, lumpy | Very fast after an event | Medium |
| 5 | Strategic partnerships (insurance, real estate, property mgmt) | Low–medium | Medium | High |
| 6 | Direct mail / EDDM to ranked routes | Medium | Medium | Medium |
| 7 | Owned paid search (your own Google/LSA account) | Medium–high | Fast | Medium (you own the account) |
| 8 | Community presence & content | Low (time-heavy) | Slow | High |
No one runs all eight well at once. Pick two or three that match your crew size and market, get them producing, then layer in a fourth. A two-truck shop should live on referrals, canvassing, and a tight Google Business Profile. A regional storm operation leans on storm response, a ranked door list, and partnerships. Build depth before breadth.
Channel 1: Referrals and past-customer reactivation (your cheapest jobs)
Your existing customer list is the most underused asset in the business. These people already paid you, already trust you, and live next to other roofs that are the same age as the one you just replaced. A 2005 subdivision does not age unevenly — when one roof is failing, the whole street is in the same window. That is the part most owners miss: a past customer is more than a referral source — they are a geographic marker for a cluster of roofs entering end of life at the same time.
The reactivation workflow
Pull your customer list for the last 8–12 years. For asphalt shingle roofs, the practical replacement window runs roughly 15–25 years depending on shingle grade, ventilation, and climate, so a roof you touched a decade ago for a repair may now be the re-roof. Build three campaigns:
1. Maintenance reactivation (jobs 1–3 years old). These are not due for replacement, but they refer. Send a short, useful check-in: "It's been two storm seasons since we did your roof. Here's a 90-second checklist to spot trouble after the next big wind." You are buying goodwill and staying top of mind. No sales pitch.
2. End-of-life outreach (repairs or roofs now 15+ years old). These are real opportunities. "We replaced your neighbor's roof in 2009 — same builder, same shingles. Yours is in the same age window now. Want a free condition check before the next storm season?" Honest, specific, time-relevant.
3. Referral activation (everyone, ongoing). Make referring frictionless and worth it. A clear referral reward (a gift card, a credit toward future work, a donation to a local cause they pick) plus a dead-simple way to refer: a personal text with a link, not a generic "tell your friends." Note that referral incentives are fine; what you cannot do is pay homeowners to falsely claim they used you, or post reviews they did not write. Keep incentivized reviews disclosed and honest per FTC endorsement guidance.
A referral ask script that actually works
Most referral programs fail because the ask is vague and badly timed. Ask at the moment of peak satisfaction — final walkthrough, when the roof looks great and the cleanup is done — and make it specific:
"Mr. Alvarez, I'm glad you're happy with how this came out. Quick favor: we grow almost entirely by word of mouth, not by buying ads. If you know one neighbor whose roof is around the same age as yours was, I'd love it if you texted them this link. If they end up doing a project with us, we'll send you a $150 gift card as a thank-you."
Specific ("one neighbor," "same age"), framed around a real business reason, and rewarded. Track referral source on every job so you know which customers are your connectors and can take extra care of them.
Edge case: the past customer who had a problem
Do not skip the unhappy ones. A customer who had a leak you fixed under warranty, handled well, is often a stronger advocate than one whose job was uneventful — they saw you stand behind your work. Reach out specifically: "I wanted to make sure that repair held up. Everything still tight?" That call surfaces both warranty issues you want to catch and referral opportunities you would otherwise miss.
The reactivation math, worked
Suppose you have 600 past customers from the last decade. Roughly the oldest third — say 200 of them — are now in or near the replacement window if their roofs were already 8 to 15 years old when you touched them. Send the end-of-life outreach to those 200. A warm, specific message to a past customer routinely books inspections at 8 to 15 percent, far above any cold channel, so call it 20 to 30 booked condition checks. At a 30 to 45 percent close on genuine end-of-life roofs, that is roughly 8 to 12 signed jobs from a list you already owned, at the cost of a few hours and some postage or texts. Run the campaign once a season, not once ever; the window keeps moving and last year's "not yet" is this year's "now." The contractors who treat the CRM as a living asset rather than a graveyard close jobs at a CPAJ no marketplace can touch.
Channel 2: Targeted canvassing on a ranked door list
Canvassing has a bad reputation because most of it is done badly — a kid in a polo walking a random street, knocking 80 doors to book one appointment. Done with a ranked list, it is one of the highest-ROI channels in roofing, because you are spending the expensive resource (a person's time) only on doors with a real reason to say yes.
The entire game is which doors, in which order. Random canvassing converts poorly because most roofs on most streets are not due. Targeted canvassing converts because every door has a reason: the roof is aging out, or a storm with hail or damaging wind actually crossed that block.
Building the ranked list the manual way
Before any software, you can build a usable list by hand:
- Pull the storm history for your service area. The NOAA Storm Prediction Center publishes severe weather reports — tornado, hail, and damaging-wind reports — by date, and you can plot historical hail and wind events. Note the dates and rough paths of hail and high-wind events over the last 12–24 months.
- Cross-reference with neighborhood age. County assessor records and parcel data list year built for most homes. Subdivisions built 18–24 years ago are in the asphalt-shingle replacement window now.
- Prioritize the overlap. A neighborhood that is both in its replacement-age window and sat under a recent hail core is your A-list. Age-only or storm-only neighborhoods are B-list. Everything else is C.
This is tedious by hand, which is the point of the next section — but even the manual version beats random walking by a wide margin.
The canvassing workflow that books appointments
Crew setup. Two-person teams, defined territory of 40–60 doors per rep per shift, clear script, and a tablet to log every door's outcome (not home / not interested / inspection booked / already has a roofer). Logging is non-negotiable; the list is an asset that improves every pass.
The opener. Lead with a specific, true reason for being there, not a generic pitch:
"Hi, I'm Dana with Summit Roofing. We're doing free roof condition checks on this street because the hailstorm that came through on April 14th dropped quarter-size hail right over this block. I'm not here to sell you anything today — I'm offering to get up there, take photos, and tell you honestly whether you have damage worth documenting. Takes about 20 minutes."
Why it works: it names the specific storm and date (credible, you did your homework), it offers documentation rather than a sale, and it sets a low-commitment next step. You are positioning as the person who documents the roof's condition honestly — the homeowner decides what to do with that, and if there is a storm-damage claim, the insurer decides coverage. Stay on the right side of that line: you document conditions and provide an estimate; you do not approve claims, promise the insurer will pay, promise a "free roof," or guarantee a deductible outcome.
The objection map. Three objections cover 80% of doors:
- "I already have a roofer." — "Smart to have someone you trust. If you'd still like a second set of photos for your records, I'm happy to leave you a documented condition report at no cost. No obligation."
- "I don't think I have damage." — "You might not — a lot of these roofs are fine. The only way to know is to get up there, and that's free either way. Worst case you get peace of mind."
- "Not interested." — "Totally fair. Can I leave a card in case anything shows up after the next storm?" Then log it and move on. Do not push; pushing burns the territory for your next pass.
The numbers. On a ranked A-list, a trained rep can often book 1 inspection per 12–18 doors, versus 1 per 50–80 on random streets. With a 30–45% inspection-to-signed rate on genuine storm damage, the door-to-job math gets very favorable, very fast.
A safety note that protects your CPAJ: canvassing crews and inspectors are climbing roofs. OSHA fall-protection requirements apply, and a single fall claim wipes out a season of lead savings. Build ladder and fall-protection discipline into the workflow, not as an afterthought.
Territory management and the second pass
A door list is an asset that gets more valuable with each pass if you log outcomes. The first sweep of a ranked street might be 40 percent "not home." Those are not dead — they are a second-pass list. Schedule the return knock for a different day and time (a weekday-evening street is empty at 2 p.m. and full at 6 p.m.), and your "not home" rate drops while your booking rate climbs because the homes that convert best are often the ones nobody else bothered to revisit. Assign each rep a fixed territory rather than letting crews overlap; overlap means two of your reps knocking the same annoyed homeowner, which is the marketplace problem reproduced inside your own company. Rotate territories only after a territory is fully worked, and keep a "do not knock" log for homes that asked to be left alone, because honoring it protects your local reputation and keeps you clear of do-not-solicit ordinances some municipalities enforce. Check local permitting too — a number of cities require a solicitation permit for door-to-door work, and getting cited mid-storm is an avoidable own-goal.
Channel 3: Local SEO and your Google Business Profile
This is the channel that compounds hardest and that most roofers underinvest in because it pays off in months, not days. When a homeowner searches "roof repair near me" or "roofers in [town]," the map pack and the organic results are demand you do not have to share with three competitors and do not pay per click for. You earn the position once and it keeps producing.
Google Business Profile: the highest-leverage hour you'll spend
Your Google Business Profile (the map listing) drives the local map pack, which sits above organic results and captures the highest-intent searches. Get these right:
- Categories. Primary category "Roofing Contractor," plus relevant secondary categories (gutter, siding, storm damage) that match services you actually offer.
- Service area and NAP consistency. Name, address, phone identical everywhere online. Inconsistent NAP across directories is a top cause of weak local ranking.
- Reviews, earned honestly. Reviews are the strongest local ranking and conversion factor. Build review requests into job close-out — a text with a direct link the day after final walkthrough. Never buy reviews or write them yourself; the FTC treats fake reviews as deceptive endorsements, and Google removes them. Respond to every review, positive and negative, professionally.
- Photos, constantly. Real job photos with before/after, geotagged to the neighborhoods you work. Fresh photos signal an active business.
- Posts and Q&A. Use Google Posts for recent jobs and seasonal reminders; seed and answer common questions in the Q&A section.
Service-area and "near me" pages that rank
Build a page for each city or neighborhood you serve, but only if you can make each one genuinely useful — thin doorway pages get ignored or penalized. A strong local page has: the specific roofing issues common in that area (clay tile in older districts, steep-slope cedar in certain subdivisions, storm exposure patterns), real local job photos, and honest local detail. Write for the homeowner who lives there, not for a crawler.
Content that earns links and trust
You do not need a blog mill. You need a small number of genuinely authoritative pages that answer the questions homeowners actually search and that other local sites will reference: "How to tell if hail damaged your roof," "What a roof inspection should include," "How roof age affects an insurance claim in [state]." Pages that demonstrate first-hand expertise — your photos, your local code knowledge, your honest take on when a roof can be repaired versus replaced — are what earn the trust signals search engines reward and what convert the visitor who lands on them.
The honest limit: SEO is a 3-to-9-month investment before it carries weight. Start it now precisely because it is slow; the contractor who started six months ago is taking the calls you wish you were getting today.
Channel 4: Storm-response operations
When a real hail or high-wind event hits your service area, a window opens where demand spikes and homeowners are actively looking for a roofer. The operators who win storms are not the ones who show up — everyone shows up. They are the ones who showed up first, organized, and documenting honestly while the out-of-town "storm chasers" were still loading trucks.
The storm-response playbook
Before the storm (standing readiness):
- Pre-built ranked map of your service area by roof age, so when a storm path is known you instantly know which aged neighborhoods took the hit.
- A canvassing crew on call and a clear territory-assignment system.
- Inspection and documentation templates ready: photo checklist, measurement workflow, condition-report format.
Within 24–72 hours of the event:
- Pull the storm report from the SPC and any local NWS storm survey to confirm where hail and wind actually fell and at what size. This is your targeting layer and your credibility layer at the door.
- Deploy crews to the overlap of "aged neighborhood" and "confirmed storm path." Do not spread thin across the whole region; concentrate where damage is most likely real.
- Document conditions honestly. Photograph hail bruising, granule loss, mat fractures, collateral on soft metals (gutters, vents, AC fins) that corroborate hail size. Your job is an accurate condition report and an estimate; the homeowner files if they choose and the insurer adjudicates.
The compliance line in storm work. Storm restoration is where roofers get into legal trouble fastest. Keep it clean: do not promise the insurance company will pay, do not advertise "free roof" or "no out-of-pocket," do not offer to waive, rebate, or absorb the homeowner's deductible (illegal in many states and a fast path to losing your license), and never present a weather forecast or storm report as proof of damage. The storm report tells you where to look; the inspection tells you what is actually there. Many states' Departments of Insurance publish guidance on exactly these practices — know your state's rules before you knock.
Why storm response without targeting fails
Out-of-town crews carpet-bomb an entire metro after a storm and book a lot of inspections on roofs that have no real damage, which leads to bad estimates, denied claims, frustrated homeowners, and reputational blowback that lands on the whole trade. The local operator's edge is precision: knock the blocks where the storm and the roof age line up, document honestly, and you convert higher with far less wasted labor and zero reputational risk.
Channel 5: Strategic partnerships and referral networks
Some of the steadiest, lowest-CPAJ work comes from people who touch roofs or homeowners before you do. These relationships take time to build and almost nothing to maintain, and they produce pre-qualified, pre-trusted introductions.
Partners worth cultivating
| Partner type | What they need from you | What you get |
|---|---|---|
| Real estate agents | Fast, honest pre-sale roof inspections and repair quotes that don't blow up a deal | Steady inspection and repair volume, high trust |
| Property managers | Reliable repair turnaround across a portfolio | Recurring multi-property work |
| Insurance agents (local) | Honest condition documentation for their clients | Warm referrals; you document, they don't adjudicate |
| General contractors / remodelers | A roofing sub who shows up and communicates | Subcontracted roof scopes |
| Solar installers | Roofs sound enough to mount panels; re-roof before install | Pre-solar replacements |
| Gutter, siding, restoration trades | Reciprocal referrals on adjacent damage | Two-way pipeline |
How to actually build these (more than collecting business cards)
The mistake is treating partnerships as a one-time ask. They are a habit. Pick three target partners per quarter. Bring them something useful before you ask for anything — a clean referral of your own, a fast turnaround on an inspection they needed, a genuinely helpful "here's what to look for" resource for their clients. Reciprocity is the engine; be the partner who gives first and reliably.
With insurance agents specifically, stay strictly in your lane: you provide condition documentation and estimates, the agent's client decides whether to file, and the carrier decides coverage. Agents refer the roofers who make them look good by being honest and competent, and stop referring the ones who create claim disputes.
Channel 6: Direct mail and EDDM to ranked routes
Direct mail is not dead; untargeted direct mail is dead. A postcard blasted to an entire ZIP code converts at a fraction of a percent and feels like a waste. A postcard sent to a ranked route — homes in the replacement-age window, on streets a storm actually crossed — is a different tool entirely.
Making mail work
Targeting. Use the USPS Every Door Direct Mail (EDDM) program to hit specific carrier routes, but choose those routes by overlaying roof age and storm path, not by ZIP convenience. The list is the lever; a great postcard to the wrong street loses, a decent postcard to the right street wins.
The piece. One clear, honest message and one call to action. Not "we do roofs, siding, gutters, and windows." Instead: "Roofs on [Maple Street] are reaching the age where storm damage gets expensive. Free, no-obligation condition check and photo report." A specific, local, time-relevant reason beats a generic brand postcard every time.
Sequencing. Mail is a touch, not a campaign. Pair it with canvassing the same routes — a homeowner who got your postcard last week is warmer when your rep knocks. The combination of mail plus a door knock on the same ranked street routinely outperforms either alone.
Measurement. Use a dedicated phone number or a route-specific landing page so you can attribute responses to the mailing and compute real CPAJ. If you cannot measure it, you cannot scale it.
Channel 7: Owned paid search (your account, not a marketplace)
There is a meaningful difference between buying shared leads from a marketplace and running your own Google Search and Local Services Ads account. In your own account, you own the data, the targeting, the phone calls, and the relationship. You are still paying per click or per lead, but you are not sharing that lead with three competitors and you are building a first-party asset.
Google Local Services Ads (LSA)
LSA shows your business at the very top of roofing searches with a "Google Guaranteed" badge, and you pay per lead rather than per click. Because it sits above the map pack on high-intent searches, it can be a strong direct-response channel. Two cautions: vet that the leads are exclusive enough to be worth your CPAJ, and dispute junk leads promptly — Google credits invalid leads if you flag them, but only if you actually monitor and dispute.
Search ads done right
If you run standard Search ads, the wins are in discipline: tight geographic targeting to your real service radius, negative keywords to kill "roofing jobs" and "roofing materials" and DIY searches, ad copy that matches intent (repair vs. replacement vs. storm), and a landing page that loads fast and has one clear action. Send storm-related clicks to a storm-specific page, not your homepage. Track CPAJ, not cost per click; a $40 click that closes a $4,000 job is cheap, and a $6 click that never closes is expensive.
The honest framing: paid search is rented demand like the marketplaces, but it is your rental — you control quality, exclusivity, and data. Use it to smooth out the slow build of SEO and referrals, not as a permanent crutch.
Channel 8: Community presence and content
This is the slowest and most durable channel, and it is mostly time, not money. The roofer who is visibly part of the community — sponsoring the youth league, showing up at the home show, posting genuinely useful local roofing content, known by name at the supply house and the chamber — accumulates trust that no marketplace lead can buy. It converts other channels too: the canvassing knock lands softer when the homeowner has seen your trucks around town for years.
Practical moves that pay off: a steady local social presence with real job photos and honest seasonal advice; short videos answering the questions homeowners actually ask ("Do I have hail damage or just normal wear?"); visible local sponsorships; and showing up to in-person community events where homeowners are. None of this produces a job next week. All of it lowers the cost of every other channel over years.
Putting which-roofs-are-due data to work: ranked routes instead of guesswork
Every channel above shares one bottleneck: which doors, in which order. Referrals, canvassing, mail, and storm response all get dramatically more efficient when you know which roofs are genuinely due and which blocks a storm actually wore out. The manual version — pulling SPC storm reports and cross-referencing county parcel ages by hand — works, but it is slow, and slow loses the 72-hour window after a storm when targeting matters most.
This is the gap RoofPredict is built to close. It scores roofs house-by-house across your service area on two signals that drive real demand: a roof-age range estimated from aerial imagery (not a guess about one roof, but a defensible age window per address), and storm exposure modeled per individual roof rather than for a whole ZIP. The output is a ranked list of doors and routes — the roofs the storm most likely wore out plus the roofs simply aging out of their service life — so your crews knock the blocks most likely to convert instead of walking random streets.
How it fits the workflows already described:
- Canvassing: Hand crews a ranked A-list each morning instead of a ZIP boundary. The same rep who booked 1 in 60 random doors books far better on a list where every door has a real reason.
- Storm response: When an event hits, you already have the per-roof storm model and age ranges, so within hours you know the overlap of "aged" and "hit hardest" — no manual cross-referencing while the out-of-town crews are still arriving.
- Direct mail: Choose EDDM routes by ranked roof data, so the expensive part of mail (printing and postage) only hits streets worth hitting.
- Reactivation: See which past-customer neighborhoods have aged into the replacement window as a cluster.
Be clear about what it is and is not. The age figure is a range, not a manufacture date or a guarantee — aerial imagery infers, it does not read a roof's birth certificate, so you still inspect to confirm. The storm model gives you odds about where damage is most likely, not proof that any specific roof is damaged; you never present a model or forecast as evidence of damage to a homeowner or anyone else. It ranks doors so your people spend their hours where the math is best; the inspection still decides what is actually on the roof, the homeowner still owns any decision to file a claim, and the insurer still decides coverage. Used that way — as a targeting layer that makes honest, well-run channels more efficient — it turns "which doors" from a daily guess into a ranked plan. It does not replace your sales process, your inspection rigor, or your judgment; it just stops you from wasting them on the wrong streets.
A 90-day plan to wean off shared leads
You cannot flip a switch. Here is a realistic sequence that keeps cash flowing while you build owned channels.
Days 1–30: instrument and harvest the easy wins
- Build the CPAJ spreadsheet and start tracking every channel, including your current marketplace spend, so you have a baseline.
- Run the past-customer reactivation campaign (Channel 1). This produces jobs fastest because the trust already exists.
- Fix your Google Business Profile completely (Channel 3) — categories, NAP, photos, and a review-request step at every job close-out. Highest-leverage hour you will spend.
- Do not cut marketplace spend yet. Keep the lights on while you build.
Days 31–60: build the targeting layer and start knocking
- Build your ranked door list — manually from SPC storm history and parcel age, or with per-roof scoring to skip the manual work.
- Launch targeted canvassing on the A-list (Channel 2) with logged outcomes and a trained script.
- Identify and approach three strategic partners (Channel 5). Give before you ask.
- Start mailing your top ranked routes (Channel 6), paired with the canvassing on the same streets.
Days 61–90: shift spend and compound
- Compare CPAJ across channels. Wherever an owned channel beats the marketplace, move budget out of the marketplace and into the owned channel.
- Stand up your own paid search or LSA account (Channel 7) if you need to smooth out volume — your account, your data.
- Build storm readiness (Channel 4): standing ranked map, on-call crew, documentation templates, so the next event is a planned operation, not a scramble.
- Keep the SEO and community work (Channels 3 and 8) running in the background; they pay off in month four and beyond.
By the end of 90 days, most operators can cut marketplace spend substantially without losing volume, and every dollar still spent is producing first-party assets that compound instead of leads that vanish on use.
What pros get wrong (the expensive mistakes)
Optimizing for cost per lead instead of cost per acquired job. The "cheap" channel that produces junk is the expensive channel. Always measure to signed job.
Random canvassing. Walking streets with no ranking burns your most expensive resource — people's time — on doors with no reason to convert. The list is the whole game.
Treating SEO as optional because it's slow. Slow is exactly why you start now. Every month you delay is a month the position stays open for a competitor.
Crossing the compliance line in storm work. Promising insurance will pay, advertising "free roof," waiving deductibles, or presenting a storm report as proof of damage. These get licenses pulled and reputations ruined. Document honestly; let the homeowner own the claim and the insurer decide coverage. Check your state Department of Insurance rules.
Buying reviews or writing them yourself. Fake reviews are deceptive endorsements under FTC rules and get removed by the platforms. Earn them at job close-out and respond to all of them.
Neglecting the past-customer list. The cheapest jobs you will ever close are sitting in your CRM next to neighborhoods that have aged into the replacement window as a group. Most owners never call them.
Confusing activity with results. A busy phone from shared leads can mask a terrible CPAJ. Quiet, owned channels with great CPAJ beat loud, rented ones every time. Trust the spreadsheet, not the noise.
The bottom line
Getting off Angi and HomeAdvisor is not about finding a cheaper place to buy strangers' phone numbers. It is about building acquisition you own: a past-customer list you reactivate, a referral habit baked into every close, a Google presence that compounds, partnerships that send pre-trusted work, and crews who knock the right doors instead of random ones. The connective tissue under all of it is targeting — knowing which roofs are due and which blocks a storm actually wore out, so every hour and every dollar lands where the math is best. Build that, measure everything to cost per acquired job, and the marketplace becomes something you can take or leave instead of a tax you cannot escape.
FAQ
Is it actually possible to get enough roofing leads without Angi or HomeAdvisor?
Yes, and most healthy-margin contractors run with little or no marketplace spend. The replacement channels are referrals and past-customer reactivation, targeted canvassing on a ranked door list, local SEO and your Google Business Profile, storm-response operations, strategic partnerships, targeted direct mail, your own paid search, and community presence. The trade-off is that owned channels take more setup than swiping a credit card for shared leads, but they compound and keep producing after you stop actively spending. Start with referrals and your Google Business Profile for fast wins, then build the slower-compounding channels.
Why are shared leads from marketplaces so hard to make money on?
A shared lead is sold to several contractors at once, so you are buying a chance to compete, not a customer. When four roofers call the same homeowner within an hour, price becomes the default tiebreaker and everything that justifies a premium gets stripped out. You also cannot see how the lead was generated, how old it is, or how many times it was sold, so you pay the same price for unreachable or unqualified contacts as for ready buyers. The platform earns when you spend, not when you profit, so competition per lead tends to rise over time.
What is cost per acquired job and why does it matter more than cost per lead?
Cost per acquired job (CPAJ) is total channel spend divided by signed jobs from that channel. Cost per lead is a vanity number because a cheap lead that never closes is expensive in disguise. Example: a 90-dollar shared lead where you close 1 in 8 and half are unreachable has a real CPAJ near 720 dollars plus the sales hours burned on dead ends. Track CPAJ per channel every month and move budget toward whatever channel produces signed jobs cheapest relative to your gross profit.
Does targeted canvassing really beat buying leads?
On a ranked door list it usually does, because you spend your most expensive resource, a person's time, only on doors with a real reason to convert. Random canvassing might book one inspection per 50 to 80 doors, while a list built from roof age and confirmed storm paths can book one per 12 to 18. Lead with a specific, true reason for being there, offer honest condition documentation rather than a hard sell, log every door's outcome, and keep crews on strict fall-protection discipline since they are climbing roofs.
How long does local SEO take to produce roofing leads?
Plan on three to nine months before local SEO carries real weight, which is exactly why you start now rather than later. The fastest piece is your Google Business Profile: correct categories, consistent name-address-phone, fresh real job photos, and reviews earned at job close-out can lift you into the local map pack within weeks. Service-area pages and authoritative content build slower. Treat SEO as the channel that compounds hardest, and use paid search or referrals to cover volume while it matures.
How do I use storm data to find roofing work without crossing legal lines?
Use the NOAA Storm Prediction Center reports and local National Weather Service storm surveys to learn where hail and damaging wind actually fell, then knock the blocks where storm path and roof age overlap. The storm report tells you where to look; the on-roof inspection tells you what is actually there. Never present a storm report or forecast as proof of damage, never promise the insurance company will pay, never advertise a free roof, and never offer to waive or absorb a deductible. You document conditions and provide an estimate; the homeowner owns any decision to file and the insurer decides coverage. Check your state Department of Insurance rules first.
Can I run my own Google ads instead of buying marketplace leads?
Yes, and it is meaningfully different from a marketplace. In your own Google Search or Local Services Ads account you own the data, the targeting, and the phone calls, and the lead is not shared with three competitors. Local Services Ads charge per lead and sit above the map pack with a Google Guaranteed badge, but you must monitor and dispute junk leads to keep CPAJ healthy. For standard Search ads, use tight geographic targeting, negative keywords to kill DIY and job-seeker searches, intent-matched copy, and a fast landing page, and measure to cost per acquired job rather than cost per click.
What does RoofPredict do and is it a lead-buying service?
It is not a lead-buying service and does not sell you shared contacts. It scores roofs house-by-house across your service area on two signals: a roof-age range estimated from aerial imagery and storm exposure modeled per individual roof rather than per ZIP. The output is a ranked list of doors and routes so your crews knock the roofs a storm most likely wore out plus the roofs aging out of service life. The age figure is a range, not a manufacture date, and the storm model gives odds about where damage is likely, not proof. You still inspect to confirm, the homeowner still owns any claim, and the insurer still decides coverage. It is a targeting layer that makes honest channels more efficient, not a replacement for your sales process or inspection rigor.
How do I get reviews and referrals without breaking FTC rules?
Earn reviews honestly by building a review request into job close-out, such as a text with a direct link the day after the final walkthrough, and respond to every review. You may offer referral rewards like a gift card or a credit toward future work. What you cannot do is buy reviews, write them yourself, or pay people to post reviews they did not genuinely write, since the FTC treats fake reviews as deceptive endorsements and platforms remove them. Incentivized reviews should be honest and disclosed.
What is a realistic timeline to stop relying on shared leads?
A practical sequence is 90 days. In days 1 to 30, instrument cost per acquired job across all channels, run past-customer reactivation, and fix your Google Business Profile while keeping marketplace spend on. In days 31 to 60, build your ranked door list, launch targeted canvassing and direct mail on the same streets, and approach strategic partners. In days 61 to 90, shift budget out of the marketplace wherever an owned channel beats it on CPAJ, stand up your own paid search if you need volume, and build storm readiness. Most operators can cut marketplace spend substantially by day 90 without losing volume.
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) — nrca.net
- NOAA Storm Prediction Center — Severe Weather Reports — spc.noaa.gov
- NOAA Storm Prediction Center — SeverePlot Historical Hail/Wind Data — spc.noaa.gov
- National Weather Service — weather.gov
- Insurance Institute for Business & Home Safety (IBHS) — Roofing — ibhs.org
- OSHA — Fall Protection in Construction — osha.gov
- FTC — Advertisement Endorsements — ftc.gov
- FTC's Endorsement Guides: What People Are Asking — ftc.gov
- USPS — Every Door Direct Mail (EDDM) — usps.com
- Google — About Local Services Ads — support.google.com
- Google — Create and manage your Business Profile — support.google.com
- U.S. Bureau of Labor Statistics — Roofers Occupational Outlook — bls.gov
- International Code Council — International Residential Code (IRC) — codes.iccsafe.org
- Texas Department of Insurance — Hail and Storm Damage / Contractor Guidance — tdi.texas.gov
- RoofPredict — roofpredict.com
Related Articles
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.
How to Build a Storm Damage Mailing List for Roofers That Actually Converts
A practitioner's playbook for building a storm damage mailing list that puts your mail in the right boxes after a hail or wind event, instead of carpet-bombing a ZIP code.
Where to Buy a Roofing Mailing List (and How to Stop Wasting Half of It)
A working roofer's breakdown of where to buy a roofing mailing list, which vendors sell what, and how to filter the list so you stop paying postage on roofs that don't need you.