Google Ads Agency vs In-House for Roofing: The Real Math, the Hidden Costs, and How to Decide
On this page
Every roofing owner who spends real money on Google Ads eventually hits the same fork in the road. Either you keep paying an agency a management fee on top of the ad spend, or you pull it in-house and run it with your own person. The pitch on both sides is loud. Agencies tell you that paid search is a specialist craft and you'll torch your budget without them. The in-house crowd tells you agencies are a tax on your spend and nobody cares about your money like you do. Both camps are partly right and both leave out the parts that would help you decide.
This is written for an owner who is already spending somewhere between three thousand and forty thousand dollars a month on Google Ads, or about to start, and wants to know which model actually wins on cost per acquired job, not cost per click. The honest answer is that it depends on your spend level, your market, your appetite for managing a function you don't fully understand, and whether you have the back-office discipline to feed an in-house operation the data it needs. We'll walk the real math, the hidden costs nobody quotes you, the contract terms that quietly hand your account to the agency, and a decision framework you can run in an afternoon.
One thing up front. The agency-versus-in-house question is the wrong question if you treat Google Ads as the whole machine. Paid search is one acquisition channel sitting on top of a much larger revenue cycle: who you target, what you mail and knock, how fast you follow up, whether the lead lands in a CRM your sales team actually uses, and whether you collect every dollar on the jobs you win. Decide the channel question, but decide it inside that bigger frame, because the cheapest lead source in roofing is usually the homeowner you were going to reach anyway through a sharper target list.
What you are actually buying when you run Google Ads
Before comparing who should run it, get clear on the work itself. Roofing Google Ads is not "set up some keywords." The job is a recurring loop with a dozen moving parts, and whoever owns it (agency or employee) has to do all of them well, every week, or the account drifts.
The core tasks:
- Account structure and campaign architecture. Splitting repair from replacement, storm/emergency from planned, residential from commercial, and branded from non-branded. Each of those has a different searcher intent, a different close rate, and a different acceptable cost per lead.
- Keyword and search-term management. The money is made in the negative keyword list. Roofing draws an enormous volume of junk searches: people looking for jobs, for DIY shingle repair, for "roofing companies near me hiring," for material prices, for warranty lookups on a brand they bought. If nobody is mining the search-terms report weekly and adding negatives, you are paying for clicks that will never become a job.
- Bidding and budget pacing. Smart Bidding (Maximize Conversions, Target CPA, Target ROAS) only works if it's fed clean conversion data. Garbage in, expensive garbage out.
- Landing pages and conversion tracking. The ad is half the job. Where the click lands, how fast the page loads, whether the form is short, whether call tracking is wired up, and whether form fills and calls are deduplicated all decide your cost per real lead.
- Geographic and scheduling controls. Bidding harder in the zips you can actually service profitably, dayparting to your office hours or to a 24/7 answering setup, excluding areas you don't crew.
- Creative and offer testing. Ad copy, extensions, and the offer itself (free inspection, financing, warranty length).
- Reporting that ties back to revenue. Not impressions and clicks. Booked appointments, sat appointments, signed contracts, and revenue, attributed back to campaign and keyword.
The reason this matters for the agency-versus-in-house decision: every one of those tasks is a skill, and most of them are unglamorous maintenance, not one-time setup. The failure mode for in-house is that the setup gets done and then the weekly grind quietly stops. The failure mode for agencies is the opposite: the grind happens on autopilot but nobody pushing the buttons knows the difference between a hail supplement lead and a gutter-cleaning tire-kicker.
The real cost of an agency (all-in, not the headline fee)
Agencies quote a management fee. That number is never the real number. Here's how agency cost actually stacks up.
The management fee itself. Two common models. A percentage of spend (commonly ten to twenty percent) or a flat monthly retainer (often eight hundred to three thousand dollars a month for a small-to-midsize roofer, more for multi-location). Percentage-of-spend looks cheap at low budgets and gets ugly as you scale; flat retainers look expensive when you're small and become a bargain at high spend. A percentage model also creates a quiet misalignment: the agency makes more when you spend more, which is not always the same as when you win more jobs.
Setup and onboarding fees. Many agencies charge a one-time build fee for account structure, tracking, and landing pages. Reasonable in principle, but ask whether that work product is yours to keep if you leave (more on that below).
Landing page and creative costs. Sometimes bundled, sometimes a line item. If the agency builds your landing pages on their platform, you may be renting them.
Call tracking and software. Call tracking, form software, and reporting dashboards often run through tools the agency resells or marks up.
The spend itself. Obvious, but worth stating: the management fee is on top of the media. A fifteen-percent fee on twenty thousand a month in spend is three thousand a month, thirty-six thousand a year, before a single shingle is sold.
Worked example. Say you run twenty thousand a month in media through an agency at a twelve-percent fee with a flat call-tracking and landing-page bundle of four hundred a month. Your true monthly cost is twenty thousand in media, twenty-four hundred in management, four hundred in tooling, so roughly twenty-two thousand eight hundred. The agency's cut is twenty-eight hundred a month, about thirty-three thousand six hundred a year. That number is your benchmark. The in-house option has to beat that all-in, including the parts of the job an employee can't do as well.
What you get for that fee, when the agency is good: a team that has run roofing accounts before, has seen your seasonality, knows the negative-keyword landmines, won't disappear when your one in-house person quits, and can scale up the day a storm hits without you hiring. What you get when the agency is mediocre: a junior account manager running fifteen other accounts, a templated structure, monthly reports full of clicks and impressions, and conversion tracking that counts every phone call (including suppliers and your own crew calling in) as a "lead."
The real cost of in-house (the number nobody on the in-house side quotes)
The in-house pitch is "cut out the agency fee." That framing hides most of the cost. Running it yourself replaces a fee with a salary plus tools plus your own management time plus risk. Add it up honestly.
Salary, loaded. A competent paid-search person who can actually run a roofing account is not a fifteen-dollar-an-hour hire. A genuine specialist is a sixty-five to ninety-thousand-dollar role in most markets, sometimes more in expensive metros. Load it with payroll taxes, benefits, and overhead and the real annual cost is meaningfully higher than the base. If instead you hand Google Ads to your office manager or a marketing generalist as "part of their job," you're not saving money, you're getting a part-time amateur running a five-figure-a-month budget, and that's the single most expensive way to do paid search.
Tools. Call tracking, landing page builder, rank/competitor tools, and reporting. Budget a few hundred dollars a month minimum.
Ramp time. A new hire, even a good one, takes one to three months to learn your business, your service area, your seasonality, and your margins well enough to make smart calls. During ramp, you pay full salary for partial output, and the account is learning on your dime.
Key-person risk. This is the big one nobody quotes. When your in-house person quits, goes on leave, or gets poached, your paid-search knowledge walks out the door. The account, the test history, the negative lists, the reasoning behind the structure, all of it. An agency is a team; an in-house hire is a single point of failure unless you build redundancy, which means hiring more than one person, which blows up the cost case.
Your management time. Someone has to manage the manager. If you can't evaluate the work, you can't tell whether your in-house person is good, which means you're flying blind in a different way than with an agency.
Worked example to put against the agency number above. An in-house specialist at seventy-five thousand base, loaded to roughly ninety-five thousand all-in, plus four hundred a month in tools, is about ninety-nine thousand eight hundred a year before media. That's almost exactly three times the thirty-three thousand six hundred you'd pay the agency in our earlier example. The in-house case only closes that gap if (a) you're spending enough that the same person manages a much larger budget at no extra cost, or (b) that person does far more than Google Ads.
That second point is the actual key. An in-house marketing hire who only runs Google Ads is hard to justify until you're spending a lot. An in-house marketing hire who runs Google Ads and Local Services Ads, and your Google Business Profile, and your direct mail, and your website, and your CRM hygiene, and your review generation starts to pay for themselves fast because the salary spreads across the whole acquisition machine. The in-house decision is rarely really about Google Ads alone. It's about whether you have enough total marketing work to justify a full-time owner of the function.
The cost-per-lead and cost-per-job math that actually decides it
Management fee and salary are inputs. The output that matters is cost per acquired job and the margin on that job. Run the funnel all the way down, because a cheaper-to-manage channel that produces worse leads is more expensive, not less.
Here is the chain you have to measure, regardless of who runs the account:
- Spend (media plus management or salary, allocated)
- Clicks and the cost per click
- Leads (form fills plus qualified calls, deduplicated) and cost per lead
- Set appointments and the lead-to-appointment rate
- Sat appointments (the rep actually showed and inspected)
- Signed contracts and the appointment-to-close rate
- Revenue and gross margin per job
- Cost per acquired job = total cost divided by signed contracts
- Return = gross margin produced divided by total cost
The trap in the agency-versus-in-house debate is that everybody argues about cost per lead at step three and ignores steps four through nine. A lead is not a job. Roofing close rates from cold paid-search leads are often well under twenty percent, and the spread between a good account and a bad one shows up far more in lead quality than in cost per click.
Worked example. Two scenarios, same twenty thousand a month media.
| Metric | Agency-run | In-house (good) |
|---|---|---|
| Media spend | $20,000 | $20,000 |
| Management / salary (monthly) | $2,800 | $8,300 (loaded salary, allocated) |
| Total cost | $22,800 | $28,300 |
| Cost per lead | $120 | $105 |
| Leads | ~190 | ~270 |
| Lead-to-appointment | 35% | 38% |
| Appointments | 66 | 103 |
| Close rate | 30% | 32% |
| Signed jobs | 20 | 33 |
| Cost per acquired job | $1,140 | $858 |
Notice what's doing the work in that table. The in-house column wins not because the salary is cheaper (it isn't) but because a dedicated person who knows your business squeezes more leads out of the same media and improves the downstream rates. That's the in-house bull case in one table: at high enough spend, a great in-house operator's improvement on the media efficiency outruns their salary. And that's exactly why a mediocre in-house hire is a disaster: flip those rates the other way and the in-house column produces fewer jobs at a higher cost per job AND you're paying the bigger salary. The model only works with a genuinely strong operator and enough spend to justify them.
The number to write on the wall: at roughly fifteen to twenty thousand a month in media, the all-in cost of a good agency and the all-in cost of a single excellent in-house hire start to converge, and above that, in-house can pull ahead if you have the spend and the volume of total marketing work to keep that person fully loaded. Below ten thousand a month, the agency (or a strong freelancer) almost always wins on the math, because you can't fractionalize a salary the way you can a retainer.
Where agencies genuinely beat in-house
The honest case for agencies, stripped of the fear-selling.
Roofing-specific pattern recognition. A roofing-focused agency has run dozens of accounts in your niche. They already know that "roof repair" converts differently than "roof replacement," that storm season changes everything, that "insurance roof" searches need careful handling, and which negative keywords to add before day one. An in-house generalist learns all of that the slow, expensive way.
No ramp, no key-person risk. You're buying a team. If your account manager leaves the agency, another one picks it up. With one in-house person, a departure is a crisis.
Surge capacity. When a hailstorm hits your market, demand and competition both spike overnight. An agency can scale your budget and rebuild campaigns the same week. An in-house person can too, but only if they have the bandwidth, and during a storm event they're drowning.
Tooling and benchmarks. Agencies amortize expensive tools across clients and have benchmark data you'll never see in-house: what a normal cost per lead looks like in your metro this month, what competitors are bidding.
It's genuinely not your core business. You sell and install roofs. Every hour you or your team spends learning Google Ads is an hour not spent closing jobs or running production. For many owners, outsourcing the channel is the right call simply because their time is worth more elsewhere.
The catch on all of this: it's only true of a good, roofing-focused agency. A generalist agency that treats you like a dentist or a plumber gives you none of the niche advantage and most of the cost.
Where in-house genuinely beats an agency
The honest case for in-house.
Speed and control. When you want to pause spend in a zip you're overbooked in, or push budget at a storm, or test a new offer, your own person does it in an hour. With an agency it's an email, a queue, and maybe a week.
Total alignment. Your in-house person's bonus depends on the same thing yours does: signed, profitable jobs. They sit in the sales meeting. They hear which leads were junk. They know that the "flat roof" leads have been disasters and can act on it immediately. That feedback loop from sales floor to ad account is the in-house superpower, and it's the thing agencies struggle to replicate because they don't sit in your building.
Compounding institutional knowledge (if you avoid the key-person trap). A good in-house team builds a deepening understanding of your specific market that an agency juggling many clients can't match.
The whole machine, not one channel alone. As noted, the in-house hire who owns Google Ads plus everything else turns a single-channel cost into a whole-marketing investment.
No spend incentive conflict. Your employee has no reason to push you to spend more for the sake of a percentage fee.
The catch on all of this: it requires hiring well, retaining the person, giving them clean data to work with, and having enough total marketing scope to justify the salary. Most roofers who fail at in-house fail at the hiring step, hand it to an under-qualified person, and conclude "in-house doesn't work" when what didn't work was hiring an amateur for a specialist job.
The hybrid model, and why most roofers should consider it
It's not a binary. Three hybrid structures work well in roofing.
In-house owner, agency execution. You hire one marketing person who owns strategy, the sales-floor feedback loop, and all the channels, but you contract the Google Ads button-pushing to a specialist agency or freelancer. Your person directs; the specialist executes. You get alignment plus expertise without paying for a full-time PPC specialist.
Agency now, in-house later. Start with a good agency while you're learning what good looks like and while your spend is too low to justify a hire. Use that time to learn the levers. When your spend crosses the threshold and you understand the channel well enough to manage someone doing it, bring it in-house and use the agency relationship to train your hire during the transition.
Freelancer or fractional specialist. Between agency and full-time hire sits the experienced freelance roofing-PPC specialist who manages your account for a flat monthly fee, often less than an agency and far less than a salary, with deep niche knowledge. The risk is the same key-person problem as in-house (one person, no backup) without the alignment benefit of an employee. For spend in the five-to-fifteen-thousand range, this is frequently the best value, provided you vet hard.
The through-line: match the model to your spend and your stage. Low spend, early stage, no marketing leadership: agency or freelancer. High spend, mature, strong marketing leader on staff: in-house or hybrid. The mistake is picking the model based on ideology ("agencies are a ripoff" or "only pros should touch this") instead of your actual numbers.
The contract traps that decide more than the fee
The management fee is what owners negotiate. The contract terms are what actually determine your risk, and they get skimmed. Read for these before you sign any agency deal.
- Who owns the Google Ads account. Non-negotiable: the account must live under your own Google Ads ID, with the agency granted access, not the other way around. If the agency runs your campaigns inside their own MCC account that you don't own, then when you leave, your entire history, structure, conversion data, and learnings stay with them. You start from zero. Insist on owning the account.
- Who owns the landing pages, tracking, and creative. If they built pages on their proprietary platform, you may lose them on exit. Get in writing that the work product transfers.
- Who owns the call-tracking numbers. Tracking numbers that have been on your trucks, mailers, and Google Business Profile for two years are valuable. If the agency owns them, leaving means changing every number. Port them or own them.
- Contract length and exit terms. Avoid long lock-ins. Month-to-month or a short term with a clean thirty-day exit is the standard you want. Long contracts with penalties are a red flag.
- Transparency on spend versus fee. You must be able to see your actual Google Ads spend separate from the management fee, in the Google interface, not only on the agency's dashboard. Some agencies bury the real spend and pocket the difference. If you can't log into Google and see the real numbers, walk.
- Conversion-tracking honesty. Ask exactly what counts as a "conversion" and a "lead" in their reports. If a thirty-second call from a supplier counts as a lead, their cost-per-lead number is fiction. Demand call-recording and lead-qualification so reported leads map to real opportunities.
- Reporting cadence and substance. Monthly minimum, and the report must include search-term spend and downstream metrics, not a wall of impressions.
The single most expensive contract mistake in roofing paid search is not owning your own account. It quietly converts the agency relationship from a service into a hostage situation, and most owners don't find out until they try to leave.
How to vet an agency in one conversation
Most owners pick an agency on the pitch deck and the fee. Better signal comes from a handful of pointed questions, and the quality of the answers tells you more than any case study. Ask these on the first call.
- "Show me a roofing account you run, with the spend visible." A roofing-focused agency can walk you through a real account (with the client name blurred) and show search-terms reports, negative lists, and the campaign split. Vagueness here means they don't really run roofing accounts hands-on, or a junior does.
- "How do you define a lead, and can I listen to call recordings?" If the answer is "every call counts," their cost-per-lead is inflated and you'll never trust the reporting. You want call recording, lead qualification, and deduplication baked in.
- "Who specifically manages my account, and how many other accounts do they run?" A senior who runs ten accounts will do better work than a junior running thirty. Get a name and a number.
- "What's your negative-keyword process for roofing?" A real operator rattles off the roofing junk-search categories (hiring/jobs, DIY, material-price, warranty lookups, supplier searches) without hesitation. Hesitation means they'll learn on your budget.
- "What happens to my account, landing pages, tracking numbers, and data if I leave?" The answer should be "you own all of it, it's under your ID, and we hand over a clean transition." Anything else is a flag.
- "What downstream metrics do you report on?" You want to hear cost per appointment and a path toward cost per acquired job, not impressions and click-through rate.
The same questions, reframed, vet an in-house hire. Ask a candidate to walk you through an account they ran, how they built the negative-keyword list, how they handled a storm-season budget swing, and how they tied spend back to closed revenue. A strong in-house hire answers exactly like a strong agency operator, because it's the same craft. If a candidate can't speak to the funnel below the click, you're about to hire an amateur for a specialist job.
The transition, in either direction
Whichever way you move, the switch is where accounts get wrecked. Plan it so you don't lose history.
Agency to in-house. Don't fire the agency the day your hire starts. Overlap them for thirty to sixty days. Confirm first that the account is under your Google Ads ID (if it isn't, that's a fight to have before you give notice, because you may need them to grant you ownership or rebuild). Export everything: campaign structure, the negative-keyword lists, conversion-tracking setup, and the reasoning behind the structure if they'll document it. Port your call-tracking numbers to an account you control. Have your new hire shadow the existing reporting for a full month before they take the wheel, so they inherit a running account instead of a cold one.
In-house to agency. Same discipline in reverse, and it's where key-person risk bites: if your in-house person already quit, you may have no documentation and no warm handoff. Before any departure, insist the role keep a written runbook (structure, naming conventions, negative lists, the why behind each decision) so the account survives the person. When you hand to an agency, give them read access first, let them audit, and only then grant edit rights.
Freelancer or fractional. Treat the single-freelancer relationship like in-house for risk purposes: it's one person with no backup. Mitigate by owning the account yourself and requiring documentation, so if the freelancer disappears, you can hand a clean account to the next operator without starting over.
Seasonality changes the math more than owners expect
Roofing demand is lumpy, and the cost structure of your channel manager should match. Two markets, two right answers.
Storm-driven markets. When demand spikes after a hail event, competition spikes with it, and cost per click can jump sharply for the weeks everyone is fighting over the same searchers. You need surge capacity (the ability to scale budget and rebuild campaigns fast) and you need it for short, intense windows. A good agency provides surge capacity as part of the relationship. A single in-house person may be drowning in execution exactly when you need them to also re-architect campaigns. This is a real point in the agency's favor for storm-heavy markets, or an argument for the hybrid model so your in-house strategist isn't the only set of hands.
Retail / steady-replacement markets. Where demand is driven by roof age rather than weather events, volume is steadier and more predictable. Steady demand supports a fixed-cost salary better, because the in-house person stays loaded year-round rather than oscillating between idle and overwhelmed. Steady markets tilt toward in-house once you're at sufficient spend.
The budgeting consequence: a variable-cost model (percentage-fee agency or freelancer) protects you in slow quarters because the fee shrinks with the spend. A salary is fixed whether you book ten jobs that month or fifty. If your revenue is seasonal and lumpy, the variable model is a hedge; if it's steady and high, the fixed cost is fine and the in-house efficiency gains are worth it. Run your decision against your worst quarter, not your best.
What pros get wrong on both sides
From the field, the recurring mistakes:
On the agency side. Owners choose on price, hire the cheapest management fee, get a junior on a templated account, and conclude paid search doesn't work. Or they hire a generalist agency with no roofing experience. Or they never read the contract and don't own their account. Or they "set and forget," never reviewing the work, and pay for a drifting account for a year. Or they judge the agency on cost per lead alone and never feed back which leads actually closed, so the agency optimizes toward cheap junk.
On the in-house side. Owners hand a specialist job to an amateur (office manager, a cousin, a generalist) to save money and get amateur results. Or they hire one person and create a single point of failure with no backup or documentation. Or they hire well but never give the person the downstream data (which leads sat, which closed, job margin) so the person optimizes blind, exactly the thing in-house is supposed to fix. Or they underinvest in tools and ask the hire to fly without instruments.
On both sides. The biggest shared mistake is measuring the channel at the lead, not the job. Cost per lead is a vanity metric if you don't know your cost per acquired job and the margin on it. Whoever runs your account, the scoreboard has to be signed, profitable contracts attributed back to spend. If you can't produce that number today, fix that before you touch the agency-versus-in-house question, because without it you can't tell which model is winning anyway.
A decision framework you can run this week
Work through these in order. Each step narrows the choice.
Step 1: Establish your real numbers. Pull your last twelve months. Total media spend, leads, set appointments, sat appointments, signed jobs, revenue, and gross margin per job. Compute current cost per acquired job. If you can't, that's your first project, not the agency decision.
Step 2: Find your spend tier.
- Under $7,000/month media: agency or vetted freelancer. You can't justify a hire. Use a percentage-fee agency or a flat-fee specialist freelancer.
- $7,000 to $15,000/month: freelancer, specialist agency, or the in-house-owner/agency-execution hybrid. The math is close; lean on the other steps.
- $15,000 to $30,000/month: the threshold zone. A great in-house hire who also owns your other channels likely wins. A great agency is still very competitive. Decide on the soft factors below.
- Over $30,000/month or multi-location: in-house team or a serious hybrid. At this spend, a percentage agency fee is large and an in-house function is clearly justified.
Step 3: Assess your soft factors. Score yourself one to five on each: Do you have, or can you hire and retain, genuine PPC talent? Do you have enough total marketing work to keep a full-timer loaded? Do you have the management capacity to evaluate the work? Do you have clean downstream sales data to feed whoever runs it? Do you need surge capacity for storms? Low scores push you toward an agency; high scores push toward in-house.
Step 4: Stress-test against a slow month. Whatever model you pick has to survive a quiet quarter. An agency fee scales down if you cut spend. A salary does not. If your volume is seasonal and lumpy, a variable-cost model (agency/freelancer percentage) protects you in the troughs. If your volume is steady and high, the fixed cost of a salary is fine.
Step 5: Pick the model, then enforce the standards. Whichever you choose, the non-negotiables are the same: you own your Google Ads account, conversion tracking counts real leads only, the scoreboard is cost per acquired job, and you review the work monthly against revenue. The model matters less than the discipline.
The channel decision is downstream of who you target
Here's the part both the agency and in-house salespeople skip, and it's the part that actually moves your cost per acquired job. Google Ads, run by anyone, is a bidding war for the homeowners who are actively typing "roof replacement near me" right now. That's a small, expensive slice of the homes in your market that need a roof. The cheaper opportunity is the much larger group of homeowners who need a roof but aren't searching yet, because their roof is the right age and their neighborhood took storm exposure. You don't have to bid against every competitor to reach those homes. You can go to them directly.
That's where the smarter version of this whole question lives. Instead of asking only "who manages my Google Ads," ask "where is the cheapest qualified opportunity in my service area, and what's the most efficient way to reach it." Often the answer is a combination: paid search to catch active in-market demand, plus direct outreach to the ranked list of due-for-replacement roofs you'd otherwise wait years for Google to deliver one click at a time.
Where RoofPredict fits the agency-versus-in-house decision
The reason this matters for your decision: most of the agency-versus-in-house argument is about squeezing a few percent more efficiency out of one expensive channel. RoofPredict changes the input to that channel by telling you which homes are worth reaching in the first place, so whoever runs your paid search (you, an employee, or an agency) is working from a sharper target than "everyone who searched."
Here's what you actually do with it. RoofPredict scores every home in your service area by roof-age band (recent, mid-life, due, overdue) plus that roof's storm exposure, and produces a ranked, house-by-house target audience of the roofs most likely due for replacement, each with a "why this home" evidence chain (the age range and the storm history behind the score). To be straight about the limits: that scoring is an age-plus-storm-exposure heuristic, not a guarantee, and roof age is a range, not an exact install date. It's a prioritized list of where to spend your outreach, not a promise that every home needs a roof today.
That ranked list feeds the rest of the machine that sits around Google Ads:
- Direct mail you can track. Turn the due-roof list into a mail campaign with personalized proofs (brand, copy, and address checks), vendor release, and per-piece delivery and return tracking, with the cost quoted up front. Every targeted home gets a personalized report (roof profile, storm history, the cost of waiting) as a PDF and a public microsite with a lead-capture form, plus per-home QR codes for the mail piece and the door. That's demand you create directly instead of renting from an auction.
- Canvassing routes. Build door-knock routes from the same list, assign canvassers, and run a mobile field app with next-stop directions, outcome forms, voice notes, and a leave-behind QR, with live route progress.
- A lead pipeline with an honest scoreboard. Leads from your microsites, mail QR scans, and field app flow into a pipeline (new, contacting, appointment, inspected, won/lost) with an immutable first-touch source, so you finally know which channel produced which signed job. That's the cost-per-acquired-job number the whole agency-versus-in-house decision hinges on.
- Two-way CRM sync. It syncs both directions with thirteen CRMs including HubSpot, ServiceTitan, JobNimbus, AccuLynx, Jobber, Housecall Pro, Salesforce, Pipedrive, Leap, Roofr, SalesRabbit, and CompanyCam (plus Zapier and CSV), so this doesn't become a second system your sales team ignores.
- A results funnel that settles the argument. RoofPredict reports delivered, views, form fills, calls, leads, and wins, with cost per lead and cost per win, and shows actual versus estimate versus industry benchmark, with A/B campaign variants. That's the same actual-cost-per-job scoreboard you need to judge whether your agency or your in-house hire is genuinely winning, applied across your outreach, not one channel alone.
The point for your decision: whether you keep Google Ads in-house or with an agency, you'll make a better choice when you can compare every channel on cost per acquired job in one place, and when a meaningful share of your pipeline comes from homes you targeted directly rather than from an expensive click auction.
If your jobs involve storm and insurance work, the revenue side matters as much as the lead side
A last point that reframes the budget. For roofers doing storm and insurance-restoration work, the most overlooked lever isn't cheaper leads at all. It's collecting every dollar on the jobs you already win. You can obsess over shaving twenty percent off your cost per lead while leaving real money on the table at the back end of each claim because scope was missed or recoverable depreciation never got released.
A compliance note first, because this is where roofers get themselves in trouble. A roofer may inspect, document damage, and write an accurate, Xactimate-aligned estimate to repair their own work, and state facts about their own scope to the carrier. A roofer may not, for a fee, negotiate or "handle" the claim, interpret the homeowner's policy or coverage, promise a specific payout or approval, promise the deductible is waived or absorbed, advertise a "free roof," or represent the homeowner against their insurer. That last set is unlicensed public adjusting. The safe frame is simple: you document thoroughly and write an accurate repair estimate, you hand it to the homeowner, the homeowner files, and the insurer decides coverage.
Within that line, RoofClaim (RoofPredict's integrated claim revenue-cycle side) is built to capture documentation revenue you're entitled to without crossing into claim handling. It links claim intake to the home, lets you upload and auto-classify and OCR claim documents (estimates, photos, denial letters, invoices), and runs opportunity detection that maps estimate line items against a roofing knowledge base to flag missing scope, code-required items, and missed supplements, with evidence anchors and pricing. It runs a recoverable-depreciation autopilot driven by a completion-evidence and final-invoice checklist, tracks deductibles, scores supplement-packet completeness, and runs a follow-up cadence on supplement aging, producing supplement packets, depreciation-release letters, deductible invoices, and missing-docs letters on locked, compliance-gated, contractor-documentation-only templates. Every output stays on the document and estimate side, never the negotiation side.
Why that belongs in a paid-search budget conversation: if you're spending thousands a month to acquire jobs, the cheapest "new revenue" is the supplement and depreciation money already attached to jobs you've won. Tightening the back end can fund the front end. An owner deciding between an agency and an in-house hire should run that whole P&L, not only the cost-per-lead line.
The bottom line
There's no universal winner between an agency and in-house for roofing Google Ads. There's a right answer for your spend level, your stage, and your discipline.
- Under roughly ten thousand a month in media, or just starting: use a good roofing-focused agency or a vetted specialist freelancer. You can't fractionalize a salary, and you're still learning what good looks like.
- In the fifteen-to-thirty-thousand range with a real marketing leader on staff and enough total marketing work to keep them busy: in-house or a hybrid (your strategist plus agency execution) usually wins, because a great operator's efficiency gains outrun their salary and you get the sales-floor feedback loop agencies can't match.
- Whatever you choose: own your Google Ads account, count only real leads, measure cost per acquired job and the margin on it, and review the work against revenue every month. The model matters far less than that discipline.
And zoom out before you spend another dollar. The agency-versus-in-house question optimizes one expensive channel. The bigger win is changing what feeds that channel (a ranked, evidence-backed list of the roofs in your market actually due for replacement, reached by direct mail and canvassing as well as paid search) and collecting every dollar on the jobs you win. Decide the channel question with clear numbers, but decide it inside the whole revenue cycle, because that's where the cost per acquired job is really won or lost.
FAQ
Is a Google Ads agency or in-house cheaper for a roofing company?
It depends entirely on your media spend. Below about ten thousand dollars a month, an agency or a specialist freelancer is almost always cheaper all-in, because you can't justify a full salary at that volume. A loaded in-house specialist runs roughly ninety to a hundred thousand dollars a year before media, while a typical agency fee on that spend is a fraction of that. Above roughly fifteen to twenty thousand a month, an excellent in-house hire who also owns your other marketing channels can pull ahead, because the salary spreads across the whole acquisition machine and a strong operator squeezes more jobs out of the same media.
What does a roofing Google Ads agency actually cost?
Agencies charge either a percentage of spend (commonly ten to twenty percent) or a flat monthly retainer (often eight hundred to three thousand dollars for small-to-midsize roofers, more for multi-location). On top of that, expect possible setup or onboarding fees, landing page and creative costs, and call-tracking or software fees. And all of that is in addition to the media spend itself. On twenty thousand a month in media at a twelve-percent fee plus a small tooling bundle, your true all-in cost is roughly twenty-three thousand a month.
How much should I be spending on Google Ads before hiring someone in-house?
As a rough threshold, in-house starts to make financial sense around fifteen to twenty thousand dollars a month in media, and clearly makes sense above thirty thousand or with multiple locations. Below that, a salary is hard to justify on Google Ads alone. The exception: if your in-house hire owns Google Ads plus Local Services Ads, your Google Business Profile, direct mail, the website, and CRM hygiene, the salary spreads across all of it and can pay off at lower spend.
What is the biggest mistake roofers make running Google Ads in-house?
Handing a specialist job to an amateur. Giving Google Ads to the office manager or a marketing generalist to save the agency fee is the single most expensive way to run paid search, because an under-qualified person managing a five-figure monthly budget burns money on junk clicks and weak campaign structure. The second biggest mistake is hiring one good person with no backup or documentation, which creates a single point of failure when they leave.
Who should own my Google Ads account, me or the agency?
You should own it, always. The account must live under your own Google Ads ID with the agency granted access, not run inside the agency's own account. If the agency owns the account, then when you leave, your entire history, structure, conversion data, negative-keyword lists, and learnings stay with them and you start from zero. Not owning your account is the most expensive contract mistake in roofing paid search, because it turns the relationship into a hostage situation. Also confirm in writing that you own your landing pages, creative, and call-tracking numbers.
How do I measure whether my agency or in-house person is actually doing a good job?
Stop measuring at cost per lead. Measure cost per acquired job and the gross margin on that job. Track the full funnel: spend, clicks, leads (deduplicated, real leads only), set appointments, sat appointments, signed contracts, and revenue, attributed back to campaign. A lead is not a job. The single most common failure is judging the channel on cheap leads while never feeding back which leads actually closed, so the account optimizes toward inexpensive junk. The scoreboard must be signed, profitable contracts attributed to spend.
Is a hybrid model better than fully in-house or fully agency?
For many roofers, yes. A common strong setup is an in-house marketing owner who handles strategy and the sales-floor feedback loop across all channels, with the actual Google Ads execution contracted to a specialist agency or freelancer. You get alignment and institutional knowledge without paying for a full-time PPC specialist. Another sound path is starting with an agency while your spend is low, learning the levers, then bringing it in-house once you cross the spend threshold and understand the channel well enough to manage it.
Can a Google Ads agency or in-house person help with insurance and storm claims?
They can drive leads for storm and restoration work, but neither should touch the claim itself. A roofer may inspect, document damage, and write an accurate Xactimate-aligned estimate to repair their own work and state facts about their own scope to the carrier. A roofer may not, for a fee, negotiate or handle the claim, interpret the homeowner's policy or coverage, promise a specific payout or approval, promise the deductible is waived, advertise a free roof, or represent the homeowner against the insurer, which is unlicensed public adjusting. The safe frame: document thoroughly, write an accurate estimate, hand it to the homeowner, and let the homeowner file while the insurer decides coverage.
Why is targeting more important than who manages my Google Ads?
Google Ads, run by anyone, is a bidding war for the small, expensive slice of homeowners actively searching for a roof right now. The larger and cheaper opportunity is the homeowners who need a roof but aren't searching yet because their roof is the right age and their neighborhood took storm exposure. You can reach those homes directly through mail and canvassing instead of bidding against every competitor for clicks. Sharpening who you target often moves your cost per acquired job more than squeezing a few percent of efficiency out of the ad channel.
How does RoofPredict help with the agency-versus-in-house decision?
RoofPredict changes the input to your paid search by ranking every home in your service area by roof-age band and storm exposure into a house-by-house list of roofs most likely due for replacement, each with a why-this-home evidence chain. That list feeds tracked direct mail with microsites and QR codes, canvassing routes with a field app, a lead pipeline with immutable first-touch source, and two-way sync to thirteen CRMs. Its results funnel reports cost per lead and cost per win with actual-versus-estimate, which is exactly the cost-per-acquired-job scoreboard you need to judge whether your agency or in-house hire is genuinely winning. The scoring is an age-plus-storm heuristic and roof age is a range, not an exact date, so it prioritizes outreach rather than guaranteeing every home needs a roof.
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.net
- Insurance Institute for Business & Home Safety (IBHS) — ibhs.org
- NOAA Storm Prediction Center — spc.noaa.gov
- National Weather Service — weather.gov
- Federal Trade Commission: Advertising and Marketing Basics — ftc.gov
- U.S. Bureau of Labor Statistics: Occupational Employment and Wage Statistics — bls.gov
- U.S. Census Bureau: American Housing Survey — census.gov
- Texas Department of Insurance: Public Insurance Adjusters — tdi.texas.gov
- International Code Council (ICC) — iccsafe.org
- Occupational Safety and Health Administration: Roofing — osha.gov
- Small Business Administration: Marketing and Sales — sba.gov
- U.S. Small Business Administration: Calculate Your Startup Costs — sba.gov
- National Association of Insurance Commissioners — naic.org
- RoofPredict — roofpredict.com
Related Articles
Google Ads Not Converting Roofing Leads? A Contractor's Fix-It Playbook
Your roofing Google Ads are getting clicks but no signed jobs. Here's how to find exactly where the money leaks out and close the gaps, from match types to call answer rates.
Retargeting Ads for Roofing Companies: A Practitioner's Operating Manual
Retargeting works for roofers as a closer, not a lead source. The audiences, budget math, compliant storm creative, and measurement that turn warm visitors into booked inspections.
Roofr Review for Roofing Contractors: Is It Worth It?
A practitioner's take on whether Roofr is worth it for your shop — what it does well, where it leaves gaps, and how to match the tool to your actual bottleneck.