Skip to main content

How to Spend a Small Roofing Marketing Budget for the Most Jobs

Michael Torres, Storm Damage Specialist··30 min readRoofing Sales & Growth
On this page

A small marketing budget is not a reason you can't grow. It's a reason you can't afford to guess. When you've got $50,000 a month to spend, you can run six channels at once, let three of them lose money, and still come out ahead on the average. When you've got $2,000, one bad channel eats your whole month and you don't book the jobs you needed to make payroll comfortable.

So the real question isn't "what's the best way to market a roofing company." It's narrower and harder: with a few hundred to a few thousand dollars, where does each dollar produce the most signed contracts, and where is it just buying you the feeling of doing marketing?

What follows is a working plan, not a list of tactics. It's built around one number you'll come back to constantly — cost per acquired job — and a sequencing logic: fix the free things first, then the cheap-and-controllable things, then paid channels only after you can measure them. If you do it in that order, a $1,500 month outperforms most contractors' $6,000 month, because they're spending into leaks you've already plugged.

First, get honest about the only number that matters

Most roofers track the wrong metric. They watch cost per lead, because that's the number the lead vendor or the ad platform shows them. But cost per lead is a vanity number. A $35 lead that closes one time in twenty costs you $700 per job. A $120 lead that closes one in four costs you $480 per job. The cheaper lead is the more expensive customer.

The number that runs your whole budget is cost per acquired job (CPJ): total spend on a channel divided by the number of signed contracts that came from it. Not estimates. Not appointments. Signed jobs with a deposit or a contract.

Here's the chain you need to be able to see for every dollar:

Spend  →  Leads  →  Appointments set  →  Inspections done  →  Estimates given  →  Jobs signed

If you only know the first and last numbers, you can compute CPJ, and that's enough to start. But knowing the middle numbers tells you where a channel breaks. A channel can fail at any stage: it can produce no leads, leads that won't book, bookings that no-show, inspections that don't lead to estimates, or estimates that don't close. The fix for each is completely different, and you can't see which one you have without the funnel.

A worked example you can copy

Say you spend $1,200 in a month on local service ads and get this:

Stage Count Conversion from prior
Leads (calls/forms) 24
Appointments set 14 58%
Inspections done 11 79%
Estimates given 9 82%
Jobs signed 4 44%

Cost per lead: $50. Cost per acquired job: $300. If your average job nets you $3,000 in gross profit, that channel returns $10 of gross profit for every $1 spent. That's a keeper, and you should be feeding it more money, not less.

Now look at the weak link. Only 58% of leads became appointments. That's a speed-to-lead or a follow-up problem, and it's free to fix — it costs you nothing to call back faster. If you push that to 80%, you'd have set roughly 19 appointments instead of 14, and at the same downstream rates you'd sign 5-6 jobs on the same $1,200. Your CPJ drops to about $215 without spending another dollar. That's the whole game on a small budget: squeeze the funnel before you buy more traffic.

What CPJ should you aim for?

There's no universal target, because it depends on your average gross profit per job. A reasonable working rule for residential re-roofs: you want your blended customer acquisition cost (all marketing spend divided by all jobs) to land somewhere around 8-12% of revenue, and your CPJ on any individual channel to be no more than about 15-20% of the gross profit on the jobs that channel brings in. If a channel's CPJ is eating more than that, it either needs fixing or cutting.

Do the math for your own shop before you read another word. Pull last year's marketing spend, pull the number of jobs, divide. That single number — your current blended cost per job — is your baseline. Everything below is about beating it.

The spending ladder: free, cheap, then paid — in that order

The biggest mistake small-budget roofers make is starting at the top of the cost ladder. They buy leads or run ads before they've claimed the free traffic sitting in front of them. Work the ladder bottom-up.

  1. Free and owned — Google Business Profile, reviews, your existing customer list, referrals, neighbor canvassing around active jobs. Costs time, not money. Highest ROI on the board.
  2. Cheap and controllable — targeted direct mail and door-knocking to the right houses, yard signs, vehicle wraps, a simple fast website. Real money, but you control who sees it and you can measure it.
  3. Paid and competitive — Local Services Ads (the Google Guaranteed badge), Google Search ads, paid lead marketplaces. You're bidding against everyone. Only worth it once the first two rungs are solid and you can track CPJ.

A realistic split for a small budget that already has the free rung working:

Budget/month Owned (free, time-cost) Cheap & controllable Paid
$1,000 GBP + reviews + referrals + canvass active jobs $700 targeted mail / signs $300 LSA test
$2,500 same, plus a part-time follow-up habit $1,200 mail + canvass list $1,300 LSA + a little Search
$5,000 same, plus referral incentive program $2,000 mail + signs + wrap $3,000 LSA + Search + one lead-source test

These are starting points, not gospel. The discipline is: nothing moves up to a higher rung until the rung below it is producing. Let's walk each one.

Rung 1: The free money you're leaving on the table

Google Business Profile is your highest-ROI asset, and it's free

For a local roofer, your Google Business Profile (the map listing with reviews) drives more no-cost calls than almost anything else you can do. People search "roofer near me" or "roof repair [your town]" and the map pack — the three listings with the little pins — gets the clicks. Ranking there costs nothing but attention.

What actually moves the needle, in order:

  • Reviews, recent and steady. Volume and freshness both matter. Ten reviews this quarter beats forty from three years ago. Ask every happy customer, every time, with a direct link texted to them before you leave the driveway.
  • Categories and service area set correctly. Primary category "Roofing contractor," plus the secondary categories that fit (gutter, siding if you do it). Service area = the towns you actually work, not three counties you're hoping for.
  • Photos of real jobs. Before/after, your crew, your trucks. Add a few every month. Google reads activity as a signal, and homeowners trust real photos over stock.
  • Posts and Q&A. Cheap to keep current; both feed the algorithm and answer buyer questions before the call.

The single highest-leverage habit here is a review request system: a templated text with a one-tap Google review link, sent the moment the job passes final inspection and the customer is happy. Don't wait until you're back at the office. Don't ask in person and hope they remember. Text the link from the driveway. A crew that does this consistently will out-rank a bigger competitor who doesn't, in months.

The FTC has specific rules here worth knowing: you cannot buy reviews, you cannot offer a discount in exchange for a positive review specifically, and you can't gate reviews so only happy customers get asked. You can ask everyone for an honest review. Keep it clean — fake reviews are now subject to real penalties, and one suspended profile can erase your best free channel overnight.

Your existing customer and estimate list is pre-paid marketing

Every roofer is sitting on a list they already paid to acquire: past customers, and — bigger — every estimate that didn't close. Those people already let you onto their property, already trust you enough to get a number, and already have a roof you've laid eyes on. Reaching them again costs a text or a stamp.

Two lists, two plays:

  • Past customers are your referral engine and your repair/maintenance base. A roof you installed eight years ago has neighbors. A roof you installed fifteen years ago on a starter home may be coming due again, and the second roof on a house is often a bigger ticket. Stay in their inbox twice a year with something useful — a post-storm check-in, a gutter-season reminder — not a hard sell.
  • Dead estimates are the most underworked gold in the business. A homeowner who got three bids and went with someone else, or who put it off, is a known buyer with a known roof. Roofs don't get younger. The estimate you lost in 2023 because the homeowner "wanted to wait" is a roof that's now two years older and possibly storm-worn. A simple quarterly pass through old estimates — "Hey, circling back, is the roof still on your list?" — books jobs at a cost of basically zero.

The friction is knowing which of those old contacts are worth a call now. If you've got 800 dead estimates, you don't want to dial all 800 — you want the ones whose roofs have aged into the replacement window or have taken a storm since you last talked. We'll come back to how to sort that list cheaply in the data section.

Referrals: ask on purpose, make it easy, close the loop

Referred jobs close at the highest rate and the lowest cost of any source you have, and most roofers leave them to chance. Three changes turn referrals from accidental into a channel:

  • Ask at the peak. The moment of maximum goodwill is the final walkthrough, when the new roof is on and the yard's clean. That's when you say, plainly: "If a neighbor asks who did your roof, I'd appreciate you sending them my way — here's a couple of cards."
  • Make the handoff effortless. A physical card, or a referral link they can text, beats "tell them to look us up."
  • Close the loop. When a referral turns into a job, tell the referrer and thank them. A handwritten note or a small gift (a gift card, not cash, and check your state rules on referral fees) keeps the engine warm. Some states regulate or prohibit paying for referrals in certain trades — keep it to thank-you gestures, not bounties, unless you've checked.

Canvass the street you're already on

When your crew is on a roof, you've already paid to be in that neighborhood. The houses on either side and across the street have roofs the same age, built by the same developer, hit by the same storms. Knocking those doors — or hanging a branded door-hanger that says "we're putting a new roof on your neighbor's house at 14 Maple this week" — converts at a far higher rate than a cold knock three towns over. Zero incremental travel cost. This is the cheapest door-knocking there is, and it's adjacent to a visible, in-progress proof point.

Rung 2: Cheap, controllable, measurable

These cost real money, but you decide exactly who sees them, and you can track what comes back. For a small budget, this rung usually deserves the largest single share of dollars.

Targeted direct mail: cheap only if you mail the right houses

Direct mail gets dismissed as old-fashioned, but for roofing it still works — if the list is right. The math is unforgiving on a small budget, so let's run it.

A postcard mailed at a typical small-volume rate runs somewhere around $0.50-$0.80 all-in (printing plus postage) for a standard postcard via Every Door Direct Mail or a list-based send. Response rates for a cold, untargeted roofing mailer are low — often a fraction of a percent. Here's why untargeted mail bleeds a small budget:

Approach Pieces Cost (@ $0.65) Response Leads Cost/lead
Blanket the ZIP (EDDM) 5,000 $3,250 0.3% 15 $217
Mail only roofs 15+ yrs old 1,500 $975 1.2% 18 $54

Same budget territory, but the targeted send produced more leads from a third of the pieces, at a quarter of the cost per lead — because you stopped mailing brand-new roofs, rentals with absentee owners, and houses re-roofed last year. The blanket mailer spends most of its postage on people who physically cannot become a roofing customer this year.

That's the entire argument for targeting on a small budget: mail is only cheap per-job when you cut the pieces that can't convert. The variable cost of mailing a new roof is the same as mailing a worn-out one, but the return is zero.

Making targeted mail work:

  • Mail a roof age window, not a geography. Roofs in the 15-25 year range (for asphalt) are your buyers. Below that, mostly not yet; well above it, often already replaced. The narrower you aim, the lower your cost per job.
  • Repetition beats one-shots. A single postcard to a household rarely converts. Three to five touches over a season build recognition. Budget for a sequence to a small, sharp list — not one blast to a huge one.
  • One offer, one action, a real phone number with a tracked extension or a unique URL so you can attribute the response. If you can't tell which mailer drove a call, you can't compute CPJ, and you're back to guessing.
  • Tie it to a storm when there's a real one. After a verified hail or high-wind event, a mailer to the affected streets (offering a documentation/inspection, see the claims note below) lands because the timing is relevant. No real storm, no storm pitch.

Yard signs and vehicle wraps: cheapest cost-per-impression you can buy

A yard sign in front of every active job, left up for a week after, is nearly free advertising to exactly the neighborhood most likely to need you next. A wrapped truck is a billboard that drives to the job and parks in the target neighborhood for a day. Per impression, nothing beats them. They won't fill your pipeline alone, but on a tight budget they're high-leverage compounding spend — buy the wrap once, it works for years.

A fast, clear website that does one job

You do not need an expensive website. You need one that loads fast on a phone, says what you do and where, shows real photos and reviews, and makes calling or booking a one-tap action. Most roofing site "redesigns" are money spent on prettiness that doesn't change the call volume. Spend on: mobile speed, a click-to-call button above the fold, your service area in plain text, and proof (reviews, real job photos, license/insurance). Skip: animations, stock hero images, and a fifteen-page blog you'll never update.

Rung 3: Paid channels — only with a meter running

Paid channels are competitive and easy to lose money on, which is exactly why they go last. You climb here only after the free and cheap rungs are producing, because paid traffic dumped into a leaky funnel just burns faster.

Local Services Ads (the Google Guaranteed badge)

For most local roofers, Local Services Ads (LSAs) are the best paid starting point, because you pay per lead (a call or message), not per click, and the badge sits at the very top of the search results above the regular ads. You pass a license and insurance check to get the green badge, which also does some trust-building for free.

What to know:

  • You can dispute junk leads. Spam, wrong-service, and out-of-area calls can be disputed for credit. Do this religiously — it's the difference between a real cost per lead and an inflated one. Set a weekly habit of reviewing and disputing.
  • Speed-to-lead is everything. LSA ranking and your close rate both reward answering fast. A missed call is a paid lead handed to a competitor. If you can't answer live, the channel underperforms.
  • Start small and watch CPJ, not cost per lead. Set a modest weekly budget, run it a month, and compute jobs signed, not leads received. A $40 lead that never closes is more expensive than a $90 one that does.

Google Search ads

Text ads on high-intent searches ("roof repair near me," "roof replacement [town]") can work, but they're more expensive and more skill-dependent than LSAs. Roofing keywords are some of the priciest in local search. If you run Search:

  • Bid on high-intent, local, problem-specific terms ("roof leak repair [town]"), not broad ones ("roofing").
  • Send clicks to a dedicated landing page that matches the ad, not your homepage.
  • Use call extensions and a tracked number, and run it during hours you can answer.
  • Layer negative keywords hard ("jobs," "DIY," "materials," "salary") so you stop paying for clicks that will never buy.

On a small budget, treat Search as a controlled test downstream of LSAs, not your first paid dollar.

Buying leads from a marketplace can fill a slow week, but the model works against a small budget: the same homeowner is usually sold to several contractors at once, so you're racing four other roofers to the phone and competing on price the moment you arrive. Close rates are low, and you're renting a customer you'll never own again. If you test one, hold it to the same CPJ standard as everything else — and remember that you control none of the upstream (you can't improve the list, the timing, or the exclusivity). For most small budgets, the dollars do more on the cheap-and-controllable rung than here.

The data layer: how to mail and knock the right houses for less

Everything on the cheap-and-controllable rung gets dramatically cheaper per job when you stop touching houses that can't convert. The lever is knowing, before you spend a dollar of postage or an hour of a canvasser's time, which roofs are actually due.

The trouble is that the obvious data sources don't tell you. Zillow and the county assessor give you year the house was built, not the age of the roof on it today — a re-roof doesn't show up, so a 1995 house with a brand-new roof and a 1995 house on its original shingles look identical in those records. Measurement tools like EagleView, HOVER, and Roofr tell you the size and shape of a roof so you can quote it; they don't tell you which roof to knock in the first place. Those are different questions: "how big is this roof" versus "which of these 1,500 roofs is worn out."

This is the gap RoofPredict is built to fill. It reads aerial imagery to estimate roof age as a range (not an exact date — nobody can give you an exact install date from the sky, and anyone claiming to is selling you something) for the houses in an area, and it models the storms each individual roof has actually taken — hail and wind scored house by house, rather than "it hailed somewhere in this ZIP." The output is a ranked list of which roofs are most likely due, so your mail list and your knock list start with the homes that can convert and skip the new ones.

Where that changes the budget math:

  • Targeted mail. Instead of mailing 5,000 houses in a ZIP, you mail the 1,200 whose roofs fall in the replacement window. Same response rate per qualified house, a quarter of the postage — exactly the table earlier in the piece.
  • Door-knocking. A canvasser's day is finite. Pointing a crew at a ranked list of likely-due roofs instead of a random street raises doors-to-conversations-to-appointments at no extra labor cost. A green hire knocking the right doors closes something his first week, makes money, and stays — which quietly cuts your rep-churn cost too.
  • Your dead-estimate list. Run your 800 old estimates against roof age and recent storms, and you find the few dozen whose roofs have aged into the window or taken a hit since you quoted them. That's who you call first.

Honest limits, because a tight trade compares notes: roof age comes back as a range, not a birth certificate, and storm exposure is odds, not proof that a given roof is damaged — only a physical inspection confirms condition. It sharpens where you spend; it doesn't replace getting on the roof. Used that way — as a way to cut the wasted postage and wasted windshield time out of channels you're already running — it's one of the most direct ways to lower cost per job on a small budget, because it attacks the biggest leak: paying to reach people who can't buy. If that's the leak you're fighting, RoofPredict is worth a look.

A lot of small-budget roofers want to know where storm/insurance marketing fits, because a single hail event can fill a season. It can — but this is the area where a contractor most easily steps over a legal line that can cost a license or invite a lawsuit, so let's be precise about what you can and can't market.

What you can do, and market, freely: after a real, verified storm, you can offer to inspect a roof, document damage thoroughly with photos, and write an accurate repair estimate for your own scope of work. You can align that estimate to standard industry pricing (Xactimate-style line items), state plain facts about what you observed and what your repair would cost, and hand that documentation to the homeowner. That's a roofer doing roofer work, and it's a strong, honest offer in a post-storm mailer or knock.

What you cannot do — and must not put in any ad, postcard, or door pitch — in most states:

  • You may not, for a fee, negotiate, adjust, or "handle" the insurance claim on the homeowner's behalf. That's public adjusting, and it requires a separate license you almost certainly don't have.
  • You may not interpret the policy or promise what's covered, or promise a specific approval or payout amount.
  • You may not promise the deductible will be waived, absorbed, or paid for you — that's illegal in most states and a fast way to a fraud complaint.
  • You may not advertise a "free roof" or represent the homeowner against their insurer.

The safe and effective frame: you document the damage and write the estimate; the homeowner files the claim; the insurer decides coverage. You're the one who showed up fast, climbed the roof, and put accurate, photo-backed paper in the homeowner's hand. That's a real competitive edge and it's completely clean. Market the documentation and the speed, never the claim outcome.

For the budget, the practical move is: only run storm offers when there's a real, verifiable storm (check the National Weather Service and Storm Prediction Center records for the date and area), aim them at the streets that actually got hit, and lead with "we'll inspect and document it for you" rather than anything about checks or deductibles. Knowing which streets took the worst of a given storm — and which roofs on those streets were already old enough to fail — is exactly the house-by-house storm modeling described above.

Sequencing: a 90-day plan for a $2,000/month budget

Plans are easy; sequencing is what most roofers get wrong. Here's a concrete 90-day build for a small budget, ordered so each phase funds the next.

Days 1-30: plug the free leaks

  • Set up review-request texts on every completed job. Target: a review from at least half of finished jobs.
  • Audit and fix the Google Business Profile — categories, service area, fresh photos, respond to every existing review.
  • Pull the dead-estimate list and the past-customer list into one place.
  • Put a yard sign on every active job and door-hangers on the four nearest neighbors.
  • Spend: ~$200 (signs, hangers, review tool). Everything else is time.
  • The point of month one is to stop the bleeding before you add traffic. You'll likely book a job or two just from the dead-estimate calls and faster review-driven map ranking.

Days 31-60: turn on cheap, targeted, measurable

  • Build a targeted mail list: roofs in the replacement-age window in your two best towns. Mail a sequence, not a one-shot — plan three touches.
  • First mail drop: ~$900 for ~1,300 sharp pieces.
  • Start a small LSA test: ~$700 for the month, dispute junk leads weekly, answer every call live.
  • Keep the free habits running. Track every lead's source and stage in a simple sheet.
  • By the end of month two you have a real funnel table for two channels and a first read on CPJ.

Days 61-90: double down, cut, and add one test

  • Compute CPJ for mail and LSA. Feed the winner, fix or cut the loser.
  • Second mail touch to the same list (repetition is where mail pays off).
  • If LSA is converting, nudge its budget up; if Search is worth a controlled test, start a tiny, tightly-negative-keyworded campaign to a dedicated landing page.
  • Formalize the referral ask and close-the-loop thank-you.
  • Now your $2,000 is split across proven channels, and you know — with numbers, not vibes — what each dollar returns.

The principle underneath the calendar: measure, then move money toward what's working, away from what isn't, every single month. A small budget run this way compounds. A small budget sprayed across six channels with no tracking just disappears.

What pros get wrong on a small budget

A few mistakes show up over and over, and each one quietly inflates cost per job:

  • Buying traffic before fixing follow-up. The most expensive lead is the one you already paid for and didn't call back fast enough. Speed-to-lead and a simple follow-up sequence are free and usually worth more than the next channel.
  • Mailing and knocking everyone. Untargeted reach feels like progress but spends most of the money on people who can't buy this year. Cut the pieces that can't convert before you add pieces.
  • Watching cost per lead instead of cost per job. The cheapest lead is often the most expensive customer. Always run the chain through to signed jobs.
  • Running too many channels at once. With a small budget, three channels you can measure beat six you can't. Spread too thin and none of them has enough data to tell you anything.
  • One-shot campaigns. One postcard, one ad burst, one email — then declaring the channel "doesn't work." Most channels need repetition and a fair test window before you judge them.
  • No tracking at all. If you can't say which job came from which dollar, you're not marketing, you're gambling. A single spreadsheet with source and stage per lead is enough to start.
  • Pretty over fast. Spending the budget on a beautiful website or glossy brochure while the phone goes to voicemail. Function and speed beat polish.
  • Crossing the claims line in storm ads. Promising a free roof or a waived deductible to win storm work is a license-and-lawsuit risk that's never worth it. Market the documentation, not the claim.

A simple tracking sheet you can build today

You don't need software. A single spreadsheet with one row per lead and these columns runs the whole system:

Column Why it's there
Date Spot seasonal patterns and response lag
Source/channel The whole point — attribute every lead
Stage reached Lead → appt → inspection → estimate → signed
Job value Weight channels by dollars rather than counts alone
Notes Why it stalled, what objection came up

At month's end, pivot by source: leads, jobs, spend, and CPJ per channel. That table is your budget meeting. It tells you, in numbers, where next month's money goes. Update it as leads come in, not once a quarter — the value is in the habit.

Seasonality: when to spend and when to bank it

A small budget runs out of room fast, so timing matters more for you than for a big shop that spends evenly all year. Roofing demand is seasonal, and your dollars buy different amounts of work depending on when you deploy them.

The general shape, for most of the country:

  • Late winter / early spring is the smartest time to load owned and cheap channels. Homeowners start thinking about the roof as the weather warms, competition hasn't ramped its ad spend yet, and the work you book now fills your spring schedule. A targeted mail sequence that lands in February-March often outperforms the same sequence in June, because you're early to the buyer's decision.
  • Storm season (regionally variable — hail in spring through early summer across much of the middle of the country, wind and tropical events later) is when storm-triggered spend pays, but only when there's a real event. Hold a reserve so you can move quickly after a verified storm rather than having your whole budget already committed.
  • Late fall is a quiet window where reactivation beats acquisition. Your dead-estimate list and past customers are cheaper to work than buying new traffic into a slowing market. Push referrals and "beat the winter" repair messaging instead of expensive cold reach.
  • Deep winter in cold climates is the time to bank budget and invest in the free rung: clean up the Google profile, gather reviews from the fall's jobs, build next spring's mail list. Don't burn ad dollars bidding for a homeowner who won't put a crew on the roof in January.

The discipline is to front-load controllable spend before demand peaks and hold a storm reserve, instead of spreading evenly and being out of money the week a hailstorm hands your town a season's worth of work.

Branding on a budget: consistency beats spend

You can't out-spend a big competitor on brand. You can out-consistent them, and on a small budget that's where brand dollars actually pay off. A homeowner who's seen your truck in the neighborhood, your sign in a yard, and your name on a door-hanger recognizes you when your postcard arrives — and recognition raises response on every other channel at once. That compounding is free; you just have to be consistent.

What this means in practice:

  • One look, everywhere. Same colors, same logo, same phone number on the truck, the signs, the shirts, the postcards, and the website. Cheap to enforce, and it makes a small operation look established.
  • Wraps and shirts are brand spend that doubles as proof. A clean wrap and crew in matching shirts read as "real company" to a nervous homeowner deciding between you and three others. That trust shows up as a higher close rate — a brand expense that pays back through the funnel, not a vanity cost.
  • Skip the expensive rebrand. A small shop does not need an agency logo refresh or a brand-guidelines document. It needs the basics applied consistently for years. Money spent making the existing look sharper and more uniform beats money spent reinventing it.

Brand is a multiplier on the channels you're already running, not a separate channel. Treat it that way and a few hundred dollars of consistency lifts everything.

Reading the numbers: a sample monthly budget meeting

Here's what a real budget decision looks like once you've got a month of tracked data. Suppose your $2,000 produced this:

Channel Spend Leads Jobs Cost/lead Cost/job
Targeted mail $900 16 4 $56 $225
Local Services Ads $700 19 3 $37 $233
Referrals / reviews $0 (time) 9 4 $0 $0
Search ads (test) $400 11 1 $36 $400

Read it the way a practitioner does, not the way the platforms want you to:

  • The platform tells you LSA "wins" on cost per lead ($37). Cost per job says mail and LSA are roughly tied, and both are healthy if your gross profit per job is several thousand dollars.
  • Referrals are the real winner and cost you nothing but the habit of asking. The lesson isn't "cut paid" — it's "the free rung is producing, so keep feeding it attention, and let it lower your blended cost per job."
  • Search at $400/job is the weak channel, but don't kill it on one month of one job — eleven leads is a small sample. The smarter play is to tighten it: more negative keywords, a better-matched landing page, narrower high-intent terms. Give it one more month with those fixes, then decide. If it's still the laggard, that $400 moves to a second mail touch.
  • Next month's money: hold mail and LSA, push a little more into the proven one, run the Search fix-it test once more, and put zero new dollars anywhere you can't see the funnel. That's the entire meeting — fifteen minutes with one table.

This is what "spend for the most jobs" looks like in operation: a monthly habit of moving money toward measured returns. The contractor who does this with $2,000 books more work than the one who spends $6,000 on autopilot, because the autopilot shop never sees which dollars are dead.

Common questions about scaling the budget up later

A small budget is a starting point, not a ceiling. The plan above is built so that scaling is just "do more of what's already measured to work," not a fresh round of guessing. When jobs and cash allow you to step up:

  • Raise the proven channels first. If targeted mail returns $10 of gross profit per dollar, a bigger mail program is the safest growth dollar you have — you already know the return. Most shops jump to a new shiny channel instead and re-learn lessons they'd already paid for.
  • Add capacity before you add spend. More marketing into a team that can't answer the phone live or get on roofs fast just inflates cost per job. Speed-to-lead and crew availability are the constraints that cap how fast marketing can grow; fix those alongside the budget.
  • Only then test a genuinely new channel, small and measured, the same way you tested the first ones. One new test at a time, held to cost per job, funded by the surplus the proven channels throw off.

Growth that respects the funnel math compounds. Growth that abandons it the moment there's money to spend just rebuilds the leaky bucket at a larger size.

Putting it together

A small roofing marketing budget wins by being disciplined where big budgets get to be sloppy. Run the funnel math on cost per job, not cost per lead. Climb the spending ladder from the bottom: claim the free traffic (Google Business Profile, reviews, referrals, your dead-estimate list, the neighbors of your active jobs) before you spend a dime; then put the bulk of real dollars into cheap, controllable, measurable channels — targeted mail and smart canvassing aimed only at roofs old enough to be due; and reach for paid channels last, with a meter running on every one.

The single biggest lever for a tight budget is cutting the houses that can't convert out of every channel you run — the new roofs, the recently-replaced, the streets a storm never touched. That's where knowing which roofs are actually due, house by house, turns a $2,000 month into more signed jobs than a sloppy $6,000 one. If sharpening that list is the leak you're fighting, that's the gap RoofPredict was built to close — honestly, as a range and a probability, to point your existing dollars at the doors that can pay them back. Then go book the work.

FAQ

How much should a roofing company spend on marketing?

A common working range is roughly 8-12% of revenue for an established residential roofer, but the better way to think about it on a small budget is by return, not percentage. Spend whatever produces a cost per acquired job below about 15-20% of the gross profit on the jobs that spend brings in, and feed the channels that beat that bar while cutting the ones that don't. Start with the free and owned channels, which return the most per dollar, before committing a large percentage to paid.

What's the difference between cost per lead and cost per job, and which should I track?

Cost per lead is total spend divided by leads received; cost per acquired job (CPJ) is total spend divided by signed contracts. Track CPJ. A cheap lead that rarely closes can cost far more per actual job than an expensive lead that closes often, so cost per lead routinely points you at the wrong channel. Always run the math through to signed jobs.

Is direct mail still worth it for roofers on a small budget?

Yes, but only if the list is targeted. A blanket mailer to a whole ZIP spends most of its postage on new roofs, rentals, and recently re-roofed homes that can't convert. Mailing only houses with roofs in the replacement-age window (roughly 15-25 years for asphalt) typically produces more leads from far fewer pieces at a much lower cost per job. Plan a sequence of three to five touches, not a one-shot, and use a tracked phone number or URL so you can attribute responses.

Are Local Services Ads better than buying leads from a marketplace?

For most small budgets, yes. Local Services Ads charge per lead (a real call or message), put the Google Guaranteed badge at the top of results, and let you dispute junk leads for credit. Marketplaces usually resell the same homeowner to several contractors at once, so you compete on price and speed and close at a lower rate. If you test a marketplace, hold it to the same cost-per-job standard and remember you control none of the upstream list quality.

How do I figure out which houses to mail or knock without wasting money?

The key is roof age and storm exposure, neither of which county records or Zillow show accurately — those list the year the house was built, not the age of the current roof, so a re-roof is invisible. Measurement tools like EagleView and HOVER tell you a roof's size, not its age or which to target. Tools that estimate roof age from aerial imagery as a range and model storms house by house, like RoofPredict, let you mail and knock only the homes likely to be due, cutting the wasted postage and windshield time that inflate cost per job.

What's the single highest-ROI free thing a small roofer can do?

Build a review-request habit on your Google Business Profile: text every happy customer a one-tap review link the moment the job passes final inspection, from the driveway. Recent, steady reviews drive your ranking in the local map pack, which is where most no-cost 'roofer near me' calls come from. It costs nothing and compounds over months, and a consistent shop will out-rank a bigger competitor who doesn't do it.

Can I advertise that I'll handle a homeowner's insurance claim after a storm?

No. Negotiating, adjusting, or handling an insurance claim for a fee is public adjusting and requires a license you likely don't have in most states. You also can't interpret policy coverage, promise a specific payout or approval, promise to waive or absorb the deductible, or advertise a 'free roof.' What you can market is documentation: you inspect, photograph the damage, and write an accurate repair estimate for your scope, then hand it to the homeowner, who files the claim while the insurer decides coverage. Sell the speed and the documentation, never the claim outcome.

How many marketing channels should I run with a small budget?

Fewer than you think — usually two or three you can actually measure. With a small budget, six channels means none of them gets enough spend to produce reliable data, so you can't tell what's working. Pick a couple of cheap, controllable, measurable channels, track cost per job on each, and only add a new channel as a small, deliberate test once the existing ones are proven.

How do I get more out of my dead estimates and past customers?

Both are pre-paid lists you already invested to acquire. Past customers feed referrals and second-roof and repair work; reach them twice a year with something useful, not a hard sell. Dead estimates are known buyers with known roofs that only get older — a quarterly check-in books jobs at near-zero cost. To avoid dialing your whole list, sort it by which roofs have aged into the replacement window or taken a storm since you quoted, and call those first.

How fast do I need to respond to a new lead?

As close to immediately as you can manage. Speed-to-lead is one of the biggest free levers on a small budget: a lead you already paid for and called back an hour late often goes to a competitor who answered live. In the worked funnel example, fixing the lead-to-appointment rate by responding faster dropped cost per job without spending another dollar. Answer calls live during business hours and set up an instant text-back for missed calls.

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. National Roofing Contractors Associationnrca.net
  2. FTC: Soliciting and Paying for Online Reviewsftc.gov
  3. FTC Rule on Consumer Reviews and Testimonialsftc.gov
  4. USPS Every Door Direct Mail (EDDM)usps.com
  5. Google Business Profile Helpsupport.google.com
  6. Google Local Services Adsgoogle.com
  7. NOAA National Weather Serviceweather.gov
  8. NOAA Storm Prediction Centerspc.noaa.gov
  9. Insurance Institute for Business & Home Safety (IBHS)ibhs.org
  10. U.S. Census Bureau: American Housing Surveycensus.gov
  11. Bureau of Labor Statistics: Roofers Occupational Outlookbls.gov
  12. Texas Department of Insurance: Public Adjusterstdi.texas.gov
  13. National Association of Insurance Commissioners (NAIC)naic.org
  14. RoofPredictroofpredict.com

Related Articles