How to Calculate Marketing ROI for Service Businesses (When Every Job Worth Is Different)
To calculate marketing ROI for a service business with variable job values, use revenue, not lead counts: (Revenue attributed to a channel minus marketing cost) divided by marketing cost, times 100. Then apply your gross margin so you measure profit, not top line. Marketing attribution ties each closed job back to the channel that produced it.
The trap is simple. A capacitor replacement and a full system changeout both register as one lead in your ad platform. Averaged together, they hide which channel is feeding you the work that actually pays the bills. TruLata builds marketing attribution and live reporting dashboards for local service businesses across the United States, counting leads from your own forms rather than from the ad platform's optimistic conversion column.
Why does counting leads give service contractors the wrong ROI?
Lead count is a volume metric. Revenue is a value metric. When job sizes range from a small diagnostic call to a five-figure install, the two can point in opposite directions.
Consider two channels producing the same number of leads in a month. Channel A generates mostly emergency repair calls that close fast at low ticket. Channel B generates fewer, slower-closing replacement quotes at high ticket. On a cost-per-lead report, A looks like the winner. On a revenue-per-dollar report, B may be carrying the business. Cutting B because the dashboard said "cheaper leads over here" is one of the most expensive mistakes a contractor can make.
This is the same distortion we've written about in marketing dashboards where metrics don't equal jobs. Impressions, clicks and raw lead counts feel like progress. They are inputs. Booked revenue is the output.
The three numbers most contractors are missing
- Job value per closed lead, not an average across all jobs.
- Close rate by channel, because a channel that produces tire kickers is not comparable to one that produces ready buyers.
- Gross margin by service type, because revenue that costs you 70 percent in parts and labor is not the same revenue as a high-margin maintenance agreement.
What is the marketing return on investment formula?
Start with the standard version. As Salesforce explains in its marketing ROI guide, you subtract marketing costs from the revenue generated by that campaign, divide by the marketing costs, and multiply by 100 to get a percentage.
Marketing ROI = ((Revenue attributed to marketing minus Marketing investment) / Marketing investment) x 100
Demandbase walks through the classic version: spend 50,000 dollars on a campaign, close 200,000 dollars in attributed revenue, and your ROI is 300 percent. Clean math. It only works if the revenue figure is real and the attribution is honest.
Improvado notes that a comprehensive calculation should include all costs, from ad spend to salaries, not just the media bill. For a contractor that usually means ad spend, software, the portion of a staff salary spent on marketing, content production and any lead purchase fees.
Why the basic formula overstates your return
Revenue is not profit. Amazon Ads recommends refining the formula by subtracting organic sales growth, using gross or net profit instead of revenue, and including all relevant costs. That single adjustment changes the picture for most service businesses, because a job that sells for a given amount may only retain a fraction of it after parts, labor and truck time.
Gross margin is the percentage of revenue that exceeds the cost of goods sold, calculated as (revenue minus COGS) divided by revenue times 100, per NEWITY's small business marketing ROI breakdown. Track it by service category and you can double down on high-margin offerings instead of high-volume ones.
How do you calculate ROI by marketing channel when job values vary?
Here is the sequence that actually accounts for variable job values. Work it per channel, per month.
Step 1: Count leads at the form, not at the platform
Ad platforms count conversions their own way, including view-through and modeled conversions you can't inspect. Count the submission that hit your form or your phone system, and tag it with its source. This is the foundation of lead tracking counted from your own forms, and without it every number downstream inherits the platform's optimism.
Step 2: Attach outcomes to each lead
Every lead needs a final state: booked, quoted and lost, unqualified, or still open. Then attach the invoiced amount for the booked ones. If leads die in a spreadsheet between the form and the CRM, your ROI math dies with them. Our guide to CRM automation that stops losing leads in the pipeline covers the plumbing.
Step 3: Roll up revenue, not leads, by channel
Sum the invoiced revenue of every closed job traced to each channel. Now you have channel revenue. This is the number that makes a high-ticket channel visible even when its lead count is low.
Step 4: Apply gross margin
Multiply channel revenue by the gross margin for the service types that channel produces. A channel that sends installs and a channel that sends service calls should not share one blended margin.
Step 5: Subtract fully loaded cost and divide
Channel ROI = ((Channel gross profit minus Fully loaded channel cost) / Fully loaded channel cost) x 100
Step 6: Compute revenue per lead as a sanity check
Divide channel revenue by channel lead count. Two channels with identical cost per lead will often show revenue per lead that differs by a multiple. That ratio is the single fastest way to spot which channel is quietly funding the business.
How long should you wait before judging a channel?
Sales cycles differ by job type. Emergency repair closes the same day. A replacement quote can sit for weeks while the homeowner gets comparison bids. Judge a channel on a window long enough to include its slowest realistic close, and be consistent about it.
Two practical rules:
- Use cohorts, not calendar months. Measure the leads generated in January and the revenue those specific leads eventually produced, rather than January spend against January revenue from older leads.
- Separate repair ROI from replacement ROI. Mixing a same-day cycle with a multi-week cycle in one number produces a figure that is accurate for neither.
Seasonality compounds this. Demand curves shift what mix of jobs a channel delivers, which is why seasonal demand and off-season marketing spend deserve their own view rather than a flat annual average.
What makes attribution break for local service businesses?
Salesforce points to disorganized marketing data, unclear links between customer activity and business outcomes, and tracking the wrong metrics as the usual culprits. In the field, that shows up as four specific failures.
Phone calls with no source
A large share of service leads arrive by phone. If calls aren't tracked to a source, an entire channel's revenue lands in the "unknown" bucket and looks like it produced nothing.
Stale data
A dashboard refreshed overnight, or weekly, tells you about a budget decision you already can't undo. Live marketing data, refreshed when you open it, is the difference between reacting and reviewing.
Platform-reported conversions
When the platform grades its own homework, ROI inflates. Counting at the form removes the incentive problem entirely.
Response lag destroying otherwise good leads
A channel can deliver excellent leads and still show poor ROI if nobody calls back fast enough to close them. Before you cut a channel, check response time, because first response wins more jobs than bigger budgets.
What should you do with the numbers once you have them?
ROI math is only useful if it changes a decision. Three decisions it should drive:
- Reallocate toward gross profit, not cheap leads. Shift budget to the channels with the highest gross profit per dollar spent, even if their cost per lead is higher.
- Fix before you cut. If a channel has strong revenue per lead but a weak close rate, the problem is likely follow-up, not the channel.
- Set a floor. Decide the minimum acceptable return per channel in advance, then hold every channel to it consistently rather than judging by gut.
Review monthly at minimum, weekly during peak season. The math is not complicated. Getting trustworthy inputs is the hard part, which is why the reporting layer matters as much as the formula.
See your ROI by channel, calculated on real job values
TruLata's Command Center counts leads from your own forms, ties them to closed revenue, and shows ROI by marketing channel with data that refreshes when you open it. No platform-reported conversion inflation, no week-old snapshots, no averaging a small repair and a full replacement into one meaningless lead count. Book the live demo and see your own channel math.



