Quick question: which of your ads generated the most revenue last month? Not leads — revenue.
If you can't answer that, you're flying blind. And you're not alone. Almost every roofing company we talk to can tell us their cost per lead but has no idea what their cost per sale is.
The Problem with Cost Per Lead
Here's a scenario we see constantly:
Your agency runs two campaigns. Campaign A generates 100 leads at $30 each. Campaign B generates 50 leads at $60 each.
Your agency recommends scaling Campaign A and cutting Campaign B. The CPL math is obvious, right?
But when you look at what actually closed:
- Campaign A: 100 leads, 5 sales = $600 cost per sale
- Campaign B: 50 leads, 15 sales = $200 cost per sale
Campaign B was generating 3x better ROI. But nobody knew because nobody was tracking to the sale.
This happens every single day in roofing marketing.
What Ad-Level Attribution Actually Is
Ad-level attribution connects every sale back to the specific ad that generated the lead. Not "it came from Facebook" — but "it came from Ad #47, targeting homeowners in zip codes 32801-32809, using the storm damage creative, on mobile placement."
Here's how it works:
- UTM parameters on every ad link tag the traffic source, campaign, ad set, and individual ad
- Landing page captures the UTMs alongside the lead's contact info
- CRM integration stores the attribution data with the lead record
- Sales disposition — your team marks each lead as sold, no sale, no show, or DQ
- The feedback loop — that disposition data flows back to us, and we optimize toward what's actually generating revenue
What This Looks Like in Practice
Instead of a report that says "200 leads, $40 CPL, $8,000 spent" — you get:
| Ad Creative | Leads | Sales | Revenue | ROAS |
|---|---|---|---|---|
| Storm damage before/after | 45 | 14 | $208,866 | 1,160% |
| Free inspection offer | 80 | 8 | $119,352 | 497% |
| Testimonial video | 35 | 9 | $134,271 | 957% |
| Generic brand ad | 40 | 2 | $29,838 | 124% |
Now you know exactly where to put your next dollar. Scale the storm damage creative. Improve the free inspection follow-up. Kill the generic brand ad.
Without attribution, you'd average everything together and have no idea that one ad is 9x more profitable than another.
Why Most Agencies Don't Do This
It's hard. It requires:
- Technical setup (UTMs, CRM integration, pixel configuration)
- Client cooperation (sales team has to report dispositions)
- Different optimization approach (optimizing for quality over quantity often means higher CPL)
Most agencies optimize for CPL because it's easy to report and makes them look good. Optimizing for cost per sale requires more work, more transparency, and sometimes admitting that a "cheap" campaign is actually losing money.
The Bottom Line
If your marketing agency can't tell you your cost per sale, they're not tracking the thing that matters. Every roofing company running ads should have ad-level attribution in place. It's the difference between guessing and knowing.