Tracking Marketing ROI for Roofers: Attribution, LTV, and Payback
Most roofing shops cannot answer a simple question: "How much did we spend on marketing last month, and how much revenue did that produce?" Not because the data is unavailable, but because nobody has wired the attribution together. Here is the framework for tracking marketing ROI that actually closes the loop.
The four numbers every shop needs
- Cost per lead (CPL) by channel
- Close rate by lead source
- Average ticket by lead source
- Customer lifetime value (LTV) by lead source
These four numbers, tracked across channels, tell you which marketing is actually working. Missing any one of them and you are guessing.
Attribution basics
Attribution is the problem of assigning credit to marketing touchpoints. A typical roofing customer journey:
- Sees a truck wrap (brand impression)
- Searches "roofing companies near me" (Google)
- Clicks a Google Ad
- Visits the website
- Leaves without converting
- Sees a Facebook ad (retargeting)
- Clicks and calls the number
- Books an inspection
- Signs contract
Which channel gets credit? Depends on the model.
First-touch attribution
Credits the first touchpoint (in this case, the truck wrap or original Google search). Useful for understanding what creates awareness. Bad for optimizing direct-response channels.
Last-touch attribution
Credits the last touchpoint (in this case, Facebook retargeting click). Default model in most ad platforms. Useful for direct-response optimization. Ignores upstream contributors.
Linear attribution
Splits credit across all touchpoints equally. More realistic but harder to operationalize.
Recommended approach for roofing
Use last-touch as your primary model (assigns credit to the channel that drove the conversion) but track first-touch in your CRM for context. In RoofKnockers, capture both first_touch_source and last_touch_source on every contact. You will see channels like truck wraps and SEO appear in first-touch data but rarely in last-touch. That is not a reason to cut them. It is a reason to understand their role.
Building the CPL dashboard
Monthly report, every channel:
ChannelSpendLeadsCPLClosedCost per saleRevenueROAS Google Ads$4,50068$6614$321$168,00037x Facebook Ads$2,20055$409$244$108,00049x LSA$1,80028$649$200$108,00060x HomeAdvisor$2,40040$606$400$72,00030x Direct mail$3,00035$868$375$96,00032x Yard signs$40018$225$80$60,000150x Organic SEO$1,50042$3617$88$204,000136x Referrals$015$010$0$120,000InfiniteNumbers above are illustrative, not prescriptive. Your actual ratios will vary. Pull the report monthly in your CRM.
What the dashboard reveals
From a table like that above, you immediately see:
- Referrals and organic SEO have the best ROAS (infinite and 136x). Invest more there.
- Yard signs are absurdly efficient at 150x ROAS. Scale up.
- HomeAdvisor is the worst ROAS (30x) among paid channels. Review or cut.
- Facebook Ads outperform Google Ads on ROAS in this case. Re-balance budget.
Without this view, you have no basis for budget decisions. You are guessing.
Close rate by source is critical
Leads are not equal. A 20% close rate on one channel vs a 40% close rate on another changes everything. Typical patterns:
- Referrals: 50 to 75% close rate
- Organic SEO: 30 to 45%
- LSA: 20 to 35%
- Google Ads (non-branded): 15 to 25%
- Facebook Ads: 10 to 20%
- HomeAdvisor/Angi: 10 to 20%
- Direct mail: 15 to 25%
Warmer sources close warmer. Budget should weight toward the warmer channels even if CPL is higher, because cost per signed job (not CPL) is what matters.
Average ticket by source
Same-channel lead quality varies by ticket size. Retail replacement leads from Google Ads skew higher ticket than repair leads from Facebook. Track it:
- Which channel produces $15k+ full replacements vs $800 repairs?
- Is one channel dominated by insurance claims (higher margin) vs out-of-pocket (lower margin)?
Customer lifetime value (LTV)
In roofing, customers do not just buy once. LTV spans:
- Initial roof job: $8,000 to $18,000
- Follow-up repairs over 10 years: $500 to $2,000
- Gutter or siding cross-sell: $2,000 to $8,000
- Referrals generated: 0.5 to 1.5 additional customers per delighted customer
Typical roofing customer LTV: $10,000 to $18,000 direct, plus $8,000 to $12,000 in referral value. Total LTV: $18,000 to $30,000 per happy customer.
This reframes marketing economics. Paying $400 to acquire a customer worth $20,000 in LTV is a 50x return, not a 27x return on the initial job. Use LTV in budgeting decisions.
Payback window
Different channels pay back on different timelines.
ChannelPayback window Paid ads, direct mail, LSA30 to 90 days (lead to signed job) Yard signs60 to 120 days (sign lifetime plus close cycle) SEO and content12 to 24 months Brand (truck wraps, uniforms)24 to 48 months Referral programsImmediate on first cycle, compoundingA shop with cash-flow constraints should overweight short-payback channels. A shop with capital should invest in long-payback channels (SEO, brand) that produce cheaper leads in years 2 to 5.
Tracking infrastructure
Minimum requirements:
- UTM parameters on every paid link
- Unique phone numbers per channel (call tracking)
- Landing pages that capture source data on form submit
- CRM that stores source, medium, campaign on every contact
- Ability to match signed contract revenue back to lead source
See our call tracking guide and CRM stack guide for the setup.
What to do with the data
Monthly, after pulling the ROI dashboard:
- Kill or shrink channels with cost-per-sale more than 25% of ticket
- Scale channels with cost-per-sale under 10% of ticket
- Test one new channel per quarter with a clear kill/scale decision at 90 days
- Review lead quality with the sales team (sometimes the issue is rep handling, not the channel)
- Update your marketing plan annually based on 12-month data, not 1-month data
The reporting meeting cadence
- Weekly: Lead volume by channel, flagged issues (traffic drop, lead quality complaint)
- Monthly: Full CPL, close rate, cost-per-sale, ROAS report
- Quarterly: Strategic channel review, budget reallocation, test plan for next quarter
- Annual: Full marketing audit, channel mix review, LTV update
Common mistakes
- Tracking CPL but not close rate (optimizing for cheap leads that never close)
- Last-touch only, ignoring brand contributors
- No UTM parameters on paid campaigns
- No call tracking (50%+ of leads unattributed)
- Reviewing ROI only when a channel obviously underperforms
- Cutting SEO and content because they do not show in last-touch reports
Marketing ROI is not a spreadsheet task. It is a CRM task. When every lead is tagged with source data and every signed job maps back to the lead, the dashboard builds itself. Without that infrastructure, ROI is a guess and marketing meetings are arguments. Wire the attribution once. Argue less. Make better budget decisions forever.
Ready to grow your roofing sales operation?
Start Your 14-Day Free Trial