Skip to main content

Roofing PPC Cost Per Acquisition Too High? A Field Guide to Bringing It Down

Emily Crawford, Home Maintenance Editor··33 min readRoofing Lead Generation
On this page

You ran the numbers at the end of the quarter and the answer was ugly. Spend on Google Ads divided by signed contracts, and the figure came back at something like $1,400 to $2,200 per job. Maybe higher in a competitive metro. You stared at it, then went looking for the reason the platform was failing you, and you typed some version of "roofing ppc cost per acquisition too high" into a search bar, which is probably how you got here.

Here is the first thing worth saying plainly: most of the time, when a roofer's PPC cost per acquisition is too high, the platform is doing exactly what it is supposed to do. The leak is somewhere in the chain between a click and a signed contract, and that chain has at least seven links. Ad spend is only the first one. By the time you trace it all the way down, the real culprit is usually a 28% lead-to-appointment rate, an estimator who lets quotes sit for nine days, or a campaign that is quietly paying for the word "roof" attached to repair tire questions and roofing-tar recipes.

What follows is the full diagnostic. The math first, so you can put a real number on each link in your own chain. Then the eight specific places that money leaks out of a roofing PPC account, in rough order of how often they are the actual problem. Then a 30-day playbook to bring the number down, and an honest look at why even a well-run paid account has a CAC floor you cannot drill below, and what to do about the demand you can own instead of rent.

None of this requires you to be a marketer. It requires you to know your own close rate and your own gross margin, which you already do.

First, define the number you are actually mad about

CAC, CPL, CPA, ROAS. The acronyms get thrown around interchangeably and that is part of why the conversation goes nowhere. Pin them down for your own shop before you change a single setting.

  • CPC (cost per click) is what you pay for one click. In residential roofing this commonly runs from a few dollars in soft markets to north of $25 to $45 per click for high-intent terms like "roof replacement near me" in saturated metros after a storm. It is the rawest input and the least useful number on its own.
  • CPL (cost per lead) is ad spend divided by the number of leads (form fills, calls, chats). This is where most roofers stop looking, and it is the wrong place to stop.
  • CPA / CAC (cost per acquisition / customer acquisition cost) is ad spend divided by signed contracts, not leads. This is the number that actually decides whether the channel makes you money.
  • ROAS (return on ad spend) is revenue generated divided by ad spend. A roofer with a $14,000 average job and a $1,800 CAC is running a roughly 7.7:1 gross ROAS, which sounds great until you subtract the cost of the roof.

The single most common mistake is celebrating a low CPL while bleeding on CPA. A $60 lead feels cheap. If only one in eight of those leads becomes a customer, your CAC is $480 in raw ad cost before a single truck moves, and that is the optimistic version where every lead is real.

The CAC chain, written out

Write your own version of this on a whiteboard. Every roofing PPC CAC is the product of these conversion steps, and the platform only controls the first one.

Ad spend
  -> Clicks            (controlled by: targeting, bid, ad copy)
  -> Leads             (controlled by: landing page, offer, call answer rate)
  -> Set appointments  (controlled by: speed-to-lead, intake, qualification)
  -> Ran inspections   (controlled by: scheduling, no-show rate, confirmation)
  -> Quotes delivered  (controlled by: estimator throughput, follow-up)
  -> Signed contracts  (controlled by: pricing, sales process, follow-up cadence)

Here is a worked example so the leverage is obvious. Say you spend $10,000 in a month.

Stage Rate Count Effective cost each
Clicks at $18 CPC - 556 $18
Clicks to leads 9% 50 $200 / lead
Leads to set appointments 55% 27.5 $364
Appointments to ran inspections 80% 22 $455
Inspections to quotes 90% 19.8 $505
Quotes to signed 28% 5.5 $1,818 / job

That $1,818 is your CAC. Now watch what happens when you fix the two worst links instead of the platform. Push the landing page conversion from 9% to 13% (entirely doable with a faster page and a real offer) and lift the close rate from 28% to 38% (a follow-up cadence problem, not a price problem):

Stage Rate Count Effective cost each
Clicks at $18 CPC - 556 $18
Clicks to leads 13% 72 $139 / lead
Leads to set appointments 55% 39.6 $253
Appointments to ran inspections 80% 31.7 $316
Inspections to quotes 90% 28.5 $351
Quotes to signed 38% 10.8 $924 / job

Same $10,000. Same CPC. You did nothing to the Google Ads account. CAC dropped from $1,818 to $924 because two downstream rates moved. This is the entire point. Your cost per acquisition is a product of six multiplied conversion rates, and you have been staring at the first one.

Keep that table handy. Every fix below maps to one of those rows.

The break-even math: is your CAC actually too high, or does it just feel high?

Before you tear the account apart, find out whether the number is genuinely unprofitable or just uncomfortable. These are different problems.

Your maximum sustainable CAC is a function of gross margin and how much of that margin you are willing to spend to grow.

Allowable CAC = Average job gross profit  x  (% of margin you'll reinvest in acquisition)

Work an example. A $14,000 retail re-roof at a 35% gross margin throws off $4,900 in gross profit. If you are willing to spend a third of first-job gross profit to acquire that customer, your allowable CAC is about $1,633. At a $1,818 CAC you are slightly underwater on the first job. At $924 you are comfortably profitable and have room to bid more aggressively to take volume.

Two adjustments change this picture, and roofers routinely forget both:

  1. Lifetime value and referrals. A roofing customer is not always a one-job customer. Gutters, repairs, a second roof on a rental, and especially referrals extend the value. If one in four happy customers refers one paid job, your effective allowable CAC rises. Be honest and conservative here, do not invent a referral rate to justify overspending, but do not ignore it either.
  2. Mix of job types. A $400 repair and a $30,000 full restoration cannot share a CAC target. If your PPC pulls a lot of small repairs, your blended CAC looks fine while your replacement CAC is quietly terrible, or the reverse. Segment it.

If, after this exercise, your CAC sits under your allowable CAC and you are still profitable, you may not have a problem at all, you may have an impatience problem. If it sits above, keep reading, because one or more of the following eight leaks is open.

A caution on attribution before you cut anything

Before you act on any CAC number, sanity-check how it was measured, because bad attribution makes good channels look broken and broken channels look fine. Three traps catch roofers constantly:

  • Calls counted as nothing. If a homeowner clicks an ad, does not fill the form, but calls three days later from the number they saw, many setups credit that job to "direct" or to no channel at all. The ad gets blamed for a high CAC it did not earn. Call tracking with a reasonable attribution window fixes this.
  • Long sales cycles cut across reporting months. Roofing jobs, especially replacements, often close weeks after the click. If you divide this month's spend by this month's signed jobs, you are comparing spend to contracts that came from last month's clicks. Look at cohorts: jobs signed this month, traced back to the month their click happened.
  • Self-reported source is unreliable. "How did you hear about us?" at the kitchen table undercounts paid search badly, because homeowners remember the brand they eventually called, not the ad that first put you in their consideration set. Use it as a soft signal, never as your CAC source of truth.

Get the measurement right first. More than one roofer has killed a profitable campaign because the math was assembled wrong, then watched the phone go quiet and wondered why.

The eight places roofing PPC money actually leaks

In rough order of how often each one turns out to be the real cause.

Leak 1: You are paying for the wrong searches (match types and negatives)

This is the number one cause of a bloated roofing CAC, and it is almost always invisible until you look at the search terms report. Broad match and phrase match will cheerfully spend your budget on:

  • "roofing jobs" (people looking for employment, not a roofer)
  • "roof rack," "car roof," "roof of mouth"
  • "how to repair a roof leak yourself" (DIY, not buyers)
  • "roofing companies hiring near me"
  • "roofing materials wholesale" (other contractors)
  • "flat roof RV" and other adjacent nonsense

Every one of those clicks costs you real money and converts at roughly zero. Pull the search terms report for the last 90 days right now. Sort by cost. You will likely find that 15% to 30% of spend went to terms you would never have chosen.

The fix is a disciplined negative keyword list. Start with a standing list every roofer should run: jobs, hiring, career, salary, DIY, how to, yourself, free, cheap, wholesale, supplier, supply, materials, rack, car, RV, mouth, course, training, license, certification, Minecraft, Lego. Then add to it weekly from the search terms report. This is not a one-time task. New junk terms surface constantly, especially on broad match.

Google's own documentation on keyword match types and negative keywords (linked in sources) is worth reading once so you understand exactly what each match type opens you up to. The short version: tightening match types and running a real negative list is the single fastest CAC reduction available to most roofers, and it costs nothing.

Leak 2: Your landing page is doing the platform's job badly

A huge share of roofing ad spend lands on a homepage. A homepage is built to explain a company. A landing page is built to convert one specific intent. They are not the same artifact and using one for the other quietly doubles your CPL.

The leaks on a weak roofing landing page are predictable:

  • It is slow. Mobile page speed matters more in roofing than almost any vertical because most clicks come from a phone, often a homeowner standing in their yard looking at a damaged roof. Every second of load time past about three seconds sheds conversions. Run your page through a real speed test and fix the heavy images first.
  • The phone number is not tap-to-call and not above the fold. Roofing is a call-heavy category. A large fraction of your highest-intent leads want to call, not fill a form. If they have to scroll to find a number, you lost some of them.
  • The form is too long. Asking for street address, roof type, insurance status, and a paragraph about the problem on the first screen kills conversion. Name, phone, ZIP. Qualify on the call.
  • No specific, believable offer. "Free estimate" is wallpaper, every competitor says it. "We'll inspect your roof and send you photos of exactly what we find, no obligation" is a reason to act.
  • No trust signals where the eye lands. License number, real local photos (not stock), genuine reviews, the service area named explicitly. A homeowner about to spend five figures is scanning for reasons to trust you in the first five seconds.

Moving landing page conversion from 9% to 13%, as in the worked example, is the highest-leverage non-sales fix in the chain. It is also the one most roofers never touch because the ads feel like the marketer's job and the page feels like the website guy's job, so it falls between two chairs.

Leak 3: Speed-to-lead is killing your set rate

The single most expensive habit in roofing sales is letting a fresh PPC lead sit. You paid $200 for that lead. The homeowner filled out a form at 7:14pm because their roof is leaking and they are anxious. If you call them back at 10am the next day, they have already talked to two other roofers, and your $200 lead is now worth a fraction of that.

The research on lead response time is brutal and consistent across industries: the odds of reaching and qualifying a lead drop sharply after the first few minutes and fall off a cliff after the first hour. For a high-emotion, high-ticket purchase like a roof, this is even more pronounced.

Practical fixes that move the appointment-set rate:

  • An auto-response text within seconds. "Thanks for reaching out to [Company], this is a real person, what's the best number and a good time for a quick call?" An immediate text holds the lead's attention even when a human cannot pick up instantly.
  • A genuine speed-to-lead target of under five minutes during business hours. Measure it. Most roofers think they are fast and are not.
  • After-hours coverage. Storm leads and leaking-roof panic do not respect business hours. An answering service or an on-call rep for evenings pays for itself when each lead costs $200.

This leak does not show up in the ad account at all, which is why it survives for years. It shows up as a low lead-to-appointment rate, the row in the table that turned 50 leads into 27.5 appointments.

Leak 4: No-shows on inspections

Every inspection that gets set but not run is a paid lead you threw away after paying for it twice (the click and the rep's drive time). No-show rates of 20% to 30% are common and almost entirely fixable with a confirmation system:

  • A reminder text the evening before and the morning of.
  • A short confirmation call that re-sells the value of the inspection rather than only "confirming your appointment."
  • A clear, named time window the homeowner agreed to, not a vague "sometime Tuesday."

Dropping no-shows from 25% to 12% lifts the whole funnel and your CAC falls in lockstep. This is operations, not marketing, but it is paid-for operations.

Leak 5: Quotes that die of neglect

You ran the inspection, you built the estimate, and then the quote sat. The estimator was busy, the homeowner did not call back, and three weeks later it is a stale number nobody is chasing. Quote-to-close is the single biggest swing in the entire CAC chain, and it is almost always a follow-up problem disguised as a price problem.

What actually moves the close rate on PPC-sourced quotes:

  • A defined follow-up cadence. A real schedule: same-day recap, day-2 call, day-4 text, day-7 call, then a longer-interval nurture. Most roofing quotes are won on the third to fifth contact, not the first. The roofer who follows up wins jobs from the roofer who quoted lower and went quiet.
  • Deliver the quote in person or on a call, not by raw email. A PDF emailed cold closes far worse than a number walked through with the homeowner.
  • Photos and findings attached to the number. A homeowner approves a price they understand. Give them the evidence of what you found so the quote is a story, not a figure.

Going from a 28% to 38% close rate, as in the example, nearly halved the CAC by itself. No PPC change competes with that.

A concrete way to install the cadence: build it into whatever CRM or spreadsheet your reps already live in, with a task that fires on each touch day and will not let a quote go dark. The mechanism matters more than the tool. A quote without a next scheduled action is a quote that dies. Track, by rep, how many delivered quotes still have a live next step versus how many went quiet, and you will usually find the difference between your best and worst closer is follow-up discipline, not charisma or price. That is a coaching problem with a direct line to CAC, because every recovered close spreads your fixed ad spend across one more job.

A second, quieter leak inside the close: pricing reflexively low to win the job. Cutting price to close does lower your CAC arithmetically, more signed jobs per dollar of spend, but it also strips the gross profit that determined your allowable CAC in the first place. A roofer who discounts to a 20% margin to hit a CAC target has not solved anything; they have moved the loss from the marketing line to the production line. Win on follow-up, proof, and trust, not on being the cheapest number, or your CAC math is lying to you.

Leak 6: Geography and schedule waste

Your campaign is running 24/7 across a radius that includes neighborhoods you do not want to work, at hours when nobody answers the phone. Two specific bleeds:

  • Radius and location bleed. If you are bidding on a 40-mile radius but your crews and margins only work well within 20 miles, you are paying premium CPCs for jobs that cost you money in windshield time. Tighten the geo to where you actually make money. Use location bid adjustments to favor your best ZIPs.
  • Dayparting. If nobody answers calls after 6pm and on Sundays, and you have no auto-response, ads running then generate leads that go cold before you touch them. Either add coverage or reduce bids in those windows. Do not turn ads fully off without data, but stop paying full freight for clicks you cannot service.

Leak 7: Mobile, call tracking, and the blind spots

You cannot fix what you cannot see. Two instrumentation gaps quietly inflate CAC:

  • No call tracking. In roofing, calls often outnumber form fills, and if you are not tracking which keywords and ads drive calls, you are optimizing on half your data. You will cut a keyword that drives great phone leads because the form-fill report made it look dead. Use call tracking and feed call conversions back into the platform.
  • Desktop-built pages serving mobile traffic. Most of your clicks are mobile. If the page was designed and tested on a desktop, the mobile experience, where the money actually is, may be broken in ways you never see.

Leak 8: Local Services Ads ignored or mismanaged

Google's Local Services Ads (the "Google Guaranteed" pay-per-lead units at the very top) are a different animal from search PPC and many roofers either skip them or run them on autopilot. They can carry a meaningfully lower CAC than search because you pay per lead rather than per click and the leads are higher-intent, but they require you to:

  • Complete the screening and licensing verification to earn the badge.
  • Dispute junk leads. LSA lets you dispute leads that were spam, out of area, or for a service you do not offer. Roofers who never dispute overpay. Roofers who dispute diligently lower their effective CPL substantially.
  • Maintain a strong review profile, which directly affects ranking and lead flow.

LSA is not a silver bullet and lead quality varies, but for a roofer with a high CAC on search, it is often the single best place to shift budget. Review Google's LSA documentation (in sources) and treat dispute management as a weekly habit, not an afterthought.

Quality Score: the hidden multiplier on every click you pay for

There is a structural reason two roofers in the same metro can pay wildly different prices for the same keyword, and it is Quality Score. Google scores each keyword roughly on three things: expected click-through rate, ad relevance, and landing page experience. A higher Quality Score means you pay less per click for the same ad position, and a lower one means you pay a premium for every single click for the life of the account. This is not a minor tuning knob. The difference between a strong and a weak Quality Score can swing your effective CPC by a large multiple, which flows straight through to CAC.

The practical levers are the same fixes already listed, viewed from a different angle:

  • Ad relevance. The keyword should appear in the ad and the ad should match the search intent. A single ad group stuffed with 40 loosely related keywords drags relevance down. Tight, themed ad groups, ten or fewer closely related keywords each, score better. A roofer who runs one giant "roofing" ad group is paying the lazy tax on every click.
  • Expected click-through rate. Specific, local, benefit-led ad copy earns more clicks than generic copy, and higher CTR feeds back into a higher Quality Score, which lowers CPC, which lowers CAC. Name the city. Name the specific service. Give a reason to click that is not "free estimate."
  • Landing page experience. This closes the loop with Leak 2. Google rewards fast, relevant, mobile-friendly pages with lower CPCs. The same landing page work that lifts your conversion rate also lowers what you pay per click. You get paid twice for fixing the page.

The takeaway: a clean account structure is not cosmetic. Sloppy structure quietly raises the price of every click before any homeowner ever sees your ad. If your CPCs feel high relative to competitors, check your Quality Scores before you blame the auction.

Account structure that keeps CAC honest

Most high-CAC roofing accounts share a structural pattern: one campaign, a couple of bloated ad groups, mixed match types, and replacement work pooled with repairs and gutters. That structure makes the account impossible to optimize because everything is averaged together and the losers hide behind the winners.

A structure that keeps cost visible and controllable looks more like this:

  • Separate campaigns by job economics. Roof replacement, roof repair, and storm/restoration each have different job values, different close rates, and therefore different allowable CACs. Pooling them into one budget means your profitable replacement spend subsidizes unprofitable repair clicks, or vice versa, and you cannot see it. Split them so each can be judged and budgeted on its own math.
  • Tight, themed ad groups. Group keywords that share intent so the ad can speak directly to that intent. "Roof replacement" terms in one group, "roof leak repair" in another, "metal roof" in another if you sell it. This lifts relevance and Quality Score and makes the search terms report readable.
  • One landing page per intent. The replacement campaign points to a replacement page; the repair campaign points to a repair page. Sending repair searchers to a replacement page tanks conversion and Quality Score together.
  • Geo and budget controls at the campaign level. Because campaigns now map to job types, you can shift budget toward the work you actually want more of this month, without the blunt instrument of one shared budget.

None of this is glamorous. All of it directly affects what you pay per signed job, because a legible account is one you can actually steer, and an illegible one quietly drifts toward higher CAC every month.

What the numbers look like by job type

Blended CAC hides more than it reveals. Here is an illustrative breakdown of how the same account can carry three very different cost structures underneath one average. These are not benchmarks to copy, your market and margins differ, they are a model for how to think about segmenting your own.

Job type Typical CPC posture Lead intent Close rate Allowable CAC driver
Full replacement Highest (most contested) High-ticket, deliberate Lower, longer cycle Large gross profit supports higher CAC
Repair Moderate Often urgent, smaller ticket Higher, faster Thin profit demands a low CAC
Storm / restoration Spikes hard post-event Urgent, comparison-shopping Variable Time-sensitive, auction-inflated

The lesson is that a single CAC target across all three is a mistake. A repair lead that costs the same as a replacement lead is often a losing trade because the job cannot carry it, while a replacement lead at that cost is fine. Set allowable CAC by job type, route campaigns and budgets accordingly, and your blended number improves because you stopped overpaying for the work that cannot afford it.

The 30-day CAC reduction playbook

Do not try to fix everything at once. Sequence it so the cheapest, fastest wins come first and you can see CAC move before you spend on the harder stuff.

Week 1: Stop the bleeding (zero ad-account spend)

  1. Pull the 90-day search terms report. Build a negative keyword list from it. Add the standing junk list above. This alone often recovers 15% to 25% of wasted spend within days.
  2. Tighten match types. Move the worst broad-match keywords to phrase or exact. Keep one small, well-fenced broad-match campaign for discovery if you want, with aggressive negatives.
  3. Audit geo and schedule. Cut the radius to where you make money. Set bid adjustments to favor your best ZIPs.
  4. Confirm conversion tracking and call tracking are live and accurate. If they are not, nothing else you measure is trustworthy. Fix this first or you are flying blind.

Week 2: Fix the landing page and the offer

  1. Build or fix a dedicated landing page for your top campaign. Tap-to-call number above the fold. Three-field form. One specific, believable offer. Real local photos. License number and reviews visible immediately.
  2. Run the page through a mobile speed test and fix the slowest elements (usually oversized images).
  3. Rewrite ad copy to match the landing page and pre-qualify. Mention your actual service area and the specific service. Vague ads draw vague clicks.

Week 3: Fix speed-to-lead and intake

  1. Implement an instant auto-response text to every new lead.
  2. Set a sub-five-minute callback target during business hours and assign ownership. Measure actual response time for a week and post it where the team sees it.
  3. Add after-hours coverage for the channels that produce leads outside business hours.
  4. Build a confirmation system for inspections: evening-before and morning-of reminders plus a value-reinforcing confirmation call.

Week 4: Fix the close

  1. Install a written follow-up cadence for every delivered quote and hold reps to it. Same-day, day-2, day-4, day-7, then longer nurture.
  2. Attach photos and findings to every quote so the price is backed by evidence.
  3. Review the LSA opportunity. If you are not running Local Services Ads, set them up. If you are, start disputing junk leads weekly.

Ongoing: the weekly 20-minute habit

  • Skim the search terms report, add new negatives.
  • Check actual speed-to-lead and no-show rates.
  • Review which keywords and ads drove signed contracts rather than only leads, and shift budget toward them.
  • Watch CAC by job type, not blended.

Most roofers who run this sequence honestly see CAC fall by a third to a half within 60 to 90 days, with the biggest single gains coming from the landing page and the follow-up cadence, not the ad settings.

Mistakes that make a high CAC worse

When the CAC number scares them, roofers reach for fast moves that feel decisive and usually backfire. Recognize these before you make them:

  • Slashing the budget overnight. Cutting spend in half does not cut CAC; it often raises it, because the account loses the data volume the bidding system needs to optimize and you concede position to competitors at exactly the wrong moment. If you must cut, cut the unprofitable segments by job type, not the whole account uniformly.
  • Chasing the cheapest clicks. The cheapest keywords are cheap because nobody high-intent is searching them. A flood of $4 clicks that never convert is more expensive per signed job than fewer $25 clicks that close. Optimize toward signed contracts, not toward a low CPC.
  • Turning on every automated setting at once. Smart bidding and broad match with automation can work, but switched on blindly in a poorly structured account with no conversion data, they spend fast and learn slow. Get clean conversion tracking and a sane structure in place first, then let automation optimize toward a real goal.
  • Blaming lead quality before checking response time. "The leads are garbage" is the most common complaint and the least often true. Before you conclude the channel is broken, measure your actual speed-to-lead and your set rate. A perfectly good lead called back the next morning becomes a garbage lead.
  • Bidding to the top spot reflexively. The number-one position is the most expensive and not always the most profitable. A position two or three with a strong landing page and fast follow-up frequently produces a lower CAC than burning premium CPCs to sit at the very top.

Pacing budget against your crew capacity

One more discipline that quietly protects CAC: do not run more paid volume than your intake and crews can actually service well. If leads pile up faster than you can call them in five minutes, run inspections, and follow up on quotes, your conversion rates sag under the load and your CAC rises even though nothing in the ad account changed. There is a real throughput ceiling above which more spend buys worse conversion. Pace paid volume to the level your team can work to its full close rate, and add capacity before you add spend, not after. A smaller, well-serviced flow of leads almost always produces a lower cost per signed job than a flood your team cannot keep up with.

The CAC floor: why even a perfect paid account has a limit

Here is the part most PPC guides will not tell you. You can do everything above, run a clean account, a fast page, sub-five-minute response, a disciplined follow-up cadence, and your roofing CAC will still bottom out at a floor you cannot drill below. That floor exists because of three things you do not control:

  1. The auction is competitive and gets worse after storms. When hail rolls through, every roofer in the metro plus out-of-town swarm crews bid up the same keywords simultaneously. CPCs spike exactly when demand spikes. You are renting attention in an auction priced by your most desperate competitor.
  2. You are buying the same homeowner everyone else is buying. A homeowner searching "roof replacement near me" is, in that same hour, being served your competitors' ads, three lead-gen aggregators reselling that same form fill, and the LSA units above you. You are paying a premium to compete for a person who is shopping you against four others.
  3. The intent window is narrow. PPC only catches the homeowner in the brief moment they decide to search. The far larger number of homeowners with a roof that is genuinely due, fifteen, eighteen, twenty-two years old and quietly failing, are not searching today. PPC cannot reach them at all. You only get the sliver who happen to type the query this week.

That third point is the strategic one. PPC is a tax you pay to catch in-market demand at the exact moment of intent, in an auction, against everyone else chasing the same moment. It is a real and useful channel. It is also, by its nature, the most expensive way to find a customer, because you are buying the most contested inventory there is.

The roofers who escape the CAC trap do not abandon PPC. They cap it at a sane, profitable volume and build a second source of demand that they own rather than rent, demand that does not get bid up after a storm and does not get resold to four competitors.

Think about where the work actually is in your service area. On any given street, a handful of roofs are genuinely due, old enough, worn enough, or storm-worn enough to need replacing soon. PPC can only reach the ones whose owners happen to search this week. The rest, the larger number, are invisible to paid search entirely. They are not shopping. But the roof is still failing.

This is the demand you can own instead of rent, and it is where a targeting layer changes the CAC math. RoofPredict reads aerial imagery and models storm physics per roof to estimate, house by house, which roofs are actually due, expressed as a roof-age range per address (not a precise date, and not a guarantee, it is an estimate with honest uncertainty), paired with the storm history that roof has actually taken. A hail map shows you where it hailed; modeling the storm on each individual roof shows which roofs it likely wore out.

What that does to your acquisition cost is straightforward. Instead of paying a contested, storm-inflated auction price to catch the few homeowners searching today, you put your crew, your mailers, and your follow-up in front of the houses that are due now, whether or not their owners are searching. You knock the right doors and skip the new roofs. You feed your own CRM and your own mailing list with addresses worth the gas and postage. The cost to reach those homeowners is your own labor and a stamp, not a $25 to $45 click priced by your most desperate competitor.

It also rescues money already sitting in your book. The old estimates that went quiet, the past customers whose roofs are now several years older, the addresses you already own, scored by which ones are likely due now. That is acquisition cost close to zero because you already paid to get those contacts. A roofer with a few thousand dead records in a CRM is sitting on a list that, filtered to the homes whose roofs have aged into the replacement window, often holds more profitable near-term work than a month of fresh paid clicks, at a fraction of the cost. You bought those contacts once already; the only new cost is the stamp or the phone call to re-engage the ones that are now due.

There is also a quieter effect on rep retention, which feeds CAC indirectly. A green canvasser sent to knock a whole street at random gets demoralized fast, closes little, and quits, and replacing reps is its own hidden acquisition cost. A new hire pointed at the doors most likely to be due, with a per-home reason to knock, has better conversations sooner, makes money, and stays. Lower rep churn means a more productive outbound motion, which means a lower cost per job from the channel you own.

A few honest limits, because a tight trade compares notes. Roof age comes back as a range, not an exact install date, because re-roofs are invisible to public records and even to imagery with certainty. The storm model gives you odds that a roof took damage, not proof, the inspection still has to confirm it. And targeting does not replace a sales process. It points your existing motion at better doors. If your close rate is broken, better targeting feeds a broken funnel faster; fix the funnel above and aim it with better targeting, and the two compound.

The point is not to stop running ads. It is to stop relying entirely on the single most expensive, most contested channel there is. Keep PPC for the in-market searchers it catches well, run it clean and capped at a profitable CAC, and build owned demand underneath it so your blended cost per job comes down and your pipeline stops swinging with the auction and the weather.

Blended CAC: the number to actually manage

Stop optimizing channels in isolation and manage your blended CAC, total acquisition spend across all channels divided by total signed jobs. A roofer with a $1,600 PPC CAC and a $300 CAC on owned-demand outbound, splitting volume evenly, runs a blended CAC near $950, far healthier than either the panic of an expensive auction or the feast-or-famine of waiting on a storm. The goal is a portfolio of demand sources, with the expensive contested channel sized to what it can profitably deliver, not loaded up because it is the only one you have.

A note on storm and insurance-restoration leads

Many roofers run PPC hardest after storms, chasing restoration work, and the CAC math there has its own wrinkles. The auction is most expensive exactly when storm demand peaks, so a clean account and owned-demand targeting matter most in precisely those windows.

One boundary worth keeping straight: your job, and your marketing's job, is to document your own inspection and scope, the contractor's own observations and field evidence, and to organize that factual documentation cleanly. The homeowner files the claim and the insurer decides it. Keep deductible talk, coverage interpretation, and settlement language out of your ads and landing pages entirely, both because it is the right line and because it keeps you clear of public-adjusting rules. Market the roof and the inspection; route anything about coverage, denials, or what a policy entitles to a licensed professional. Good documentation of your own scope is a competitive edge; speaking for the homeowner against the carrier is not your lane.

Bringing it together

When a roofer's PPC cost per acquisition is too high, the instinct is to blame the platform and start fiddling with bids. Almost always, the real leak is downstream, in the landing page, the speed-to-lead, the no-show rate, or the quote follow-up, links in the chain the ad account never shows you. Map your own CAC chain, find the two worst rows, and fix those first. You will move the number further with a faster landing page and a written follow-up cadence than with any bid strategy.

Then accept that even a perfect paid account has a floor, because PPC means renting the most contested attention in the market in an auction that spikes exactly when you need it. Cap paid at a profitable volume and build demand you own, the due roofs on your own streets and the dormant value in your own CRM, so your blended cost per job falls and your pipeline stops living and dying by the auction and the weather.

If you want to see what owning that demand looks like for your service area, that is the layer RoofPredict adds underneath the ads you already run. Know which roofs are due, point your existing motion at them, and let PPC do the narrower job it is actually good at.

FAQ

What is a good cost per acquisition for roofing PPC?

There is no universal number, because it depends entirely on your average job value and gross margin. The right way to judge it is against your allowable CAC: average job gross profit multiplied by the share of that profit you are willing to reinvest in acquisition. For a $14,000 job at 35% margin, reinvesting a third of first-job profit, your allowable CAC is roughly $1,600. If your actual PPC CAC sits comfortably below your allowable CAC and you are profitable, it is fine even if it feels high. If it sits above, you have a real problem to fix.

Why is my roofing CPL low but my CAC still high?

Because CPL only measures the cost of a lead, and CAC measures the cost of a signed job. A cheap lead that converts poorly produces an expensive customer. If you generate $60 leads but only one in eight becomes a customer, your raw CAC is $480 before any other costs. The fix is almost always downstream of the ad account: speed-to-lead, appointment no-shows, and quote follow-up. Stop optimizing for cheap leads and start optimizing for signed contracts.

What is the single fastest way to lower roofing PPC cost?

Pull your 90-day search terms report and build a real negative keyword list. Most roofing accounts waste 15% to 30% of spend on irrelevant searches like 'roofing jobs,' 'roof rack,' 'DIY roof repair,' and 'roofing materials wholesale.' Adding negatives costs nothing and can recover a meaningful share of budget within days. After that, the next fastest wins are a faster, dedicated landing page and an instant auto-response text to new leads.

Are Google Local Services Ads cheaper than search PPC for roofers?

Often, yes, because you pay per lead rather than per click and the leads tend to be higher-intent, but only if you manage them well. The biggest lever is disputing junk leads, since LSA lets you dispute spam, out-of-area, and wrong-service leads, which lowers your effective cost per lead. You also need the Google Guaranteed badge, a verified license, and a strong review profile. Lead quality varies, so treat dispute management as a weekly habit rather than set-and-forget.

How much does speed-to-lead really affect roofing CAC?

A lot, because it directly controls how many of your paid leads turn into set appointments. A leaking-roof or storm lead is anxious and shopping several roofers at once. Calling back hours later, after they have already spoken to competitors, sharply reduces your odds of setting the appointment. An instant auto-response text plus a sub-five-minute human callback during business hours can move your lead-to-appointment rate enough to drop CAC noticeably, with zero change to the ad account.

Should I stop running roofing PPC if my CAC is too high?

No. PPC catches in-market homeowners at the exact moment they decide to search, which is valuable. The better move is to run it clean, cap it at a profitable volume, and stop relying on it as your only source of demand. PPC is the most expensive channel by nature because you are competing in an auction for the most contested attention in the market, priced up after every storm. Pair it with owned demand so your blended cost per job comes down.

What is owned demand and how does it lower my cost per job?

Owned demand means reaching homeowners whose roofs are genuinely due without buying their attention in an auction, by knocking, mailing, or re-engaging your own CRM. The cost to reach them is your own labor and postage rather than a contested per-click price. A targeting layer that estimates which roofs are due house by house lets you point that motion at the right addresses and skip the new roofs, so your blended CAC across paid and owned channels falls and your pipeline stops swinging with the auction and the weather.

Why does my roofing PPC cost spike after storms?

Because demand and competition spike at the same moment. When hail hits, every local roofer plus out-of-town storm crews bid on the same keywords simultaneously, so cost per click rises exactly when you most want leads. This is inherent to auction-based paid search. It is the strongest argument for building owned demand, the due and storm-worn roofs on your own streets, which does not get bid up and does not get resold to four competitors.

How do I know whether my high CAC is an ad problem or a sales problem?

Write out your full CAC chain: clicks to leads, leads to appointments, appointments to inspections, inspections to quotes, quotes to signed. Find your real rate at each step. If clicks-to-leads is low, it is an ad and landing-page problem. If leads-to-appointments is low, it is speed-to-lead and intake. If quotes-to-signed is low, it is follow-up and sales process. Most high-CAC roofing accounts have their worst leak downstream of the ad account, in the landing page or the quote follow-up, not in the bids.

Can better roofing leads fix a high CAC on their own?

Not if your funnel below the lead is broken. Better targeting feeds a broken sales process faster, which wastes good opportunities more efficiently. Fix the downstream conversion rates first, speed-to-lead, no-shows, and quote follow-up, then aim better-targeted demand at the improved funnel. The two compound: a higher close rate multiplied by better-qualified addresses produces the lowest cost per job. Targeting points your motion at better doors; it does not replace the motion.

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.

By signing up, you agree to receive The Roofline by RoofPredict. Unsubscribe anytime.

Sources

  1. About keyword matching optionssupport.google.com
  2. About negative keywordssupport.google.com
  3. Local Services Ads: Get startedsupport.google.com
  4. Dispute a lead in Local Services Adssupport.google.com
  5. Conversion tracking basics (Google Ads)support.google.com
  6. Call conversion tracking (Google Ads)support.google.com
  7. About Smart Bidding and ROAS targetssupport.google.com
  8. Test your mobile page speed (PageSpeed Insights)pagespeed.web.dev
  9. FTC: Truth in advertising guidance for businessesftc.gov
  10. SBA: Marketing and sales for small businesssba.gov
  11. NRCA: Professional roofing resourcesnrca.net
  12. IBHS: Hail and roofing researchibhs.org
  13. NOAA NWS Storm Prediction Centerspc.noaa.gov
  14. RoofPredictroofpredict.com

Related Articles