An orange sunset over the boardwalk and sand at Wasaga Beach.

Local SEO

Local SEO ROI for contractors: the break-even sum, job by job

Local SEO pays a contractor back when the gross profit from new jobs beats the fee. Break-even jobs a month at $949, $1,749 and $2,949, and which jobs to count.

By Lasse Pettersen ·

Local SEO pays a contractor back when the gross profit from the new jobs it brings in is bigger than the monthly fee. Divide the fee by what one job leaves after materials, wages and subcontracts, round up, and you have the number of extra jobs a month the work has to produce. At the Canadian average for specialty trades, one $4,000 furnace replacement covers a $949 or a $1,749 retainer, and two cover $2,949.

The division is the easy part. The hard part is deciding which jobs belong on the top line, and staying patient through the months when that line is still empty. Whether you are weighing local SEO across Collingwood for a single-town HVAC crew or a retainer for one that works the whole shoreline, the method below is the one we would use on our own books.

Count booked jobs, not traffic

Local SEO reports are full of numbers that sit a long way from money: impressions, keyword positions, profile views. None of them goes on the top line of a return calculation. The only input that does is a booked job from a new customer who found you through a Google search, with the invoice attached.

A roofer in Thornbury earns nothing from a better position until a homeowner phones about a leak and agrees to a quote. If you want the wider list of what counts as progress along the way, the post on what local SEO should deliver covers it. For the return, keep it to jobs.

Gross profit per job, not the invoice

The usual return formula multiplies leads by close rate by average job value, then sets that revenue against the fee. That overstates the return for every trade, because a contractor does not keep the invoice. Materials, wages and subcontractors come out first.

Statistics Canada data, published by Innovation, Science and Economic Development Canada, gives a fair starting point. For specialty trade contractors in Canada with annual revenue between $30,000 and $5,000,000, the average gross margin is 48.4 cents on every dollar of revenue, once materials, wages and subcontracts are paid. Overhead, including any marketing retainer, comes out of that.

Two cautions. That is an average across every specialty trade, from electricians to roofers, so your own job costing beats it. And the right number for this sum is the gross margin, not the net, because the retainer is an overhead cost you are testing. Your accountant can give you the real figure for your own books.

Local SEO ROI on a big ticket versus a small one

A high-ticket job needs very few traced customers to break even. A small repair needs volume, so the sum leans on how many calls the profile brings in a month and on repeat work. Neither trade is a worse candidate for local SEO. They read the same sum differently.

Break-even jobs a month at each retainer

Our retainers are published in full with our Ontario local SEO pricing: Foundation costs $949 a month for a single-town business, Multi-town costs $1,749 for operators across several towns, and Trades Premium costs $2,949. Which one fits depends mostly on how many towns you need to show up in.

Two contractors measure and cut trim boards with a miter saw on a work table inside a bright room under renovation.

The table uses HVAC prices from a Canadian renovation cost guide: ductwork modification or repair at $300 to $1,500, and a natural gas furnace replacement at $4,000 to $7,000. Each invoice is cut to the average gross margin of 48.4 cents on the dollar, then divided into the fee and rounded up to whole jobs, because nobody books half a furnace.

Job, invoiced atFoundation, $949 a monthMulti-town, $1,749 a monthTrades Premium, $2,949 a month
Ductwork repair, $3007 jobs13 jobs21 jobs
Ductwork repair, $1,5002 jobs3 jobs5 jobs
Furnace replacement, $4,0001 job1 job2 jobs
Furnace replacement, $7,0001 job1 job1 job

Find the row closest to your own work. If the jobs in that row look easy to trace in a normal month, the return case is strong. If the row asks for more new customers than your phone gets from Google in a busy month, a bigger tier is the wrong place to start, and the cheaper fix is usually the profile itself. The Ontario local SEO cost guide explains what each band of price buys.

The four tests a job must pass

This is the step that decides whether the number means anything. Count a job only when all four of these are true:

A checklist of four tests a job must pass to count toward local SEO return: new customer, found by Google search, not from ads, referrals or directories, and booked and invoiced.
All four tests must be true. A repeat customer, an ad click or a quote without an invoice stays off the top line.
  1. The customer is new to you. A repeat customer would have called anyway.
  2. They found you by searching Google, in the Map Pack or the results below it.
  3. They did not come through a paid ad, a referral or a directory listing.
  4. The job was booked and invoiced, not only quoted.

Where the counts come from

Three sources, used together, get you close enough to decide on.

The profile’s call count is a ceiling. Google’s own help page defines a call as the number of times a customer clicked the call button on your Business Profile. It also states that the performance data includes actions from both organic results and Google Ads. So if you run ads, the profile’s call count mixes paid and unpaid calls, and it counts taps, not conversations.

A tracked number on the website. A separate number on the site, or a click-to-call event, tells you which calls came from the pages rather than the profile.

One question at booking. Ask every new caller how they found you, and write the answer on the job sheet from a short fixed list: Google search, Google Maps, an ad, a referral, a truck sign, a repeat customer. This is the only source that follows the customer all the way to the invoice, which is why we would trust it over the other two when they disagree.

Contractor SEO return when you also run ads

If you pay for ads, keep the ad jobs out of the SEO column even when the customer says “Google”. Ask whether they clicked an ad or a listing, and write the answer down the day they call. If your ads account cannot tell you which calls it paid for, that is a separate problem, and our Google Ads management for trades page covers how we report ad spend as calls and booked jobs.

When the running total turns positive

The return on local SEO is negative at the start, and that is normal. In an Ahrefs poll of 3,680 people on LinkedIn and X, the typical answer was three to six months before SEO shows results. Our own pricing page sets the same clock in writing: profile changes usually move within 4 to 8 weeks, and rankings for service pages need 3 to 6 months. The fee is paid from the first month.

So judge it on the running total, not the month. Add up every fee paid so far, set the gross profit from traced jobs against it, and ask at the end of the first quarter whether the line is heading toward the total, not whether it has crossed it.

Local SEO ROI in a smaller market

In a town where fewer rivals have finished their profiles, the climb can be shorter and the running total can turn sooner. Meaford next to Collingwood is the example we have in mind. That is our view from the work, not a measured rule, so for your own trade and town, count.

A worked example, with the arithmetic shown

Take an HVAC contractor who works several towns, so the tier that fits is Multi-town, at $1,749 monthly. Their furnace replacements invoice at $4,000, the bottom of the guide’s range, and their margin sits at the average of 48.4 cents on the dollar.

A technician in a yellow high-visibility jacket kneels beside a wall cabinet and works on a heating manifold with red valves.

One furnace replacement in a month leaves a little under half of $4,000 as gross profit, which is more than the fee. That month is positive. A month with no traced furnace jobs and only small ductwork repairs at $300 needs 13 of them to break even, so check whether your phone gets that many new customers from search in a normal month. Over a quarter, what matters is whether the furnace months outweigh the thin ones.

The example leaves out something real. A furnace customer who comes back each year for maintenance is worth more than the first invoice, but count that later revenue only once your own records show customers coming back. Projected loyalty is not a return.

What drags the return down that is not SEO

Some of the lost return happens after the search has done its job.

  • Unanswered calls. A tap that rings out on a job site is a search the fee already paid for, lost. A missed call text back sends the caller a text while you are still on the roof or under the sink.
  • Slow quotes. A quote that arrives days later can lose to one that arrived first. Follow up while the customer still remembers your name.
  • No before numbers. If you did not write down your calls and new customers before the work started, nothing afterwards can prove a return. Start that record this week. A free local SEO audit adds where you rank in the Map Pack and which businesses rank above you.

If your trucks work Collingwood and the towns around it, the Collingwood local SEO page shows what we do first in that market, trade by trade.

Frequently asked questions

How do I calculate local SEO ROI as a contractor?

Add up the gross profit from booked jobs with new customers who found you on Google, not through ads or referrals. Subtract the fees you paid over the same period. Divide the result by those fees. Use a quarter or longer, not a single month.

Is local SEO still worth it in 2026 for a small contractor?

It is worth it when the break-even number of jobs is smaller than the number of new customers Google can realistically send you. Work out that number first with the table above. If it looks out of reach, start with the profile and reviews before paying for a bigger tier.

How much should a contractor pay for local SEO?

Pay what the break-even sum says your jobs can carry. Pick the tier whose row in the table you can beat in an ordinary month, not your best one, and move up only when the traced jobs show the extra towns are worth it.

Should I count calls or jobs?

Jobs. A call can be a supplier, a wrong number or a price shopper. Use calls only as a ceiling, and count the invoices that came from new customers who found you on Google.

Want this run against your own business?

Free 15-minute audit. We pull up Google together and show you exactly where you rank, where you could be in 60 to 90 days, and the cheapest moves to get there.

Free SEO Audit More Google Reviews