InsightMarketing ROIReportingAttribution
Marketing ROI tracking for service businesses: the three-number report that replaces your dashboard
Skip the full analytics dashboard. Track three numbers that tell you which channels make money: cost per booked call, close rate by source, and revenue per channel.
Main takeaway
Time to finish: one afternoon, then about 20 minutes a month to refresh.
Best for
Service businesses
Time to ship
1 afternoon
Plan for a credible first pass
Recommended next step
Campaign ROI check
Pressure-test costs and conversion assumptions before your next budget call.
On this page
Why this matters
After one afternoon you will have a report that answers the only question that matters about your marketing: which channels make you money. You'll track three numbers per source, cost per booked call, close rate by source, and revenue per channel, and you'll be able to defend or cut any line of spend with evidence instead of a hunch.
What blocks most owners today is the dashboard. You opened GA4, saw forty metrics, and closed the tab. Sessions and bounce rate don't tell you whether Google Ads paid for itself last month. The three numbers below do, and you can pull them from your CRM and ad accounts without a data team.
What you need before you start
- A way to tag every incoming lead with one source (a CRM field, or even a spreadsheet column).
- Spend totals for each paid channel for the period you're measuring (Google Ads, Local Services Ads, anything else).
- A CRM or pipeline that records which leads became booked calls and which became won jobs, with the job value.
- One consistent revenue definition, either booked revenue or collected revenue. Pick one and use it everywhere.
Framework
The step-by-step
Step 1: Tag every lead with its source
Add a single required source field to your intake. Wherever a lead enters, a form, a phone call, a walk-in, capture one value from a short fixed list: Google Ads, LSA, organic, referral, repeat. Don't track individual campaigns yet; that's a later refinement. If you skip this step, every number downstream is a guess. If a lead comes in with no source, force a default like "unknown" so it doesn't quietly vanish from the count.
Step 2: Count booked calls, not clicks
Pull the number of leads that turned into a real appointment or quote, grouped by source, for one period. A booked call is someone you actually spoke with or scheduled, not a form fill that never answered the phone. Across the lead-flow reviews we run, the most common break is counting form submissions as leads when half of them never pick up. If your numbers look too good, check whether you're counting contacts you never reached.
Step 3: Compute cost per booked call
For each paid source, divide spend by booked calls for the same window. Organic and referral have no ad spend, so their cost per booked call is your time; note that separately rather than calling it free. You should see paid channels separate immediately, one source costing far more per booked call than another. If a channel has spend but zero booked calls for the period, that's the first red flag to circle.
Step 4: Compute close rate by source
Divide jobs won by booked calls, per source. This is where channels that looked equal pull apart. A source can be cheap per call and still lose money if its leads never close. Pull won and lost outcomes straight from your CRM pipeline stages. If your CRM doesn't mark lost jobs, you'll have to reconstruct close rate by hand this once, then fix the pipeline so next month is automatic.
Step 5: Compute revenue per channel
Sum the actual revenue from won jobs by source for the period. This is the only number that proves a channel pays its way. Use the revenue definition you chose in setup, booked or collected, and keep it consistent across every source so the comparison holds. If one expensive channel still produces the most revenue, cost per booked call alone would have misled you; that's why all three numbers sit together.
Step 6: Put the three numbers in one row per channel
Build a small table, one row per source, three columns: cost per booked call, close rate, revenue per channel. Read it left to right. The channel with a low cost per call, a decent close rate, and real revenue earns more budget. The expensive, low-close channel gets cut or sent for a closer look. You now have the report that replaces the dashboard.
Checklist
Quick audit checklist
- Every lead in the period has a source value, with no blanks silently dropped.
- Booked calls count only contacts you actually reached, not unworked form fills.
- Paid spend matches the same date window as the booked-call count.
- Close rate uses won jobs over booked calls, pulled from real pipeline stages.
- Revenue uses one definition (booked or collected) across all sources.
- The final table has one row per source and all three columns filled.
- Any channel with spend and zero won jobs is flagged for review.
Common questions
Frequently asked questions
It depends on what this report shows, not on the channel's reputation. Run LSA through all three numbers. If cost per booked call is reasonable and the close rate on those leads holds up, it's worth it. If LSA leads come in cheap but never close, the channel isn't paying and more budget won't fix the close-rate problem. The report removes the guesswork from the question.
Not to start. Multi-touch attribution answers a real question for businesses running many overlapping campaigns, which is why those keywords carry some of the highest CPCs we see. For a service business with a handful of channels, last-touch source tagging plus close rate plus revenue gets you 90 percent of the decision with 10 percent of the setup. Add attribution depth once this report stops resolving your spend questions.
Monthly for most service businesses. A single week rarely has enough booked calls to be stable, and quarterly is too slow to catch a channel going bad. Once source tagging and pipeline stages are clean, the refresh takes about 20 minutes. If your lead volume is very low, roll up to a rolling 90 days so the close rate isn't swinging on two or three jobs.
Put this into practice
Turn this insight into a ranked homepage action list
Pressure-test costs and conversion assumptions before your next budget call.
