Blog/comparison

Why I Stopped Buying Roofing Leads

A first-person take on why the shared-lead model is broken for roofers — and what's working instead. The realization that I was paying to compete with myself.

JT
Jake Thompson
May 25, 2026

A few years back, I was the kind of roofer who bought Angi leads every month, complained about them every month, and bought them again the next month because it was the easiest line item on my marketing spend.

Here's the thinking that broke that habit.

Year 1: "this is great"

The first year of buying shared leads is the honeymoon. CPL was $30. Sometimes lower if you signed up during a promo. The leads were 24-48 hours old. Maybe 3 other roofers had been called before me.

I closed about 8% of what I bought. CAC was around $375 per customer. On a $13k ticket, that's 3% acquisition cost. Pencils out fine. I told everyone in my Slack group of roofers that Angi was working.

Year 2: "this is getting weird"

CPL crept to $50. Same metro. Same volume of incoming inquiries on Angi's side, but more roofers buying. Now the lead was shared with 5 of us, not 3.

Close rates dropped to 5%. CAC climbed to $1,000.

Still acceptable on paper, but a thing started happening that I couldn't name at first: I was getting leads where the homeowner had already signed with another roofer. They told me when I called. "Yeah, I already got 4 quotes, I picked one." Angi sold me that lead anyway.

I asked Angi about it. They said leads are sold "based on submission timestamp" and refunds are available "in some cases." I never figured out the algorithm. I stopped asking.

Year 3: "I'm paying to compete with myself"

CPL: $70. Sometimes $90 in the busy season. Shared with 7 roofers. Close rates dropped to 3%. CAC ballooned to $2,300.

That's when the math finally clicked. On a $13k job, my customer acquisition cost was 18%. I was paying for 7 roofers to compete for the same homeowner — and Angi was extracting the spread.

The kicker: the OTHER 6 roofers were also losing money on these leads. Angi was the only winner in the room.

The realization

The shared-lead model isn't a partnership between Angi and the roofers buying leads. It's a marketplace where Angi optimizes for revenue per lead. The most profitable equilibrium for Angi is when every lead is sold to as many roofers as the market will tolerate. From their seat, that's the rational play.

From my seat, that meant the per-lead cost rises until it just barely makes economic sense, while the close rate falls until close to my cost-of-doing-nothing. The marketplace optimizes me INTO break-even, not above it.

This is structural. It's not Angi being evil — it's how shared-lead marketplaces work. The same dynamic applies to HomeAdvisor (same parent company), Modernize, Hippo, Networx, and anyone else who sells the same lead to multiple buyers.

The only way out is to stop playing the game.

What I did instead

I stopped buying shared leads cold turkey in year 4. I had two months of pipeline already in hand from my pipeline of past sales. Used that runway to build a 3-channel mix:

Channel 1: Direct prospecting. Every Saturday I'd drive a different zip and identify 30 homes with old-looking roofs. Knock on the door, leave door hangers, follow up with anyone who showed interest. Took 4 hours each Saturday and produced about 1-2 closed jobs per week — meaningfully better than my Angi conversion.

This was before AI prospecting tools existed. The drive-by approach worked but was tedious. Today I'd just use an AI tool to score every roof in a zip and skip the drive-by manual screening step entirely.

Channel 2: Referral program. Set up a $200-for-$200 program (referrer gets $200, referred customer gets $200 off). Emailed past customers quarterly. Included a referral card with every door hanger. The first 6 months added 12 referral jobs. By year 2 of the program, referrals were 35% of my pipeline.

Channel 3: Google LSAs. Took 3 weeks to get Google-Guaranteed verified. Once running, LSAs delivered 4-6 leads per month at $30-50 per qualified lead. Close rate on LSAs ran 35-40% because Google sends prospects who already searched for a roofer.

Total cost across the three channels: about $400/month + rep labor. Output: 8-12 closed jobs/month. CAC: ~$200.

Compared to my year-3 Angi math of $2,300 CAC, I cut customer acquisition cost by 91%.

The lessons that mattered

A few things I wish I'd internalized earlier:

1. The marketplace ALWAYS wins long-term in shared-lead economics. If you find a marketplace that's working well in year 1, it's because they're early in the curve. By year 3 the math will look like Angi.

2. Direct prospecting feels harder than it is. I avoided it for years because it sounded like cold-calling. Once I tried it, the actual experience was more like neighborhood walks. The conversion rate per door knocked is structurally higher than per shared lead because nobody's racing me.

3. LSAs are the most underused channel in roofing. Most roofers don't get verified for Google Guaranteed because the application process is annoying. The roofers who do get verified have access to a structurally exclusive channel that competitors can't easily enter.

4. Referral programs work but only if you operationalize them. I'd told customers "let me know if you have friends who need work" for years — got almost no referrals. Once I added the $200-for-$200 program with quarterly email reminders, referrals exploded. The system matters as much as the offer.

What I'd tell my year-1 self

If I could send a note back to me in year 1 of running my shop:

"Angi works right now because you're early in the cycle. Don't anchor on it. Spend 30 min/week building one channel that ISN'T Angi. By year 3, that channel will be saving you $2k+/month in CAC and you'll wonder why you didn't start sooner."

The shops that pivot away from shared marketplaces in year 1-2 (when the math is still working) build the second channel WHILE the first one is paying the bills. The shops that wait until year 3 (when Angi stops working) build the second channel UNDER PRESSURE — which is harder.

If you're reading this and Angi is currently your dominant channel, you're not in trouble. Most roofers are in your spot. But start building the alternative channel this week, not next year. The window where Angi is profitable is closing fast.

What to do this week

Three things, in order of leverage:

  1. Calculate your real CAC across all channels. Most roofers don't know it. Pull your last 12 months of marketing spend, divide by closed customers. You'll be surprised.
  2. Pick one alternative channel that isn't shared leads. Direct prospecting is the cheapest and fastest to test. AI tools can run a 25-lead free trial without you committing to anything.
  3. Block 4 hours next Saturday for canvassing or LSA setup. Action in the next 7 days beats good intentions.

If you want the cheapest possible direct-prospecting test: Roofbird's free trial gives you 25 scored leads in your service area with no card required. See the DFW sample dashboard for what the output looks like before signing up.

— Jake

Written by

Jake Thompson

Have a question about anything in this post? Reach the Roofbird team at support@roofbird.ai.

Try Roofbird — 25 free leads in your area

See a sample dashboard for DFW first, no signup needed. Trial loads 25 free pre-scored leads in your own service area.