To calculate SEO ROI for a small business, subtract what you spent on SEO from the profit it brought in, then divide by what you spent. That formula is easy. The hard part is the profit number, because most owners can’t say which customers came from Google. So start with a number you already know, what one customer is worth to you, and work out how many extra customers a month it takes to cover the SEO bill. That break-even number tells you whether a quote is realistic before anyone forecasts traffic.
This guide covers the formula, the break-even math, the costs owners forget to count, how to track leads from Google without a marketing team, a 12-month worked example with a payback date, how to measure website growth, how to forecast before you sign anything, and when SEO is the wrong place to put the money.
The standard formula, as SEO.com and Ahrefs both write it, is:
SEO ROI = (value from organic search − SEO cost) ÷ SEO cost × 100
For a store that sells online, “value from organic search” is the revenue Google Analytics records from organic visits. For a service business that books jobs by phone or form, you have to build the number yourself:
Organic value = organic leads × close rate × average profit per job
Here is a hypothetical example. A plumbing company pays $1,000 a month for SEO. In one month, organic search brings 12 calls and form fills. The owner closes 40% of them, so about 5 jobs. Each job leaves about $400 in gross profit after parts and labor. That is $2,000 of profit against $1,000 of spend, so the ROI is ($2,000 − $1,000) ÷ $1,000 × 100 = 100%.
Use gross profit, not revenue, if you can. A $1,000 job that costs you $700 to deliver only has $300 available to pay for marketing. Revenue-based ROI looks better on paper and hides that. Most published SEO ROI guides use revenue because they are written for online stores, where revenue is the number Google Analytics hands you. A service business has to do one more step, and it’s worth doing.
A result of 0% means SEO paid for itself and nothing more. A negative number means it cost more than it returned in that period. Neither number means much in month two, because SEO results lag the spend. The 12-month example below shows how much.
The formula above needs a lead count you may not have yet. Break-even needs only two numbers you already know:
Break-even customers per month = monthly SEO cost ÷ profit per customer
If your plan is $500 a month and a new customer is worth $250 in profit, SEO has to bring in 2 new customers a month to pay for itself. Every customer after that is return.
The table below uses our own published SEO plan prices (Gold $500, Platinum $1,000, Diamond $1,250 a month) against three hypothetical customer values. The customer values are examples, not client data.
| Plan (per month) | Customer worth $250 | Customer worth $500 | Customer worth $1,500 |
|---|---|---|---|
| Gold, $500 | 2 customers | 1 customer | 1 every 3 months |
| Platinum, $1,000 | 4 customers | 2 customers | 2 every 3 months |
| Diamond, $1,250 | 5 customers | 2.5 customers | 5 every 6 months |
Read the table against your own business. A roofer or a remodeler with a $1,500 profit per job needs very few search customers to cover any of these plans. A coffee shop where a regular is worth $250 a year needs more, and needs them every month.
“Customer worth” can mean one job or the profit from repeat business over time. Lifetime value is the more generous number. If customers come back for years (dental patients, HVAC maintenance, lawn care), lifetime value is fair. If most customers buy once, use first-job profit and the break-even will be stricter. When in doubt, run it both ways. If SEO only breaks even on lifetime value, you are betting on retention as much as on rankings.
You can run your break-even numbers in our free SEO ROI calculator. Pick a plan, enter what a customer is worth, and enter how many search customers you think you could win a month. It shows the break-even count and the monthly and yearly net at your numbers. Whatever you type as customer value is what it divides by, so enter profit per customer if you want a profit-based answer. It is an estimate, not a promise of rankings or leads.

The retainer is the obvious cost. Ahrefs splits SEO spend into four groups: in-house staff (including design and developer time), freelancers and agencies, SEO tools, and content distribution or link building. For a small business, the list usually looks like this:
Put a dollar value on your time, even a rough one. If you spend three hours a month on SEO tasks and your time is worth $75 an hour, that is $225 a month the retainer doesn’t show.
Spread one-time costs over the months they help. A $1,200 batch of service pages that keeps bringing in calls for two years is $50 a month over that span, not a $1,200 hit to one month’s ROI. Count it in the month you paid it and that month will look terrible for no useful reason.
A usable number takes four habits and no attribution software.
1. Count calls and forms in Google Analytics. In GA4, form submissions and phone-number clicks can be marked as key events. Then filter the report to the Organic Search channel to see how many leads came from Google each month. GA4 credits each key event to a channel using an attribution model, so someone who found you on Google and came back later through a bookmark may not show up as organic. Treat the GA4 count as a floor. If ChatGPT and other AI tools are starting to send you visitors too, we wrote up how to track AI referral traffic in GA4.
2. Count calls from your Google Business Profile. Plenty of local customers never touch your website. They search, see you in Maps, and tap Call. Google’s Business Profile performance report counts calls (taps on the call button), website clicks, and direction requests. GA4 never sees those calls. If your SEO plan includes Business Profile optimization, add these calls to your lead count. To keep profile visits separate from other Google traffic in GA4, add UTM tags to the website link on your profile.
3. Ask every new customer how they found you. Put the question on your intake form and train whoever answers the phone to ask it. “Google” is a fine answer. “I searched for emergency plumber” is better. This catches what both reports miss, including the customer who searched you on a phone and then called from a landline. Log the answer next to the job in whatever you already use, whether that’s a CRM, your invoicing tool, or a spreadsheet.
4. Count only the lift, and leave out brand searches. If organic search already brought you 6 leads a month before SEO started, only leads above 6 belong to the SEO work. And someone who searched your business name already knew you. Ahrefs points out that when the only organic search was a branded query, SEO gets credit it didn’t earn. In the Search Console Performance report, add a query filter that excludes your business name to see what the SEO work is adding.
Track these monthly in a simple spreadsheet. Six columns are enough: total SEO cost, organic leads (GA4 plus Business Profile calls, minus your baseline), jobs closed from those leads, profit from those jobs, non-brand clicks from Search Console, and a notes column for anything unusual, like a slow season or a price change. After a few months, the ROI formula fills itself in.
Some months you’ll have leads but not closed jobs yet, especially on larger projects with a long quote cycle. In those months, value the lead instead of waiting for the sale:
Value per lead = close rate × average profit per job
If you close 1 in 4 organic leads and the average job leaves $800 in profit, each lead is worth about $200 before anyone signs. Ten organic leads that month are worth roughly $2,000, even if most of the contracts land next month.
Check your close rate by source, not overall. Leads from referrals can close at a higher rate than leads from search, because the referral did some of the selling. If you use your referral close rate for search leads, you’ll overstate SEO ROI. Your intake log from habit 3 is where that split comes from.

One month of SEO ROI tells you very little. The useful view is cumulative: total profit from SEO so far against total spend so far. Here is a hypothetical service business on a $1,000-a-month plan, with $400 in profit per new customer. The customer counts are made up for illustration, and they are new customers above the pre-SEO baseline.
| Month | New customers from SEO | Profit that month | Cumulative profit | Cumulative cost | Cumulative net |
|---|---|---|---|---|---|
| 1 | 0 | $0 | $0 | $1,000 | −$1,000 |
| 2 | 0 | $0 | $0 | $2,000 | −$2,000 |
| 3 | 1 | $400 | $400 | $3,000 | −$2,600 |
| 4 | 1 | $400 | $800 | $4,000 | −$3,200 |
| 5 | 2 | $800 | $1,600 | $5,000 | −$3,400 |
| 6 | 3 | $1,200 | $2,800 | $6,000 | −$3,200 |
| 7 | 3 | $1,200 | $4,000 | $7,000 | −$3,000 |
| 8 | 4 | $1,600 | $5,600 | $8,000 | −$2,400 |
| 9 | 4 | $1,600 | $7,200 | $9,000 | −$1,800 |
| 10 | 5 | $2,000 | $9,200 | $10,000 | −$800 |
| 11 | 5 | $2,000 | $11,200 | $11,000 | +$200 |
| 12 | 6 | $2,400 | $13,600 | $12,000 | +$1,600 |
Three different numbers come out of this one table.
Monthly ROI in month 12 is ($2,400 − $1,000) ÷ $1,000 × 100 = 140%. That is the run rate, what the program earns now that it’s working.
First-year ROI is ($13,600 − $12,000) ÷ $12,000 × 100 = about 13%. That looks thin, because it carries the slow first months.
The payback month is month 11, the first month cumulative net turns positive. Shopify’s guide makes the same point: ROI ignores how long the money takes to come back, so measure payback period alongside it.
Month 6 is the first month where that month’s profit ($1,200) beats that month’s cost ($1,000). After that, every month shrinks the hole. Add the $225 a month of owner time from earlier and the picture changes: cumulative cost at month 12 becomes $14,700, first-year ROI is about −7%, and payback moves into year two. Run your own version with real numbers and both costs in it. If you stop paying for SEO, rankings usually don’t vanish the next day, so some of the month-12 customers keep coming for a while. Don’t count on that in a plan, but don’t ignore it when you compare SEO to ads, which stop sending leads the day the budget stops.
Owners also ask a simpler question: is the website growing at all? The growth formula is the same one you’d use for sales:
Growth rate = (this period − same period last year) ÷ same period last year × 100
If non-brand clicks from Search Console were 900 last October and 1,200 this October, organic growth is (1,200 − 900) ÷ 900 × 100 = 33%. Those numbers are an example. Compare the same month year over year instead of month to month, because most local businesses are seasonal. A landscaper’s March will always beat January, and that says nothing about SEO.
Track growth in three layers, from earliest to latest signal:
Growing impressions with flat leads usually means the new visibility is for searches that don’t buy, or the site isn’t converting the visits. Growing leads with flat traffic is a good problem: the site is converting better, and SEO ROI rises without a single new ranking.
Before you pay anyone, you can make a rough forecast from your own Search Console data instead of an agency’s promise. Pick one service page and one main search for it, then chain these numbers:
Monthly impressions × expected click-through rate × lead rate × close rate × profit per job
A hypothetical run: a page shows up 2,000 times a month. Your top-three queries average a 5% CTR, so moving up could bring 100 visits. At a 4% lead rate that is 4 leads, at a 40% close rate about 1.6 customers, and at $400 profit each about $640 a month. Against a $500 plan that page alone clears break-even if it gets there. Against a $1,250 plan it needs help from other pages.
The forecast tells you whether the math is possible. It does not promise rankings. If you’d need a 40% click-through rate and a 20% lead rate to break even, no SEO plan fixes that, and the quote is too big for the demand. HawkSEM and Semrush both lay out longer keyword-based forecasting methods if you want more detail.
SEO.com says to wait at least six months before measuring SEO ROI, because SEO typically takes three to six months to produce results. Measuring in month two will make almost any SEO plan look like a loss, as the 12-month table shows.
Speed depends on where you start. SEO.com rates management cost, average sale value, and the site’s current SEO health as the high-impact factors in how long break-even takes, with industry as a medium one. A business with a decent site, a filled-out Google Business Profile, and a few reviews has less to fix than one with a five-year-old site that loads slowly on phones. A high-value service needs fewer wins to break even, so it gets there sooner.
Give it a fair window and agree on what you’ll judge it by before you start. Rankings and impressions in Search Console usually move before leads do. If those leading numbers haven’t moved after four to six months, ask why.
There is no honest universal benchmark for a “good” SEO ROI. Published averages mix online stores, SaaS companies, and local service businesses, and many don’t say how costs were counted. A more useful test is cost per new customer, which you can compare against channels you already pay for:
SEO cost per customer = monthly SEO cost ÷ new customers from SEO that month
In the example above, month 12 works out to $1,000 ÷ 6 = about $167 per customer. Pull the same number from your Google Ads account, your lead-service bills, or your direct mail spend. If SEO costs less per customer than the alternatives and the trend is falling, it is earning its place in the budget, even while first-year ROI is still small.
Most bad SEO ROI math comes from a handful of repeat errors. Check your spreadsheet for these before you decide anything.
Counting the same customer twice. A homeowner can tap Call on your Business Profile, visit the site a day later, fill out the form, and tell your office “Google” on the phone. That is one customer showing up in three places. Match leads to jobs by name or phone number once a month, and count each job once.
Using revenue for a service business. Revenue ROI on a job with thin margins can show a healthy percentage while the business loses money on the marketing. Use gross profit per job, as in the plumbing example.
Giving SEO credit for brand searches and the old baseline. People who already knew your name, and the leads you got from Google before the work started, would have come anyway. Subtract both.
Judging the program in the wrong window. Months one to five of the example each lose money. Agree on a six-month checkpoint and a twelve-month review before the first invoice.
Leaving costs out. Owner time, setup work, and the website fixes SEO turned up belong in the cost column. Leave them out and ROI looks better than the bank account does.
An honest break-even sometimes says no. SEO is a poor fit when:
In those cases, spend the money on the bottleneck. Run the break-even again in six months.
If the break-even number looks reachable for your business, our small business SEO plans list what each tier includes, the plans are month to month, and the first audit is free.