Roofing Marketing Cost Per Acquisition by Channel: What Each Lead Source Really Costs
On this page
Most roofing owners can tell you what they spend on marketing. Almost none can tell you what a closed job actually costs by channel. They know the Google Ads bill, the door-knocker's draw, the mailer drop. What they can't tell you is whether the $9,800 roof they signed last Tuesday cost them $180 or $2,400 to acquire, because nobody traced it back through the lead, the appointment, the close rate, and the wasted spend on the deals that died.
That gap is expensive. It's the reason contractors keep funding channels that feel busy but lose money, and starve the ones quietly carrying the company. Cost per acquisition (CPA) is the single number that cuts through it: total money spent on a channel divided by the number of signed jobs it produced. Not leads. Not appointments. Signed contracts with deposits.
What follows is a channel-by-channel breakdown of what roofing acquisition really costs, where the published "average" numbers mislead you, how to calculate your own true CPA including the parts everyone forgets, and how to shift budget toward the channels that actually print money in your market. The numbers here are ranges drawn from how these channels behave across residential retail and storm-restoration roofing. Your market, your crew, and your close rate will move them. The method matters more than the benchmark.
What cost per acquisition actually means in roofing
There are three numbers people sloppily call "cost per lead," and conflating them is how budgets get wrecked.
Cost per lead (CPL): total channel spend divided by the number of inbound contacts. A form fill, a phone call, a door-knock conversation that got a name and number. Cheap CPL feels good and tells you almost nothing.
Cost per appointment (CPA-appt): spend divided by the number of qualified, sat appointments. This filters out the tire-kickers and wrong numbers.
Cost per acquisition (CPA): spend divided by signed jobs. This is the number that pays your bills.
The relationship between them is everything. A channel with a $40 CPL looks four times better than one with a $160 CPL, until you learn the cheap channel closes at 4% and the expensive one closes at 35%. Run the math:
- Channel A: $40 CPL, 4% lead-to-sign = $1,000 CPA
- Channel B: $160 CPL, 35% lead-to-sign = $457 CPA
The "expensive" leads are less than half the true cost. This inversion happens constantly in roofing, and it's why CPL-shopping is a trap.
The full-cost formula nobody runs
Most contractors compute CPA as ad spend / jobs and stop there. That undercounts the real number badly. The honest formula:
True CPA = (Media spend + Production cost + Sales labor + Tools + Allocated overhead)
/ Signed jobs
Where:
- Media spend = the obvious ad dollars, platform fees, mailer printing/postage, list costs.
- Production cost = what it took to create the lead flow: the content writer, the photographer, the agency retainer, the SEO contractor, the design.
- Sales labor = the hours your reps and setters spent on that channel's leads, including the ones that didn't close. This is the line everyone skips and it's often the biggest.
- Tools = CRM seats, call tracking, dialer, the canvassing app, landing-page software, attribution allocated to the channel.
- Allocated overhead = a fair slice of the marketing manager's salary and management time.
Leave out sales labor and a door-knocking program looks nearly free. Add it back and a $1,200/week canvasser who books two jobs is costing you $600/job in labor alone before a single dollar of materials. That's not a reason to kill canvassing. It's a reason to count honestly so you compare apples to apples.
Why "industry average CPA" is close to useless
You'll find blog posts citing a roofing CPA of "$200 to $500." Treat those as noise. The real number swings with at least six variables that no average can hold constant:
- Job type and ticket. A full storm replacement at $14,000 can absorb a $900 CPA and still leave a healthy margin. A $600 repair cannot. CPA only means something relative to gross profit per job.
- Storm vs. retail. Storm markets compress CPA because demand is pulled forward and urgency is high; retail markets require you to manufacture demand.
- Close rate. The same lead handed to a 20%-close rep and a 45%-close rep produces double the CPA for the weaker rep. Your sales process is a CPA lever.
- Market saturation. Google Ads in a metro with 40 competitors bidding costs three times what it does in a rural county.
- Brand maturity. A company with 600 reviews and 15 years of referrals has a structurally lower blended CPA than a two-year-old shop buying every lead.
- Average job size. Bigger average tickets justify higher CPA and open up channels (like premium PPC) that small-ticket shops can't afford.
So stop asking "what's a good CPA?" and start asking "what CPA can my gross profit per job support, and which channels hit it in my market?"
The CPA-to-margin guardrail
Here's a clean way to set your ceiling. Take your average gross profit per job (revenue minus materials and labor, before overhead). A common target is to keep total marketing-and-sales acquisition cost under 10-15% of revenue, which for most healthy roofing shops means CPA should land somewhere between 8% and 20% of the job's revenue depending on margin structure.
Worked example:
- Average job: $11,000 revenue
- Gross profit per job: $3,800 (35%)
- If you're willing to spend 20% of gross profit to acquire: max CPA = $760
- If you spend up to 30% of gross profit on tougher channels: max CPA = $1,140
Any channel beating $760 CPA is a green light to scale. Anything between $760 and $1,140 is a maybe, worth it only if it brings volume you can't get cheaper. Anything north of that is a leak unless it's seeding referrals and reviews that lower future CPA. Now we can grade each channel against a real bar.
Channel-by-channel CPA breakdown
For each channel below: how it behaves, a realistic CPA range, what drives it up or down, the hidden costs, and who it fits. The ranges assume an $8,000-$14,000 average ticket and a competent but not elite sales process. Adjust hard for your own close rate.
1. Referrals and past customers
Realistic CPA: $50-$250. Almost always your lowest-cost and highest-close channel, and the one most contractors never systematize.
Referrals close at 50-70% because trust is pre-loaded. The "media spend" is near zero, the cost is the referral incentive (gift card, cash, donation) plus the labor to actually ask. The reason CPA isn't literally zero is the systematizing work: the follow-up sequence, the review requests, the reactivation campaign to past customers whose roofs are now aging into the next event.
What drives it down: A formal ask at job completion, a written referral reward, a 12-18 month post-job check-in, and consistent review generation that feeds search and social proof.
Hidden cost: It's capacity-limited. You can't 10x referrals next quarter on demand; they scale with your installed base and your reputation, both of which take years. So referrals lower your blended CPA but can't be your only acquisition engine while you're growing.
Who it fits: Everyone, and it should be the first program you build before buying a single click. A roofer doing $3M with no referral system is leaving the cheapest jobs in the market on the table.
A concrete referral system that lowers CPA without much spend: at every job completion, the crew lead or project manager hands the homeowner a one-page leave-behind with a QR code to your review link and a written referral reward ($100-$250 per signed referral is common). A week later, an automated text asks for the review. At 6 months, a check-in text ("how's the roof holding up after that spring weather?") keeps you top of mind. At 12-18 months, a postcard or text reminds them you're around when a neighbor needs work. None of that costs more than a few dollars per customer, and a healthy installed base of even 400 past customers generating a 5-10% annual referral rate produces 20-40 of your cheapest jobs a year on autopilot. The reason most shops don't have this isn't cost, it's that nobody owns the follow-up. Assign it to one person and measure referral jobs as their own channel.
2. Google Local Services Ads (LSA)
Realistic CPA: $250-$700. Often the best paid channel for residential roofing right now, because you pay per lead (not per click) and the lead intent is high.
LSAs sit at the very top of the search results with the Google Guaranteed badge. You're charged per qualified lead, typically $25-$75 per lead in roofing depending on metro. Lead-to-sign runs 15-30% because the searcher is actively looking for a roofer, not casually browsing.
Math: at $45/lead and a 22% close rate, CPA = $205 in media. Add sales labor and tools and you're realistically $300-$450 all-in. That's excellent against an $11,000 ticket.
What drives it down: Your review count and response rate directly affect lead volume and ranking. Disputing junk leads (wrong service area, spam) keeps your effective CPA honest, Google credits qualified disputes. Fast call answering matters; LSA rewards responsiveness.
Hidden cost: Lead volume is capped by search demand in your area, and you compete head-to-head on reviews. In saturated metros, the badge alone won't carry you.
Who it fits: Established companies with a clean license, insurance, background check, and a real review base. New shops struggle to get verified and ranked.
3. Google Search Ads (PPC)
Realistic CPA: $400-$1,200. Powerful, scalable, and easy to lose money on if you run it loosely.
Click costs for roofing keywords are among the highest in home services, frequently $15-$40+ per click for high-intent terms like "roof replacement" or "storm damage roof." If it takes 30 clicks to get a lead and you close 18% of leads, your media CPA alone can run $700-$1,000. The waste comes from broad match burning budget on irrelevant searches, weak landing pages, and slow lead response.
What drives it down:
- Tight keyword and negative-keyword lists (block "DIY," "jobs," "salary," "repair cost" if you don't want price-shoppers).
- Dedicated landing pages, not your homepage, with a single clear call to action and a fast-loading form.
- Speed-to-lead: calling a web lead within five minutes can multiply contact rates versus an hour later.
- Call tracking so you know which keywords produce signed jobs rather than just clicks.
Hidden cost: Agency management fees (often 10-20% of spend or a $1,500-$3,000 retainer) belong in your CPA math. A $5,000/month spend with a $1,500 retainer is really $6,500 working against your job count.
Who it fits: Companies with the average ticket and margin to absorb a four-figure CPA, the discipline to track to signed jobs, and the speed to answer leads instantly.
4. SEO and content (organic search)
Realistic CPA: $80-$400 at maturity, effectively infinite in month one. The highest-leverage channel over a multi-year horizon and the worst channel if you need jobs this month.
SEO has a brutal cost curve. You spend for 6-12 months before meaningful job flow, so early CPA looks catastrophic. But organic leads cost nothing per click once you rank, so as volume builds, your fixed content investment spreads across more and more jobs and CPA collapses. A shop spending $2,000/month on SEO that eventually produces 12 jobs/month is at roughly $167 CPA, and falling.
What drives it down: Local SEO fundamentals, an optimized Google Business Profile, consistent reviews, location and service pages, genuinely useful content that answers homeowner questions, and local backlinks. The content has to actually help people; thin pages don't rank anymore.
Hidden cost: Time and patience. Owners kill SEO at month four right before it would have paid off, then complain it doesn't work. Track cumulative CPA, not monthly, or you'll make that mistake.
Who it fits: Companies playing a 2-3 year game who can fund the dry spell. It's the channel that lowers everyone else's CPA by building the brand and reviews that make ads convert better.
5. Door knocking and canvassing
Realistic CPA: $300-$900. The backbone of storm restoration and a strong retail channel in the right neighborhoods, with the most underestimated true cost.
The media spend is basically zero, which fools owners into thinking it's cheap. The real cost is labor. A canvasser at $800-$1,500/week (base plus per-deal) who books 1.5-3 jobs/week puts your labor CPA at $300-$700 before materials. Add the canvassing app, the territory data, and management, and you're squarely in PPC territory, sometimes higher.
What makes door knocking win or lose is where you knock. Knocking random streets is how you burn out reps and money. Knocking the right roofs, the ones a storm actually wore out or that are aging out of their service life, can double your contacts-to-appointment rate, which is the single biggest CPA lever in canvassing.
What drives it down:
- Targeting roofs by age and storm exposure instead of carpet-bombing subdivisions.
- A tight, compliant pitch focused on a free inspection and honest documentation (more on the compliance line below).
- Tracking each rep's contacts → inspections → signed jobs so you can coach the funnel instead of just yelling about activity.
Hidden cost: Rep turnover. If you spend three weeks training a canvasser who quits, that sunk cost belongs in the channel's CPA. High-turnover canvassing programs have hidden CPAs far above what the spreadsheet shows.
Who it fits: Storm-restoration shops and retail companies in dense, older neighborhoods with a manager who can actually run a canvassing team.
6. Storm chasing and post-event canvassing
Realistic CPA: $200-$600 during an active event, much worse if you chase the wrong storms. The classic restoration play: a hail or wind event hits, you mobilize crews and canvassers into the impact zone.
When it works, it's the cheapest volume in roofing because demand is concentrated, urgent, and pre-qualified by the weather. When it fails, it fails because the storm got over-hyped, the actual damage was marginal, or twelve out-of-town companies flooded the same zip code and torched everyone's contact rates.
The make-or-break is knowing which roofs in the impact zone actually took damage worth inspecting. A hail swath is not uniform; one street can have golf-ball impacts while the next over got pea-sized. Mobilizing your whole team across a broad "affected area" wastes most of the labor on roofs that won't qualify. Narrowing to the streets with real hail energy and roofs old enough that the damage matters is the difference between a $250 CPA and a $700 one.
Compliance note (read this twice): Your canvassers should offer to inspect the roof, document any damage with photos, and prepare an accurate repair estimate. That's it. They must not promise the homeowner the insurance company will pay, promise the deductible will be "taken care of" or waived, advertise a "free roof," tell the homeowner what their policy covers, or offer to "handle" or negotiate the claim for them. Negotiating or adjusting a homeowner's claim for compensation is unlicensed public adjusting in most states and a fast way to lose your license and your reputation. The clean, legal frame: we document thoroughly, write an accurate estimate of the repair scope, and hand it to you; you file with your carrier and the carrier decides coverage. Train the do-not-say list into every rep before they knock.
Who it fits: Dedicated storm-restoration operations with the crews, the supplement-documentation discipline, and the willingness to verify storms before mobilizing.
7. Direct mail and EDDM
Realistic CPA: $600-$1,500. Slow, unglamorous, and still works when the list is good and the volume is sustained.
Every Door Direct Mail (EDDM) and targeted mailers run roughly $0.40-$0.80 per piece all-in (print, postage, design). Response rates for cold roofing mail are low, often 0.3-1%, and not every response becomes a job. At a 0.5% response on 10,000 pieces, you get 50 calls; close 20% and you've got 10 jobs from a $5,000-$7,000 drop, so $500-$700 in media CPA, before you add the design and sales labor that push it higher.
The lever is the list. Blanketing a whole carrier route wastes most of your postage on roofs that are nowhere near due. Mailing the homes whose roofs are actually aging out, or that sit in a recent storm footprint, can lift response several-fold and drop CPA proportionally.
What drives it down: A targeted list over EDDM, a strong single offer, repetition (one drop rarely works; 3-6 touches build recognition), and a tracked phone number per campaign.
Hidden cost: Mail rewards consistency, so the true CPA only shows up after several months of drops. One-and-done mailers almost always disappoint and get wrongly written off.
Who it fits: Companies with patience, a decent budget, and access to a good roof-age or storm-targeted list. Without list targeting, mail is the easiest place to waste money.
8. Facebook and Instagram (paid social)
Realistic CPA: $500-$1,400. Cheap leads, expensive jobs, the CPL-vs-CPA trap in its purest form.
Meta lead-form ads can produce leads at $15-$40 each, which looks incredible until you measure close rates. Social leads are demand-generation, not demand-capture, the person wasn't shopping for a roof, your ad interrupted them. Close rates of 3-8% are common, and a chunk of leads are unreachable or unqualified. At $25/lead and a 5% close, media CPA = $500, and that's before the heavy sales labor of chasing dozens of lukewarm leads per job.
What drives it down:
- A qualifying step in the form (homeownership, roof age, intent) to filter junk, even though it raises CPL it lowers CPA.
- Brutal speed-to-lead; social leads go cold within minutes.
- Storm-timed campaigns to homeowners in an affected area, where you're capturing latent demand instead of inventing it.
- Retargeting your website visitors, which converts far better than cold prospecting.
Hidden cost: Sales-team morale and time. Reps burn out chasing 20 dead leads to find one job, and that wasted labor is a real CPA line.
Who it fits: Companies with a high-volume, fast-response inside-sales setup and the patience to optimize creative and audiences. Not for shops that can't answer a lead in under 10 minutes.
9. Shared and exclusive lead aggregators
Realistic CPA: $800-$2,500+. The fastest way to get leads and one of the most expensive ways to get jobs.
Services that sell roofing leads charge $30-$150+ per lead. Shared leads (sold to 3-5 contractors) close in the 3-10% range because you're racing competitors and the homeowner is fielding five calls. Exclusive leads cost more but close better. Either way, the math is rough: at $80/shared lead and a 6% close, media CPA = $1,333, and you're paying for the privilege of competing on price.
What drives it down: Speed-to-lead is everything on shared leads, the first contractor to call wins disproportionately. Aggressive disputing of bad leads (wrong number, not a homeowner, out of area) recovers real money.
Hidden cost: Margin erosion. Aggregator leads often shop hardest on price, so even the jobs you win come at thinner margins, a second hit beyond the lead fee.
Who it fits: Companies that need volume now, have a fast inside-sales process, and treat aggregators as a supplement, not a foundation. Building your business on rented leads means your CPA never improves, you're permanently renting demand instead of owning it.
10. Yard signs, vehicle wraps, and job-site presence
Realistic CPA: $100-$400 when measured honestly. Cheap, slow, compounding, and almost impossible to attribute, which is why it's undervalued.
A wrapped truck is a one-time $2,500-$4,000 cost that markets for years. Yard signs are a few dollars each. Neither produces a flood of trackable leads, but they build neighborhood familiarity that makes every other channel convert better. The CPA looks great on paper precisely because the cost is so low, but you can't scale jobs on signage alone.
Who it fits: Everyone. It's a cheap brand layer that lowers your blended CPA, not a primary engine.
A worked CPA comparison across three channels
Numbers in isolation don't teach as well as a side-by-side, so here's a single roofer's quarter, with the same $11,000 average ticket and $3,800 gross profit per job, running three channels at once.
Channel: Google PPC. Spent $9,000 in media plus a $1,500 agency retainer = $10,500. It produced 420 clicks, 32 leads, 18 sat appointments, and 5 signed jobs. Add an estimated $1,500 of sales-rep time chasing those 32 leads. True spend = $12,000, CPA = $2,400. That's above the $1,140 ceiling, this channel is bleeding. But the diagnosis matters: lead-to-appointment was strong (56%), and appointment-to-sign was weak (28%). The problem isn't the channel, it's the sales close or the lead quality from broad keywords. Fixable.
Channel: LSA. Spent $1,800 in lead fees (40 leads at $45), disputed 6 junk leads for a $270 credit, net $1,530. Those 34 valid leads produced 22 appointments and 7 signed jobs. Add $1,000 of rep time. True spend = $2,530, CPA = $361. Well under ceiling. Scale it as far as the search demand allows.
Channel: Targeted direct mail. Dropped 12,000 pieces to a roof-age-targeted list at $0.55/piece = $6,600, plus $600 design. Generated 78 calls (0.65% response), 30 appointments, 8 signed jobs. Add $1,200 rep time. True spend = $8,400, CPA = $1,050. Just under the stretch ceiling, and it brought volume the other two couldn't. Keep it, keep refining the list.
The lesson: the "expensive" PPC isn't expensive because it's PPC, it's expensive because of a sales leak that switching channels would never fix. Without the funnel breakdown, this owner would have killed PPC, kept a sales problem, and never known. The CPA number is the headline; the funnel underneath it is the story.
Putting it together: a CPA comparison table
Here's the landscape at a glance. Treat the ranges as directional and benchmark against your own data.
| Channel | Typical CPA range | Typical close rate | Speed to first job | Scalable on demand? |
|---|---|---|---|---|
| Referrals / past customers | $50-$250 | 50-70% | Fast | No (capacity-bound) |
| Yard signs / wraps | $100-$400 | n/a (assist) | Slow | No |
| Google LSA | $250-$700 | 15-30% | Fast | Limited by demand |
| SEO / content (mature) | $80-$400 | 20-35% | Very slow | Yes, slowly |
| Door knocking / canvassing | $300-$900 | 10-25% | Fast | Yes |
| Storm canvassing (active event) | $200-$600 | 15-30% | Very fast | Event-dependent |
| Google Search PPC | $400-$1,200 | 12-25% | Fast | Yes |
| Direct mail / EDDM | $600-$1,500 | 8-20% | Slow | Yes |
| Paid social (Meta) | $500-$1,400 | 3-8% | Fast | Yes |
| Lead aggregators (shared) | $800-$2,500+ | 3-10% | Instant | Yes |
Notice the pattern: the channels you own (referrals, SEO, brand) sit at the bottom of the cost range, and the channels you rent (aggregators, cold social) sit at the top. The strategic goal over time is to shift your job mix from rented to owned, which structurally lowers your blended CPA year over year.
How to calculate your own true CPA (step by step)
Benchmarks orient you. Your own numbers run your business. Here's how to get them.
Step 1: Set up channel attribution before you spend another dollar
You cannot compute CPA by channel if every lead lands in the same bucket. Minimum setup:
- A unique tracked phone number per channel. Call tracking gives each channel (LSA, PPC, mailer, yard sign) its own number so you know what's ringing the phone.
- A required "how did you hear about us?" field in your CRM, filled on every lead, no exceptions. Make it a mandatory dropdown.
- UTM tags on every digital link so web form fills are attributed automatically.
- A canvassing app or manual log that ties each door-knock lead to the rep and territory.
If an owner tells me they "can't tell which channel drives jobs," this is always the missing piece. Two weeks of disciplined source-tagging changes everything.
Step 2: Pull true spend per channel for the period
Pick a window (a quarter is good; a month is too noisy). For each channel, total up the full-cost formula: media + production + sales labor + tools + allocated overhead. Be honest about sales labor, estimate hours your team spent per channel and multiply by loaded hourly cost.
Step 3: Count signed jobs per channel
From your CRM, count contracts signed in the window, attributed to the source. Use signed, not closed-out (revenue recognition lags and will distort a recent quarter).
Step 4: Compute and compare
Channel CPA = Total true spend / Signed jobs
Do it for every channel. Then layer in three more columns that change the picture:
- Average job size by channel. Referral and SEO jobs often run bigger and at better margin than aggregator jobs.
- Gross profit per job by channel. A channel with a higher CPA but fatter margins can still win.
- CPA as a percent of gross profit. This is your real grade against the guardrail from earlier.
Step 5: Build a per-channel scorecard
A simple monthly scorecard per channel:
| Metric | Value |
|---|---|
| Leads | |
| Appointments set | |
| Lead-to-appointment % | |
| Jobs signed | |
| Appointment-to-sign % | |
| True spend | |
| CPA | |
| Avg job size | |
| Gross profit per job | |
| CPA as % of gross profit |
When you see where in the funnel a channel loses, you can fix it instead of killing it. A channel with great CPL but terrible appointment-to-sign doesn't have a marketing problem, it has a sales problem, and switching channels won't fix it.
Step 6: Reallocate quarterly, not weekly
Marketing data is noisy week to week. Hold your changes to a quarterly cadence: scale the channels beating your CPA guardrail, fix or cut the ones failing it, and protect the long-payoff channels (SEO, referrals, brand) from being judged on a one-month window.
Blended CPA, lifetime value, and why single-channel CPA lies a little
Per-channel CPA is the right tool for deciding where the next dollar goes. But two adjustments keep it from misleading you.
Blended CPA is total acquisition spend across all channels divided by total signed jobs. It's the number that tells you whether your overall marketing engine is healthy. Track it monthly and quarterly. If your blended CPA is creeping up over a year, you're becoming more dependent on rented demand; if it's falling, your owned channels (referrals, SEO, brand) are doing their job. A maturing company should see blended CPA trend down even as it spends more in absolute dollars, because each new past customer and each new review compounds.
Lifetime value (LTV) changes which CPA is acceptable. In roofing, LTV isn't usually repeat purchases from the same homeowner (people don't reroof every year), it's the referral chain and review value that one good job produces. A customer who leaves a five-star review and refers two neighbors over three years is worth far more than the first job's gross profit. This is why a referral-seeding channel can justify a higher upfront CPA, and why aggregator leads (which rarely refer and often shop on price) are worse than their already-high CPA suggests. A practical way to handle this: tag which channels historically produce customers who refer and review, and give those channels a credit when you grade them. You don't need a perfect model, just don't judge a referral-generating channel purely on first-job math while giving an aggregator a pass for the downstream value it never creates.
A simple LTV-aware framing: if a referral customer is worth, conservatively, 1.5 jobs over their lifetime once you count the referrals they send, then your effective referral CPA is even lower than the headline, and your effective aggregator CPA, which produces almost no downstream referrals, is closer to its raw number. Channels don't just cost differently; they compound differently.
Matching channels to your company's stage
The right channel mix isn't universal, it depends on where your company is. Spending like a $10M shop when you're a $1.5M shop is how owners go broke buying clicks they can't yet convert.
Stage 1: Under ~$2M, building a foundation
At this stage your blended CPA is fragile and your margin for error is thin. Priorities, in order:
- Referral and review systems first. They're the cheapest jobs you'll ever get and they build the reputation everything else depends on. Free to near-free.
- Google Business Profile and basic local SEO. Claim it, optimize it, get reviews flowing. Slow but it lowers every future CPA.
- One paid channel you can manage well, usually LSA if you can get verified, because it has the best CPA-to-effort ratio for small shops.
- Door knocking if you're in a storm or older-housing market, with tight targeting so a small team isn't wasting limited labor.
Avoid aggregators and heavy PPC here; you don't yet have the close rate, speed-to-lead, or review base to make four-figure-CPA channels pay.
Stage 2: ~$2M-$8M, scaling controlled
Now you can afford to diversify and absorb some higher-CPA channels for volume. Add:
- Google PPC with proper tracking and a managed account, scaled only as fast as your sales team can convert.
- Targeted direct mail to roof-age and storm lists, run as a sustained program, not one-off drops.
- Paid social retargeting and storm-timed campaigns, with a hard speed-to-lead process.
- A dedicated canvassing team with route targeting and funnel tracking per rep.
The job at this stage is instrumentation: you have enough volume that real per-channel CPA becomes statistically meaningful, so build the attribution and scorecards now and let data drive reallocation.
Stage 3: $8M+, optimizing a portfolio
Large shops run a portfolio and manage blended CPA like a CFO. The work shifts to squeezing each channel (better landing pages, sharper negative keywords, tighter canvassing routes, better lists), defending owned channels, and using aggregators only as a tactical overflow valve for slow weeks, never as a foundation. At this scale the targeting data on your outbound channels is the biggest remaining lever, because the labor and postage you're spending are large enough that a few points of hit-rate improvement move real money.
Common mistakes that wreck CPA math
The practitioners who get this wrong almost always make one of these errors:
- Optimizing for CPL instead of CPA. Chasing cheap leads into low-close channels. The cheapest lead is often the most expensive job.
- Ignoring sales labor. Door knocking and paid social look free or cheap until you count the hours spent chasing dead leads. Labor is frequently the largest hidden cost.
- Killing slow channels too early. SEO, mail, and referrals compound. Judging them on 30 days guarantees you abandon your future lowest-CPA channels.
- No attribution. Without source tagging, every CPA number is a guess, and you'll defund winners and feed losers by gut feel.
- Forgetting lifetime value. A referral customer who sends three neighbors is worth far more than the first job's CPA suggests. Channels that seed referrals and reviews deserve credit for the jobs they create downstream.
- Treating CPA as fixed. Your close rate, speed-to-lead, and review base all move CPA. The same channel can have wildly different CPA at two companies because of execution, not the channel.
- Counting revenue, not profit. A channel that brings $14,000 jobs at 15% margin can lose to one bringing $9,000 jobs at 40% margin. Always grade against gross profit.
The targeting lever: lowering CPA by knocking, mailing, and bidding the right roofs
Step back and look at the table again. Door knocking, direct mail, and storm canvassing all share the same dominant cost driver: how many of the roofs you touch are actually worth touching. If half your mailers and knocks hit roofs that are 6 years old with no storm exposure, you're paying full freight to reach homeowners who have no reason to talk to you. Cut that waste and CPA drops across every outbound channel at once.
That's the case for targeting roofs by their actual condition instead of by geography. Two signals matter most:
- Roof age. A roof aging out of its service life is a homeowner with a real, near-term reason to engage. Asphalt shingles typically run a 15-25 year service window depending on type and climate, so the homes in that band are your highest-intent outbound targets even with no storm.
- Storm exposure. A roof that actually sat under hail energy or damaging wind is far more likely to have documentable damage worth inspecting than one a few streets over that the storm missed.
This is where RoofPredict fits into the CPA conversation. It scores roofs house-by-house, estimating a roof-age range per address from aerial imagery and modeling storm physics per individual roof, then ranks doors, routes, and mailing lists so your crews and canvassers spend their hours on the roofs most likely to be due. You can also enrich your own CRM or mailing list with those roof-age and storm signals, so the homes you already have data on get prioritized by condition rather than worked at random.
The honest limits matter, and pretending otherwise would be hype. Roof age comes back as a range, not a birth certificate, aerial imagery estimates when a roof was last replaced within a window, it doesn't read a date off the shingles. Storm modeling gives you odds that a given roof took damage, not proof, a roof that scores high still has to be physically inspected and documented before anyone knows what's really up there. What targeting changes is the hit rate: instead of knocking 100 random doors to find a handful of real opportunities, you knock 100 doors weighted toward roofs that are aging out or storm-worn, and a meaningfully higher share of those conversations turn into inspections and signed jobs. That higher hit rate is exactly what drops CPA on every outbound channel, because CPA in canvassing and mail is mostly a function of how much labor and postage you burn on roofs that were never going to convert.
It doesn't replace your sales process or your judgment, and it won't make a weak pitch close. It makes your existing outbound spend land on better roofs. For a storm-restoration shop, the same logic applies to mobilization: model which streets in an impact zone actually took damage worth inspecting before you move the whole team, and you avoid the most expensive storm-chasing failure mode, deploying crews across a broad "affected area" where most of the roofs are fine.
A 90-day plan to cut your blended CPA
If you want to act on all of this, here's a sequence that works.
Days 1-15: Instrument everything. Stand up call tracking with a number per channel. Make "how did you hear about us?" a required CRM field. Tag your digital links with UTMs. Start logging canvassing leads by rep and territory. You can't improve what you can't measure.
Days 16-30: Build the baseline. Pull last quarter's true spend per channel using the full-cost formula, count signed jobs per channel, and compute CPA, average job size, and CPA as a percent of gross profit. Rank your channels honestly. Most owners are shocked by what they find, usually that a channel they love is a money pit and one they ignore is carrying the company.
Days 31-60: Fix the funnel before changing channels. For each channel, find where in the funnel it leaks (lead-to-appointment or appointment-to-sign). Fix speed-to-lead first, calling web and aggregator leads within five minutes is the single highest-ROI change most shops can make. Tighten PPC negatives and landing pages. Improve the canvassing pitch and compliance training.
Days 61-90: Reallocate and target. Shift budget toward channels beating your CPA guardrail. Cut or shrink the ones that can't be fixed. Start building your owned channels, referrals, reviews, SEO, so next year's blended CPA is structurally lower. And introduce roof-condition targeting on your outbound channels so the doors you knock and the homes you mail are weighted toward roofs that are actually due.
Do this and you'll stop arguing about which channel is "best" in the abstract. You'll know, for your market, your ticket, and your sales process, exactly what a signed roof costs through each door, and you'll put your money where the math says it works.
If the biggest lever in your numbers turns out to be the roofs you're targeting, not the channel you're using, that's the place to start. Knocking, mailing, and bidding on the roofs most likely to be due, and skipping the ones that aren't, is the closest thing to a free CPA reduction in roofing. See how roof-age and storm targeting could sharpen your routes and lists at RoofPredict.
FAQ
What is a good cost per acquisition for a roofing company?
There's no single good number, because CPA only means something relative to your gross profit per job. A useful rule is to keep total acquisition cost under roughly 20-30% of gross profit per job. On an $11,000 job with $3,800 gross profit, that's a CPA ceiling around $760-$1,140. Channels that beat that are worth scaling; channels well above it are usually leaking money unless they seed referrals and reviews that lower future CPA.
Which roofing marketing channel has the lowest cost per acquisition?
Referrals and past customers almost always have the lowest CPA, typically $50-$250, because trust is pre-loaded and close rates run 50-70%. The catch is that referrals are capacity-limited; you can't scale them on demand. They lower your blended CPA but can't be your only engine while you're growing, so most companies pair a strong referral system with one or two paid channels.
Why are my cheap leads costing me more than my expensive ones?
Because cost per lead and cost per acquisition are different numbers. A channel with $40 leads that close at 4% has a $1,000 CPA, while a channel with $160 leads that close at 35% has a $457 CPA. Cheap leads are usually low-intent, so you burn sales labor chasing dozens of dead leads to find one job. Always measure to signed jobs, not lead volume, and include the sales labor spent on the leads that didn't close.
How do I track cost per acquisition by channel?
Set up a unique tracked phone number per channel, make a 'how did you hear about us?' field required on every CRM lead, tag digital links with UTMs, and log canvassing leads by rep and territory. Then pull true spend per channel (media plus production, sales labor, tools, and overhead), count signed jobs per channel, and divide. Add columns for average job size and gross profit per job so you grade channels on profit rather than lead count.
Are roofing lead aggregators worth the cost?
Sometimes for volume now, rarely as a foundation. Shared leads cost $30-$150+ each and close at only 3-10% because you're racing several other contractors, which pushes CPA to $800-$2,500 or more. They also tend to shop hardest on price, eroding margin on the jobs you do win. Use them as a supplement with fast speed-to-lead and aggressive disputing of bad leads, but build owned channels so you're not permanently renting demand.
How can I lower my cost per acquisition on door knocking and direct mail?
The dominant cost driver in both is how many of the roofs you touch are actually worth touching. Knocking random streets or blanketing a carrier route wastes most of your labor and postage on roofs that aren't due. Targeting roofs by age (homes aging out of a 15-25 year service window) and by storm exposure raises your contact-to-appointment rate, which is the single biggest CPA lever in outbound. Higher hit rate means less wasted labor and postage per signed job.
How does RoofPredict help reduce cost per acquisition?
RoofPredict scores roofs house-by-house, estimating a roof-age range per address from aerial imagery and modeling storm physics per roof, then ranks doors, routes, and mailing lists toward the roofs most likely to be due. It can also enrich your existing CRM or list with those signals. Because outbound CPA is mostly a function of labor and postage spent on roofs that won't convert, weighting your outreach toward aging or storm-worn roofs raises your hit rate and lowers CPA. The limits are honest: age is a range, not a date, and storm modeling gives odds, not proof, so every roof still needs a physical inspection.
How long before SEO produces a competitive cost per acquisition?
Usually 6-12 months. SEO has a brutal early cost curve because you pay for content and optimization before jobs flow, so month-one CPA looks terrible. But once you rank, organic leads cost nothing per click, so your fixed investment spreads across more jobs and CPA falls, often to $80-$400 at maturity. The mistake is judging SEO on a 30-day window and killing it right before it pays off. Track cumulative CPA, not monthly.
Should storm restoration companies expect a lower CPA than retail roofers?
Often yes, during an active event, because demand is concentrated, urgent, and pre-qualified by the weather, which can push canvassing CPA to $200-$600. But it depends entirely on chasing the right storms and the right streets. Hail swaths aren't uniform, so mobilizing across a broad affected area wastes most of the labor on roofs that won't qualify. Verifying real damage zones before deploying crews is what keeps storm CPA low instead of letting it balloon.
What's the legal way to pitch insurance work when canvassing storm damage?
Offer to inspect the roof, document any damage with photos, and prepare an accurate repair estimate, then hand it to the homeowner so they file with their carrier. Do not promise the insurer will pay, promise the deductible will be waived or absorbed, advertise a 'free roof,' tell the homeowner what their policy covers, or offer to handle or negotiate the claim. Negotiating a homeowner's claim for a fee is unlicensed public adjusting in most states. Stay strictly on documenting damage and writing an accurate estimate; the homeowner files and the carrier decides coverage.
The Roofline by RoofPredict
Stay Ahead of Roofing Market Changes
Join The Roofline by RoofPredict for weekly roofing intelligence: material price signals, storm demand, insurance and regulatory updates, sales tactics, and local contractor opportunities.
Sources
- National Roofing Contractors Association (NRCA) — nrca.net
- Insurance Institute for Business & Home Safety (IBHS) — ibhs.org
- NOAA Storm Prediction Center — spc.noaa.gov
- NOAA National Weather Service — weather.gov
- NOAA National Centers for Environmental Information (Storm Events Database) — ncdc.noaa.gov
- Federal Trade Commission - Advertising and Marketing Guidance — ftc.gov
- Texas Department of Insurance - Public Insurance Adjusters — tdi.texas.gov
- U.S. Bureau of Labor Statistics - Roofers Occupational Outlook — bls.gov
- U.S. Census Bureau - American Housing Survey — census.gov
- International Code Council - International Residential Code — iccsafe.org
- OSHA - Fall Protection in Construction — osha.gov
- Small Business Administration - Marketing and Sales — sba.gov
- Asphalt Roofing Manufacturers Association (ARMA) — asphaltroofing.org
- RoofPredict — roofpredict.com
Related Articles
How to Fill a New Roofing Crew's Schedule From Scratch
You hired the crew, bought the trucks, and now Monday is empty. Here is the exact playbook owners use to go from zero booked jobs to a full board.
Reduce Roofing Canvasser Turnover by Improving Door Quality
Most roofing canvasser turnover is not a hiring problem or a coaching problem. It is a door-quality problem. Fix the list and the people stay.
How to Compete Against National Roofing Franchises Locally (Without Burning Cash)
National franchises win on ad budget and brand recognition. You win on speed, local trust, route density, and knowing exactly which roofs are due. Here is the operational playbook.