How We Cut Cost-Per-Lead by 70% for a Roofing Company
We reduced Greenlee Roofing's cost-per-lead from $164 to $47 - a 71% decrease - while increasing lead volume from 31 to 89 per month. Over the first 90 days of the engagement, the campaign generated 127 qualified leads, a 6.2x return on ad spend, and a pipeline of booked jobs that exceeded Greenlee's capacity. Here's the full story of what was broken, what we fixed, and the exact playbook we used.
The Client: Greenlee Roofing
Greenlee Roofing is a residential roofing contractor serving a mid-size metro market. They handle full roof replacements, repairs, and storm damage restoration. Average job value is $8,400, and their sales team closes roughly 40% of estimates they run.
Before working with us, Greenlee was spending $5,100/month on Google Ads managed by a generalist agency. The owner knew leads were coming in, but couldn't tell you how many, what they cost, or which ones turned into jobs.
What Was Broken
When we audited Greenlee's Google Ads account and marketing funnel, we found five critical problems:
1. Broad Match Keyword Hemorrhaging
The previous agency had 80% of the budget running on broad match keywords. The top-spending keyword was just "roofing" - no location, no qualifier, no intent signal.
When we pulled the search terms report, we found Greenlee was paying for clicks on:
- "roofing supply store near me"
- "roofing jobs hiring"
- "roofing tar home depot"
- "how to patch a roof leak yourself"
- "roofing license requirements"
None of these searches will ever become a customer. But they were eating $2,200/month - 43% of the total ad spend - in completely wasted clicks.
2. No Conversion Tracking
The account had no conversion tracking set up. No form submission tracking, no call tracking, no Google Ads conversion events. The previous agency was reporting on clicks and impressions, and that's it.
Without conversion data, Google's bidding algorithm had nothing to optimize toward. It was spending money to get clicks, not leads. This is like driving with your eyes closed and hoping you end up at the right destination.
3. Homepage as the Landing Page
Every ad in the account pointed to Greenlee's homepage. The homepage had a navigation menu with 8 links, an image slider, a paragraph about the company's history, and a phone number buried in the footer.
On mobile - where 72% of their traffic was coming from - the phone number required scrolling past three screen-lengths of content. The contact form was on a separate page entirely. Conversion rate from ad click to lead: 2.8%.
4. No Negative Keywords
There were zero negative keywords in the account. None. Every irrelevant search that included the word "roofing" could trigger Greenlee's ads. The search terms report showed hundreds of irrelevant queries that had been generating clicks for months.
5. Wrong Campaign Structure
Everything was in a single campaign with two ad groups: "Roofing" and "Roof Repair." The "Roofing" ad group had 147 keywords in it. Google can't effectively optimize an ad group with 147 keywords because it can't test which ads perform best with which search terms when everything is lumped together.
What We Fixed
We rebuilt the entire marketing funnel in a structured 90-day sprint.
Week 1–2: Foundation
Rebuilt the account structure from scratch. We created 5 campaigns: Roof Replacement (55% of budget), Roof Repair (20%), Storm/Emergency (10%), Commercial (10%), and Brand (5%). Each campaign had 3–5 tightly themed ad groups with 8–12 keywords each.
Switched to phrase match and exact match only. Every broad match keyword was eliminated. We targeted specific, high-intent searches:
- [roof replacement {city}] - exact match
- "roofing contractor near me" - phrase match
- [best roofer in {city}] - exact match
- "roof repair {city}" - phrase match
Built a negative keyword list of 340+ terms covering DIY searches, job seekers, supply stores, competitor names, and irrelevant service types (commercial searches in residential campaigns and vice versa).
Week 2–3: Landing Pages
Built dedicated landing pages for Roof Replacement and Roof Repair - the two highest-volume services.
Each landing page followed our high-conversion framework:
- Headline matching the search intent ("Roof Replacement in [City] - Free Estimate in 24 Hours")
- Click-to-call phone number fixed in the mobile header
- Short form above the fold (name, phone, address, brief description of project)
- Google review rating badge (4.8 stars, 200+ reviews)
- Three differentiators: licensed/bonded/insured, financing available, 25-year workmanship warranty
- Before/after photo gallery of actual Greenlee projects
- Three customer testimonials with full names
- FAQ section addressing cost, timeline, insurance, and warranty concerns
- Second CTA and phone number at the bottom
The Roof Replacement landing page launched with a 14% conversion rate in the first week - 5x higher than the homepage it replaced.
Week 2: Conversion Tracking
Set up full conversion tracking:
- Google Ads conversion events for every form submission
- Call tracking with dynamic number insertion (different tracking numbers for each ad, keyword, and landing page)
- Google Analytics 4 with e-commerce-style event tracking
- Weekly CRM sync to import which leads became estimates and which estimates became booked jobs
This was the single most important change. Once Google's bidding algorithm had conversion data, it could optimize for leads instead of clicks. We switched to Target CPA bidding after accumulating 30 conversions, setting the target at $60/lead.
Week 3–8: Optimization
With tracking in place, we could see exactly what was working and what wasn't. The weekly optimization process:
- Search terms review: Every Monday, we reviewed the past week's search terms and added negatives for irrelevant queries. In the first month alone, we added 87 new negative keywords.
- Keyword bid adjustments: Keywords generating leads under $50 got budget increases. Keywords above $100 with no booked jobs got paused.
- Ad copy testing: We ran 3 ad variations per ad group and paused underperformers every 2 weeks. The winning ad copy emphasized "Free Estimate in 24 Hours" and the Google review rating.
- Landing page testing: We tested button colors, form length, headline variations, and testimonial placement. Conversion rate climbed from 14% to 19% over 60 days.
- Dayparting: We analyzed conversion data by hour and day. Leads were cheapest Monday–Wednesday, 7 AM–11 AM. We increased bids 20% during those windows and decreased bids 15% on weekends when conversion rates were lower.
- Device bid adjustments: Mobile converted at 21% vs. desktop at 12%. We increased mobile bids by 25%.
Week 8–12: Scale
Once the account was optimized and consistently generating leads at $47 each, we scaled:
- Increased budget from $4,200/month to $5,800/month
- Added Local Services Ads (LSAs) for an additional 15–20 leads per month at $35/lead
- Launched retargeting campaigns to re-engage visitors who viewed the landing page but didn't convert
- Expanded keyword coverage to adjacent terms ("roof inspection," "roof estimate," "hail damage roof")
The Results: 90-Day Snapshot
Here's the before-and-after comparison:
Before (previous agency):
- Monthly ad spend: $5,100
- Monthly leads: 31
- Cost per lead: $164
- Landing page conversion rate: 2.8%
- ROAS: Unknown (no tracking)
- Wasted spend on irrelevant clicks: ~43%
After (Carpenter Productions, 90-day average):
- Monthly ad spend: $4,200 (reduced)
- Monthly leads: 89
- Cost per lead: $47
- Landing page conversion rate: 19%
- ROAS: 6.2x
- Qualified leads in 90 days: 127
- Wasted spend on irrelevant clicks: <4%
We generated nearly 3x the leads while spending 18% less on ads. Cost per lead dropped 71%. And because we tracked leads all the way to booked jobs, we know the true ROAS was 6.2x - meaning every dollar spent on ads generated $6.20 in revenue.
Why This Worked
There's no secret tactic here. The results came from disciplined execution of fundamentals:
- Targeting the right searches: Phrase and exact match keywords with high buying intent, not broad match keywords that attract everyone.
- Eliminating waste: A comprehensive negative keyword strategy that prevented ads from showing on irrelevant searches.
- Converting traffic: Dedicated landing pages designed for one purpose - getting the visitor to call or fill out the form.
- Measuring what matters: Full conversion tracking from click to booked job, so every optimization decision was based on revenue data, not vanity metrics.
- Continuous optimization: Weekly analysis and adjustments, not "set it and forget it." The account today looks completely different from the account at launch because we've made hundreds of data-driven changes.
What This Means for Your Roofing Company
If you're running Google Ads and your cost per lead is above $100, there's almost certainly waste in your account. The most common culprits are broad match keywords, missing negative keywords, and sending traffic to your homepage instead of a dedicated landing page.
You don't need to 10x your budget to 10x your results. Greenlee's results came from spending less money more intelligently. The same principles apply whether you're in a small town or a major metro.
The difference between $164 per lead and $47 per lead is the difference between marketing that feels like an expense and marketing that funds your growth.
Frequently Asked Questions
What was the total investment for Greenlee's marketing transformation?
Greenlee's total monthly investment was approximately $6,700 - $4,200 in ad spend and $2,500 in management fees. Against the $26,000+ in monthly revenue generated from Google Ads leads (89 leads × 72% estimate rate × 41% close rate × $8,400 average job), that's a 6.2x return. The management fee pays for weekly optimization, landing page management, conversion tracking, CRM integration, and monthly strategy calls.
Can these results be replicated in a more competitive market?
Yes, though the absolute numbers will differ. In a more competitive metro, cost per click will be higher ($30–$60 vs. Greenlee's $18–$35), so your cost per lead may land at $60–$100 instead of $47. But the same playbook applies: tight keyword targeting, negative keyword management, high-converting landing pages, and tracking to booked jobs. We've applied this framework in markets of all sizes and consistently see 40–60% reductions in cost per lead versus accounts managed by generalist agencies.
How quickly can a roofing company see results like these?
The first leads typically come within days of launching properly structured campaigns. Meaningful optimization takes 30–60 days as you accumulate enough data to identify top-performing keywords and eliminate waste. The 90-day mark is when results stabilize - by then, you have robust conversion data, a refined negative keyword list, and landing pages that have been tested and optimized. Greenlee's CPL was $72 in month one, $51 in month two, and $47 in month three. The trajectory continued improving past the 90-day mark as we scaled what worked.
About the Author
Jackson Carpenter is a marketing strategist and the founder of Carpenter Productions, a marketing agency built for manufacturers and trades businesses. With a decade of production experience and deep expertise in blue-collar industries, Jackson helps companies turn marketing spend into measurable revenue growth.
Learn More About JacksonKeep Reading
Last updated:
