43 roofing leads at $76 CPL: What a full-funnel campaign actually looks like

Highlights
Videos
Images
The problem
In early 2024, a California-based general contractor sought to sell more roof replacements. It was a family-owned business in all its facets—they even had family door knock and chase leads. Their team was driven and gaining traction thanks to some small city government contracts, but they still felt behind.
Although they weren’t ready to fully abandon their current efforts, they needed a way to boost them. Since their government contracts were seasonal and door to door was slow, lead volume was low.
With this problem in mind, I designed, developed, and managed a full-pipeline system to increase lead flow and give the very talented team qualified opportunities to close.
My solution
My goal was to build a complete pipeline that could increase lead flow and save time. From engaging ad creatives to instant form qualification to automated SMS follow-up.
Since my client had no organic presence, paid was the only viable path to fast volume. Meta Ads stood out as visual-first, which allowed us to leverage the business's existing roof footage and photos.
Developing the assets
All ad copy, creative, and forms were based on these angles:
Video creative
Image creative
Instant form with SMS verification
Automations
Upon form submission, a set of automations were triggered in GoHighLevel:
Messages:
Internal “New lead” notification to team
Internal “New lead” notification to myself
SMS to lead: “Just received your request. Confirming that this is [name]?” (paraphrased)
Nurture: a 5-day nurture SMS sequence that automatically followed up with the lead every 24 hours. SMS texts that addressed pain points and provided value. With the goal being to secure an inspection time and date.
Tagging: An automated tagging system tracked lead source and buyer journey stage. Notifications went to the sales team and myself to ensure leads were contacted in a timely manner.
GoHighLevel workflow diagram
Down-funnel impact
Apart from generating the leads, it was also critical to book as many of them as we could. Thanks to a combination of a reliable system and follow-up persistency, we were able to book 12 out of 43 leads for free inspections. Ultimately, 3 of those leads turned into closed roof replacements.
Mid-campaign improvements
The campaign moved forward by focusing attention and spend toward what moved leads further down funnel.
Ad Cadence: Developed new creatives once every couple weeks, scaled winners, replaced losers.
Message control: Created variants based on best performing angle. Tested new angles.
Funnel protection: Optimized forms for quality leads and tested different text messages to consistently improve downstream rates.
Three key lessons
Creative doesn’t have to be high-production to generate quality leads. Craft a relevant message and test different angles for the best results.
Quick and persistent follow up makes all the difference. Auto-texting within 3 minutes is a must. Multiple contacts can increase your chances of a pick up.
Form friction is a balancing act. Too much friction slows lead flow. Too little friction invites spam and low conviction prospects.
What I'd do differently
Test more ad creatives: The ads performed well, but increasing output of fresh angles could improve future campaigns.
Sales team accountability: Aside from text automations, sales follow-up was inconsistent. To improve it, I could have set a response time SLA, and notifications to contact untouched leads.
A/B test form questions: Testing a soft pre-qualifier like credit range could have filtered out disqualifiers before they ever reached the sales team.
Tech Stack
Sources
More Case Studies
How I generated solar + roof leads at 63% lower cost than average
$885 spent, 23 leads, and $38 CPL in 4 weeks with Meta Ads.

HVAC leads at $59 CPL: Here's how I built the campaign
30 leads in 4 weeks from $1,767.15 in Meta spend.

Working on a similar challenge? Let's talk.
If you want to see more work samples, discuss a role, or ask any questions, feel free to reach out.









