NEW Partner With Us Program — Zero Upfront Costs Learn More →
Let's Talk →
Let's Talk →
Marketing

How to Track Marketing ROI for Your Plumbing Company

This guide shows plumbing company owners how to track marketing ROI for plumbing by connecting call tracking, CRM data, and job revenue to each lead source. It walks through building a tracking system that ties every marketing dollar to an actual invoice, replacing guesswork with real numbers.

Dustin Cucciarre September 14, 2026 9 min read

Most plumbing companies can tell you what they spent on Google Ads last month. Almost none can tell you which channel actually put a paid job on the books. That gap is where budget quietly leaks out every single month. This guide walks you through building a real tracking system, one that connects every dollar of marketing spend to an actual invoice, so you stop guessing and start managing your marketing like a business owner instead of a hopeful advertiser.

Before you start, pull up your Google Ads or GA4 account, your call tracking or CRM data, and last month’s job revenue broken out by lead source. You’ll need all three to make this work.

Step 1: Put call tracking and source tagging on every lead channel

Between 40% and 70% of plumbing leads come in by phone, not through a web form. If you’re running one general business number across your website, Google Business Profile, and every ad campaign, you have no way to know which channel actually generated that call. This is the single most common reason plumbing owners can’t answer basic ROI questions.

Fix it by assigning a unique tracking number to each channel: one for Google Ads, one for organic and Local SEO traffic, one for Facebook, and one for your Google Business Profile listing. Most call tracking platforms let you set this up in an afternoon, and many CRMs built for home service businesses include it natively. When a call comes in, the number dialed tells you the source before the customer says a word.

For web forms, tag every link you run in ads or social posts with UTM parameters, the small text strings added to a URL that tell your analytics platform exactly which campaign, ad, or channel the click came from. Make sure those UTM tags pass through into your CRM when a lead submits a form, not just into Google Analytics. If they stop at the analytics layer, your sales team will never see them, and every online lead gets lumped under “direct” or “unknown,” which is functionally the same as having no data at all.

This is attribution: the practice of connecting a specific outcome (a call, a form fill, a booked job) back to the marketing channel that caused it. Without it, every number you calculate later in this process is a guess dressed up as a metric.

Step 2: Calculate cost per lead and cost per booked job by channel

Once leads are tagged by source, the math gets simple. Cost per lead is your monthly channel spend divided by the number of tracked leads that channel produced. Cost per booked job takes it one step further: divide that same spend by the number of leads that actually turned into a paid, scheduled job.

These two numbers tell very different stories. A plumber running Google Ads might pay somewhere in the $18 to $35 range per lead, which is typical for home service plumbing campaigns. That looks fine on paper. But if only one in ten of those leads books, the cost per booked job could be north of $300, and now the campaign needs a hard look regardless of how cheap the leads seemed.

Compare your numbers against what’s typical for the industry. Google Ads generally runs $18 to $35 per lead for plumbers. Local SEO, once a Google Business Profile and website have built up 12 months or more of authority, can bring cost per lead down to the $7 to $15 range, making it one of the most efficient long-term channels available. Facebook typically lands between $10 and $25 per lead, though close rates on social leads tend to run lower since the intent isn’t as immediate as someone actively searching for a plumber.

Track close rate by channel separately from cost per lead. A channel that produces leads at $12 each but converts at 5% is delivering worse economics than one charging $30 a lead with a 40% close rate. Cheap leads that go nowhere are the most expensive mistake in this whole process, because they look good on a lead-volume report while quietly draining budget.

Step 3: Connect every lead to actual job revenue, not just a booked call

A booked call is a milestone, not a result. The number that matters is what the customer actually paid once the technician left the job site. Log the final invoice amount against the original lead source in your CRM or, if you’re not there yet, a spreadsheet that gets updated every time a job closes out.

This step exposes a distortion that trips up a lot of plumbing owners: averaging small tickets with large ones. A $180 faucet repair and a $9,000 repipe both count as “one job,” but they are not remotely equivalent in terms of what they’re worth to your business. If you average revenue per job across a channel without separating ticket size, you can end up crediting a channel for revenue it didn’t really drive, or blaming a channel that’s actually bringing in your best customers.

Break your data into at least two tiers: small and mid-size service calls, and large-ticket work like water heater replacements, repipes, or full system installs. Then look at which channels are producing which tier. It’s common to find that Google Ads and Google Business Profile drive a high volume of smaller emergency repairs, while organic search and referrals bring in a smaller number of bigger installation jobs.

Neither pattern is automatically better. A channel that produces twenty $200 jobs a month and a channel that produces three $6,000 jobs can both be profitable, but they call for different budget decisions and different follow-up processes. Judge each channel by the revenue pattern it actually creates, not by an average that blends two very different customer types into one meaningless number.

Step 4: Split emergency leads from planned maintenance leads in your data

Not every plumbing lead behaves the same way, and treating them as one pool will scramble your ROI read. Tag each incoming lead as either emergency (burst pipe, no hot water, sewer backup) or planned (fixture installation, inspection, water heater upgrade, remodel work). These two categories have almost nothing in common in terms of buyer urgency or search behavior.

Emergency leads tend to come from Google Ads and your Google Business Profile’s presence in the Map Pack, the three-listing block that appears at the top of local search results and drives roughly 42% of local search clicks. Someone with water pouring through their ceiling isn’t comparison shopping five plumbers. They call the first credible-looking result and expect a callback in minutes. These leads close fast, often with less price resistance, which makes them look extremely efficient on paper.

Planned work follows a slower path. These customers often find you through organic search or Local SEO content, research a bit, and take days or weeks to decide. If you measure this channel using the same speed-to-close standard you’d apply to an emergency lead, it will look like it’s underperforming when it’s actually just doing what planned-service leads do.

Keep these two categories separate in every report you build from here forward. A channel that looks weak against emergency benchmarks might be excellent at generating planned, higher-margin work, and blending the two will hide that from you entirely.

Step 5: Run the true ROI math against your marketing spend benchmark

With clean lead sources, close rates, and revenue attached to each channel, you can finally calculate real ROI. Add up total marketing spend for the month and total attributed job revenue, then use this formula: ROI equals revenue minus spend, divided by spend. A channel that cost $2,000 and generated $8,000 in attributed revenue has an ROI of 3, or 300%.

Run this calculation for the business overall, but don’t stop there. Check your total marketing spend against the benchmark of 8% to 12% of revenue that’s typical for local service businesses. If you’re spending well below that range, you’re likely under-investing and leaving demand on the table that a competitor is capturing instead. If you’re spending well above it without matching revenue growth, something in the funnel is inefficient, whether that’s poor call handling, weak close rates, or campaigns that were never fixed after Step 2 flagged them.

Now do the same math per channel. This is the step most plumbing owners skip, and it’s the one that matters most. A blended, company-wide ROI of 250% can look great while hiding a Facebook campaign that’s actually running at a loss, propped up by a strong Google Ads and Local SEO performance. Break it out by channel every time. If one channel’s ROI is negative, that’s not a rounding error to absorb into an otherwise decent month. That’s a specific, fixable problem.

Step 6: Build a monthly dashboard you’ll actually look at

None of this data does you any good sitting in three different systems. Pull it into one place: a single page or a single spreadsheet tab with spend, leads, cost per lead, booked jobs, revenue, and ROI, broken out by channel. Resist the urge to make it elaborate. A dashboard nobody opens is worse than no dashboard at all.

Review it on the same day every month, ideally right after invoices for the month have closed out so revenue numbers are final rather than estimated. Consistency matters more than precision here. Comparing this month’s numbers to last month’s only works if you’re pulling them at the same point in your billing cycle every time.

Set a simple rule for yourself: any channel showing rising cost per lead or falling close rate for two consecutive months gets flagged for a closer look, rather than waiting a full quarter to notice the trend. By the time a full quarter has confirmed a problem, you’ve usually spent three months of budget finding out something the second month already told you.

Step 7: Shift budget toward what the numbers actually prove works

Once you can see which channels produce real, profitable jobs, move your budget accordingly, but do it carefully. Shift spend from your weakest-ROI channel to your strongest in increments of 10% to 20%, not all at once. Plumbing demand shifts with weather and season, so one strong or weak month for a channel isn’t automatically a trend worth betting your whole budget on.

Give new channels and new campaigns a fair runway before judging them. Most marketing efforts need a 30 to 90 day ramp period to find their footing. Local SEO is the clearest example: it can take 12 months or more of built-up authority before it settles into that $7 to $15 cost-per-lead range. Pulling budget from Local SEO after two slow months means quitting right before it starts paying off.

Plan to revisit this entire process quarterly. Your job mix changes with the seasons, storm damage spikes emergency demand in ways paid ads capture fast, and local competition shifts what’s actually profitable from one quarter to the next. A budget allocation that made sense in the spring might be wrong by fall. Treat this as an ongoing discipline, not a one-time fix.

What one month of clean data tells you

Run this process for one full month before drawing any hard conclusions. A single month gives you a baseline, not a verdict, but it will already start showing you which channel is booking real jobs and which one is producing calls that go nowhere. If the numbers show your marketing is costing more than it’s returning, that’s a signal to rework the channel mix and fix attribution gaps, not a reason to stop tracking altogether. The owners who quit measuring are the ones who keep repeating the same wasted spend every quarter.

Tired of spending money on marketing that doesn’t produce real revenue? We build lead systems that turn traffic into qualified leads and measurable sales growth. If you want to see what this would look like for your business, we’ll walk you through how it works and break down what’s realistic in your market.

Share
Keep reading

More from Marketing