How a roofing campaign generated approximately $230K in revenue from $29K in ad spend.
This roofing case study used a mix of marketing efforts with Facebook and Meta Ads as a key acquisition channel. Leads generally cost $80–$100 and appointments approximately $220–$280.
Quick answer
The roofing campaign spent about $29,000 and generated approximately $230,000 in revenue. Leads typically cost $80–$100 and appointments roughly $220–$280, producing about 7.9× revenue-to-ad-spend.
The challenge
The roofing company needed a more consistent pipeline without depending on one source of demand. Because roofing leads can be expensive, the campaign had to be judged on appointments and revenue, not CPL alone.
The strategy
A mix of paid acquisition and follow-up was used, with Facebook and Meta Ads helping create homeowner demand. Campaign decisions were tied to qualification, appointment cost and pipeline outcomes.
- Cost per lead: $80–$100
- Cost per appointment: about $220–$280
- Total ad spend: about $29,000
- Revenue generated: about $230,000
- Revenue-to-ad-spend: about 7.9×
Why CPL was not the main metric
A roofing lead near $100 can still produce strong economics when the appointment and sales process converts well. The important question is what each qualified opportunity costs and how much revenue the channel creates.
What roofers can learn from this
Measure paid media through contact rate, qualified appointments, estimates and sold jobs. Optimizing only for cheaper leads can push campaigns toward lower-intent inquiries.
How the campaign numbers should be read
Cost per lead represents ad spend divided by captured inquiries. Appointment cost represents spend divided by appointments attributed during the reporting period. Compare appointment costs only when the qualification standard, booked-versus-attended definition and attribution window are consistent. The approximate revenue figure reflects revenue associated with the campaign; it is not gross profit and does not include every agency, software, fulfillment or operating cost. The 7.9× figure is therefore a revenue-to-ad-spend ratio, not a profit multiple.
What can change roofing performance?
Roofing results vary with market competition, seasonality, storm activity, service mix, job value, creative, response time, inspection capacity and the sales team. Another contractor should build targets from its own gross margin and close rate. This campaign is a specific example and does not guarantee the same outcome elsewhere.
What should be reviewed before scaling?
Separate valid inquiries from duplicates, spam and out-of-area requests. Then review contact rate, qualified opportunities, booked and attended inspections, estimates, sold jobs and revenue by source. Keep unresolved inspections and estimates in a mature sales cohort rather than counting them as losses too early, and apply the same attribution window across sources. For profitability analysis, compare fully loaded acquisition cost—including media, agency and software costs—with gross profit after cancellations and refunds. The lead qualification framework helps keep stages consistent, the measurement framework supports mature-cohort reporting, and the benchmark calculator connects job value, gross margin and close rate to allowable acquisition cost. Review the roofing acquisition economics guide for additional roofing context.
Request a one-page Roofing Growth Leak Map to compare your available funnel evidence with this methodology. It will summarize the largest visible constraint, first practical priority and next measurement—not predict the result of a future campaign.
Get your free Roofing Growth Leak Map →
Related roofing resources
All contractor case studies · Roofing marketing agency · Best advertising for roofing companies · Roofing marketing budget · Measurement framework