Marketing ROI tells you whether a marketing channel gave you back more than it took. For a trades business the honest formula is: (gross profit from jobs the channel produced − total cost of the channel) ÷ total cost of the channel. A result above zero means it paid for itself. This worksheet takes you through every channel you used last year, with an invented example and blank tables to print.
You will need: twelve months of marketing invoices and ad bills, a list of completed jobs with their source if you have one, and your gross profit per job from the job value worksheet.
The formulas on one page
| Measure | Formula | What it tells you |
|---|---|---|
| Cost per lead | Channel cost ÷ leads | How cheaply the channel produces enquiries |
| Booking rate | Booked jobs ÷ leads | How well you turn enquiries into work |
| Cost per booked job | Channel cost ÷ booked jobs | What a paid job really costs to win |
| Gross profit produced | Booked jobs × avg gross profit per job | What the work was worth to you |
| ROI | (Gross profit produced − channel cost) ÷ channel cost | Whether the channel paid, and by how much |
Notice that cost per lead is first, but ROI is last. A channel can have a cheap cost per lead and a terrible ROI if those leads rarely book or only want small jobs.
Worked example: a landscaping and hardscape company
Invented figures for a business with two crews in a mid-sized Canadian city. Average gross profit is $1,400 per job across their mix of patio, planting and maintenance contracts.
Step 1: list every channel and its full cost
| Channel | What's included | 12-month cost |
|---|---|---|
| Google Ads | Ad spend plus management fee | $14,400 |
| Google Business Profile and website | Hosting, updates, photos | $3,000 |
| Home-show booth | Booth, display, two days' crew wages | $5,200 |
| Directory listing | Annual fee | $2,400 |
| Vehicle wraps | Cost spread over five years | $1,600 |
The wrap cost $8,000 and is expected to last five years, so one fifth goes on this year's sheet. Do the same for any marketing that lasts longer than a year.
Step 2: count leads and booked jobs by source
| Channel | Leads | Booked jobs | Booking rate |
|---|---|---|---|
| Google Ads | 180 | 30 | 17% |
| Google profile and website | 95 | 26 | 27% |
| Home show | 70 | 6 | 9% |
| Directory | 22 | 2 | 9% |
| Wraps and signage | 15 | 6 | 40% |
| Referrals and repeat | 40 | 28 | 70% |
| Unknown | 30 | 9 | 30% |
Referrals cost nothing in direct marketing, so they get no ROI line, but they belong in the table so you can see them.
Step 3: calculate ROI
| Channel | Cost | Booked jobs | Gross profit at $1,400 | ROI |
|---|---|---|---|---|
| Google Ads | $14,400 | 30 | $42,000 | 1.92 (192%) |
| Profile and website | $3,000 | 26 | $36,400 | 11.13 (1,113%) |
| Home show | $5,200 | 6 | $8,400 | 0.62 (62%) |
| Directory | $2,400 | 2 | $2,800 | 0.17 (17%) |
| Wraps | $1,600 | 6 | $8,400 | 4.25 (425%) |
Check the Google Ads line: $42,000 − $14,400 = $27,600, and $27,600 ÷ $14,400 = 1.92.
Step 4: read the table
- The profile and website line looks spectacular because most of its cost is fixed and low. That is typical. It argues for keeping it healthy, using the local SEO checklist, rather than for cutting anything else.
- Google Ads is solidly positive. Its weak spot is the 17% booking rate. If faster call-backs lifted that to 25%, the same spend would book about 45 jobs.
- The home show barely clears zero once crew wages are counted. Worth asking whether those six jobs were large ones before deciding.
- The directory returned 17%. Positive, but only just, and two jobs is too few to trust. Keep it one more year with proper tracking, or drop it.
- The unknown line has nine jobs. That is $12,600 of gross profit nobody can credit. Tracking would sort it out.
Step 5: write down what you will change
A table nobody acts on is wasted ink. This owner wrote three lines under the table: return missed ad calls within the hour, ask for a review after every finished patio, and put the directory on a three-month trial with its own tracking number. Each change is small, cheap and measurable at the next quarterly sheet. That is the rhythm we recommend: fill in, decide, act, then fill in again three months later and compare.
Worksheet A: channel costs
| Channel | What's included | 12-month cost |
|---|---|---|
| ________________ | ________________________ | $________ |
| ________________ | ________________________ | $________ |
| ________________ | ________________________ | $________ |
| ________________ | ________________________ | $________ |
| ________________ | ________________________ | $________ |
| ________________ | ________________________ | $________ |
| Total marketing cost | $________ |
Worksheet B: leads, jobs and ROI by channel
Average gross profit per job (from the job value worksheet): $________
| Channel | Leads | Booked jobs | Booking rate | Cost per booked job | Gross profit produced | ROI |
|---|---|---|---|---|---|---|
| ____________ | ____ | ____ | ____% | $______ | $________ | ______ |
| ____________ | ____ | ____ | ____% | $______ | $________ | ______ |
| ____________ | ____ | ____ | ____% | $______ | $________ | ______ |
| ____________ | ____ | ____ | ____% | $______ | $________ | ______ |
| ____________ | ____ | ____ | ____% | $______ | $________ | ______ |
| Referrals and repeat | ____ | ____ | ____% | n/a | $________ | n/a |
| Unknown | ____ | ____ | ____% | n/a | $________ | n/a |
If your job types vary a lot in value, run Worksheet B once per job type instead of using a single average.
Worksheet C: decisions
For each channel, tick one box and write one reason.
| Channel | Keep | Fix | Test for 3 months | Cut | Reason |
|---|---|---|---|---|---|
| ____________ | ☐ | ☐ | ☐ | ☐ | ______________________ |
| ____________ | ☐ | ☐ | ☐ | ☐ | ______________________ |
| ____________ | ☐ | ☐ | ☐ | ☐ | ______________________ |
| ____________ | ☐ | ☐ | ☐ | ☐ | ______________________ |
| ____________ | ☐ | ☐ | ☐ | ☐ | ______________________ |
Mistakes that wreck an ROI sheet
- Using revenue. Revenue ROI makes every channel look several times better than it is.
- Forgetting fees and fixed costs. Management fees, software and the share of a wrap or sign belong in the cost.
- Counting leads as jobs. The table needs booked, completed, paid jobs.
- Small numbers. Two jobs is an anecdote. Do not cut or double a channel on fewer than ten jobs unless the cost is trivial.
- Ignoring seasons. A channel judged on three winter months may look dead when it is just early. Use twelve months or compare the same season year on year.
For context: results from our HVAC work
We use this exact framing on client work, mostly in heating and cooling. HVACDeal.ca produced 500+ leads at a 12:1 ROI, and CombiBoiler.ca reached 300% ROI. These are HVAC results, shown to illustrate the method rather than to predict a number in your trade. The results page explains what each one shows.
If your table raises more questions than it answers, our marketing ROI review fills it in with your actual records. Next, use the ad budget worksheet to plan forward. Trades.Tools is a marketing and business consulting service, not a contractor.
Frequently asked questions
What is the difference between ROI and ROAS?
ROAS (return on ad spend) is revenue divided by ad spend. ROI, as this worksheet uses it, is gross profit minus cost, divided by cost. ROAS flatters low-margin work; ROI tells you whether you actually kept money.
What ROI should a trades business aim for?
Anything above zero means the channel paid for itself in gross profit. Most owners want comfortably more than that, because gross profit still has to cover rent, office wages and the owner's pay. Set your own threshold after you see your first full table.
How do I handle jobs where I don't know the source?
Put them on their own line called unknown. Do not spread them across channels. A large unknown line is the clearest sign that tracking is the first thing to fix.
Should I include my own time spent on marketing?
If you spend real hours on social posts or quoting from a directory, yes. Put a fair hourly value on it and add it as a cost to that channel.