Why Percent-of-Revenue Beats a Flat Dollar Number
Every plumbing owner asks the same question a different way: "What should I spend?" The honest answer scales with the business, not a flat figure pulled from a franchise playbook. A $400,000 residential service outfit and a $3M shop running repipes, remodel plumbing, and commercial service contracts are not the same marketing problem, and they shouldn't have the same budget.
Percent-of-revenue works because marketing spend should track the size of the mouth you're feeding. A bigger book of business means more trucks to keep running, more techs to keep dispatched, and more territory to defend from the plumber down the road who just started running ads. The 7-12% range isn't arbitrary. It's what it typically takes to keep a map pack position, hold page-one organic rankings for the terms that pay (repipe, water heater replacement, sewer line), and run enough paid volume to fill the gaps when the phone goes quiet.
Where a shop falls in that range depends on three things: how competitive the metro is, how much of the current business already comes from repeat and referral (which needs less paid marketing to sustain), and whether the goal is holding position or taking share from someone else. A plumber in a mid-size metro with three serious competitors bidding on the same emergency keywords will sit closer to 10-12%. A plumber in a smaller market with light digital competition can often hold rank at 7-8%.
- Under 5%: usually under-investing. Rankings erode, ad spend gets outbid, and the shop becomes dependent on truck wraps and word of mouth alone.
- 7-12%: the working range for most established residential/light-commercial plumbers.
- Over 15%: usually a shop in an aggressive growth push, opening a new territory, or recovering from a rebrand.
None of this replaces a real conversation about your specific numbers. It's a starting frame, not a rule carved in a sign board.
The Emergency-Call Math That Changes Everything
Plumbing is not landscaping. A homeowner with a backed-up main or a burst supply line at 2am isn't comparison shopping three quotes over a week. They're calling whoever answers first and shows up. That single fact should shape the entire budget, not just the ad account.
Here's what it means in practice. Paid search (Google Ads, Local Services Ads) captures the customer who is actively searching right now, at the moment of the emergency. That's expensive per click, but it's the only channel that reliably shows up in the exact 10-minute window a burst pipe creates. Organic map pack position and AI-search visibility (being the answer ChatGPT or Google's AI Overview gives when someone asks "plumber near me open now") capture the same intent without a cost-per-click, but they take months to build and can't be turned on overnight.
The budget mistake we see most often: a plumbing owner puts everything into paid ads because it's the fast lever, and none into organic because it's slow. That works until the ad account gets outbid, or Google changes the auction, and the phone goes quiet with nothing behind it. The fix isn't abandoning paid. It's running both, so paid covers today's emergency calls while organic and AI-search visibility build toward not needing to pay for every single one of them in two years.
| Budget allocation | What it wins | Time to results |
|---|---|---|
| Google Ads / LSA (35-45%) | Immediate emergency and same-day calls | Live day one |
| SEO + map pack (30-40%) | Compounding organic calls, no per-click cost | 4-9 months for competitive terms |
| AI-search visibility (10-15%) | Being the cited answer in AI Overviews and chat assistants | Builds alongside SEO |
| Reviews / reputation (5-10%) | The click, once you're found | Ongoing |
That split isn't universal, but it's the shape that respects how plumbing customers actually search and decide.
What Actually Moves the Needle for Repipes and Water Heaters
Drain calls and small leak fixes fill the schedule but rarely fill the bank account. The margin lives in repipes, water heater replacements, and sewer line work, and those jobs get sold differently than a same-day drain clear. A homeowner replacing a 20-year-old water heater or facing a whole-house repipe estimate is doing more research than someone with an active flood. That's where your website and your reviews carry more weight than your ad copy.
Budget should reflect that split in intent. The emergency drain call converts off a fast-loading site (under 2 seconds), a phone number that's one tap away, and a map pack listing with recent reviews. The repipe and water heater customer converts off proof: photos of past work, clear explanation of process, financing options if you offer them, and a site that reads like a shop that's been doing this a long time, not a template thrown up last month.
This is also where a generalist marketing shop gets plumbing wrong. They'll optimize a plumbing site the same way they'd optimize a florist's site: pretty photos, generic "contact us" forms, no urgency path. A plumbing site needs a 24/7 booking path that assumes someone might be standing in two inches of water while they fill it out, and it needs a separate content and page strategy for the high-ticket jobs that pays for the trucks.
- Emergency-intent pages (burst pipe, no hot water, sewer backup) need speed, a phone number above the fold, and after-hours proof.
- High-ticket pages (repipe, water heater replacement, remodel plumbing) need process explanation, photos, and financing or pricing transparency where you can offer it.
- Reviews should be current. A five-star average from three years ago reads as abandoned, not trusted.
Splitting budget and content strategy this way is what keeps a plumbing marketing spend from turning into a bunch of $89 drain calls instead of the water heater and repipe work that actually pays.
SEO vs. Paid Ads: Where the Dollars Should Go First
New plumbing clients often ask which channel to fund first if they can't do both at full strength right away. The honest answer depends on how urgently the phone needs to ring versus how much runway the business has.
If a shop needs calls this month, paid search and Local Services Ads are the lever. They're live almost immediately and they target the exact emergency searches ("emergency plumber near me," "burst pipe," "no hot water") that convert same-day. The tradeoff is that every call costs money for as long as the ad runs, and competitive metros can push cost-per-click on plumbing terms high enough that thin margins get squeezed on smaller jobs.
If a shop has three to six months of runway and wants calls that don't carry a per-click cost forever, SEO and AI-search visibility should get funded first, or at minimum funded alongside a smaller paid spend. Ranking for competitive plumbing terms in a real metro typically takes 4-9 months to show up meaningfully in the map pack and organic results. That's a longer runway than most owners want to hear, but it's the honest number, not a 30-day promise nobody can actually deliver.
A workable sequence for a shop starting from scratch: run paid ads at a moderate level from day one to keep calls coming while organic builds, and put the larger share of new budget into the site, local SEO, and AI-search visibility work that compounds. By month six to nine, the organic and AI-search channel should be carrying enough call volume that paid spend can either scale down or get redirected into a new service line or territory.
What doesn't work: funding paid ads exclusively for a year and never building organic. That plumber is still paying for every single call two years later, while the competitor who split the budget is getting map pack and AI Overview calls for free.
Signs You're Overspending or Underspending
Budget numbers only mean something next to results. A shop spending 10% of revenue and getting nothing for it is worse off than a shop spending 6% and converting well. Here's how to read your own numbers instead of trusting a percentage in isolation.
Underspending shows up as a specific pattern: your map pack position keeps sliding as competitors add reviews and content you're not matching, your paid ads get outbid on the terms that matter (repipe, water heater), and your site hasn't been touched in years while competitors show up in AI Overviews and you don't. If a homeowner asks ChatGPT or Google's AI answer "who's a good plumber near me" and your shop never comes up, that's an underspending problem even if your revenue looks fine this quarter, because it's a slow leak that shows up eighteen months from now as a smaller book of business.
Overspending shows up differently: cost-per-lead climbing every month with no improvement in close rate, paid ads running on branded terms you'd get for free anyway, or a marketing bill that's grown faster than the crew's capacity to handle the calls it generates. If techs are turning away work because the schedule's full, more ad spend doesn't help. That budget should shift toward retention, reviews, and higher-ticket positioning instead of more top-of-funnel volume.
- Underspending signal: map pack rank falling, competitors' review counts pulling ahead, site hasn't changed in 2+ years.
- Underspending signal: never appearing in AI-search answers for "plumber near me" type queries.
- Overspending signal: cost-per-lead rising with flat or falling close rate.
- Overspending signal: paying for clicks on your own business name.
- Overspending signal: more leads than the crew can service without turning work away.
The right number is the one where marketing spend and crew capacity are moving together, not one running ahead of the other.
Does the Budget Change by Season or Growth Stage?
Plumbing doesn't have the sharp seasonal swing that roofing or HVAC does, but it isn't flat all year either. Cold snaps drive frozen and burst pipe calls in winter markets. Summer brings more slab leaks and irrigation-adjacent work in warm climates. A budget that ignores those swings either overspends in slow months or underspends right when emergency search volume spikes.
The fix isn't a bigger annual number, it's a flexible one. Keep the SEO and AI-search visibility spend steady all year since that work compounds regardless of season, rankings built in March still pay off in a July cold snap they weren't built for. Paid ad spend is the lever to flex: push it up 20-30% during known high-call windows (first hard freeze of the season, after a major storm) and pull it back slightly in predictably slower months. Shops that run flat paid spend all year either overpay in slow months or miss volume in peak ones.
Growth stage matters as much as season. A plumbing company that's been flat for three years and wants to add a second crew needs a different budget conversation than one holding steady with a full schedule. Growth-stage spend should run toward the top of the 7-12% range, sometimes above it temporarily, because the goal isn't just replacing today's call volume, it's building enough pipeline to justify a new truck and a new hire before they're sitting idle. A mature shop that's already at capacity and just defending position can run the budget leaner, since the job is protecting rank, not expanding it.
- Steady-state shops: hold the SEO/AI-search spend flat year-round, flex paid ads with known seasonal demand.
- Growth-stage shops: budget toward the top of the range (or briefly above it) to build pipeline ahead of new capacity.
- Storm or cold-snap markets: a short paid-ad bump during the event window often outperforms a permanent increase.
The mistake to avoid is treating the marketing budget as a single number set once a year and forgotten. It should move with the calendar and with where the business actually is, not sit static on a spreadsheet from January.
A Simple Monthly Budget Example
Numbers help more than percentages in the abstract. Here's one way a mid-size residential plumbing shop doing roughly $1.2M a year might split a 9% marketing budget, which lands near $9,000 a month. This is illustrative math, not a quote. Every metro and every shop's starting position changes the real allocation.
| Line item | Monthly | Purpose |
|---|---|---|
| Google Ads / LSA | ~$3,200 | Emergency and same-day call capture |
| SEO + content (site, local pages, technical) | ~$2,700 | Map pack rank, organic repipe/water heater traffic |
| AI-search visibility work | ~$1,100 | Structured content built to get cited in AI answers |
| Review generation / reputation | ~$600 | Keeps the star rating current and the click-through high |
| Site hosting, tracking, reporting | ~$400 | Keeps the site under 2 seconds and the numbers honest |
| Reserve / testing | ~$1,000 | New service page, new geo test, seasonal push |
A shop just starting to invest in marketing might shift more toward paid in month one through six, since organic hasn't had time to build yet. A shop that's been investing for two years and already holds map pack position can often shift more of that $9,000 toward AI-search visibility and content, since the SEO foundation is doing its job and the marginal dollar buys more staying power there than another few clicks.
The exercise that matters isn't copying this table. It's building your own version with your actual revenue, your actual competition, and an honest look at where your calls are coming from right now.