Skip to content

How to Measure SEO ROI Without Fooling Yourself (Formula and Setup)

A plain formula for SEO ROI, what to count on each side of it, how to set up GA4 and Search Console so the numbers are real, and why month 3 always looks worse than it is.

Premier Logic7 min read
Clean 16:9 illustration of a simple balance scale, one side holding a stack of coins, the other a rising organic search graph line, soft navy and green palette, no text.

Your SEO invoice arrives every month with the same number on it. The traffic chart goes up a little, or down a little. Someone on your team asks the only question that matters: are we making money on this? If you can't answer in two sentences, the problem usually isn't the SEO. It's that nobody set up the measurement before the work started.

This post is the setup. One formula, a short list of what to count, the two free tools that hold the data, and what a monthly report should show so the question above has an answer.

The formula, and the two numbers people get wrong

SEO ROI is the same as any other return calculation:

ROI = (revenue attributed to organic search minus total SEO cost) divided by total SEO cost

Multiply by 100 for a percentage. Spend $18,000 in a year, attribute $63,000 in revenue, and the ROI is (63,000 minus 18,000) divided by 18,000, which is 250 percent.

The formula is easy. The two inputs are where most businesses go wrong.

Revenue attributed to organic search. This is not "organic traffic". Traffic is a cost until it becomes a lead and the lead becomes money. You need the chain: organic visits, then key events (forms, calls, bookings), then closed deals, then revenue. With only the first link, you don't have ROI, you have a hope.

Total SEO cost. Count the retainer or project fee, yes, but also the hours your own staff spend approving content, answering the agency's questions, and publishing pages. Count tools you pay for because of SEO. Count any content you commission separately. If you're unsure what the fee side normally looks like for a business your size, the cost side is covered here. This post stays on the return side.

What to count as a lead, and what each one is worth

Before you touch an analytics tool, write down three things on paper.

1. The actions that count as a lead. For most service businesses that's a contact form, a phone call from the site, a booking, or a quote request. For e-commerce it's a purchase, and the math is simpler. Pick the two or three that matter and ignore newsletter signups and PDF downloads unless they reliably turn into sales.

2. Your lead-to-customer rate. Pull the last six months of leads from your CRM or inbox and count how many became paying customers. If 40 inquiries produced 10 jobs, your close rate is 25 percent. Use your own number. Industry averages are a poor substitute because a plumber and a law firm close very differently.

3. Average value of a new customer. Use first-year revenue if customers stick around, or average order if they don't. Be conservative. A number you'd defend to your accountant beats one that flatters the report.

Now you can price a lead: close rate times customer value. At 25 percent and $2,400, an organic lead is worth $600. Fifteen organic leads a month is $9,000 of pipeline, and you can compare that against the invoice without hand-waving.

Setting up GA4 so organic leads are visible

Google Analytics 4 calls the actions you care about key events. Google's own definition is an event that measures an action that's particularly important to the success of your business. Any collected event can be marked as one. Once marked, a Key events column shows up in reports like Landing pages and User acquisition, which is exactly the view you want: which pages brought organic visitors who then did the thing.

A minimal setup for a service business:

  • A form submission event, fired on a thank-you page or successful submit.
  • A click-to-call event on tel: links.
  • A booking or quote-request event if you have one.
  • Nothing else. Every extra key event dilutes the report.

Then open the Traffic acquisition report, filter by the Organic Search channel, and read the Key events column month by month. That's your lead count. Export it to a sheet with the three numbers from the previous section and the ROI line writes itself. One caveat: this channel includes people who searched your company name, and they'd have found you anyway. Search Console, next, lets you separate them.

Search Console tells you what GA4 can't

Google Search Console doesn't know about revenue, but it's the only place you can see the top of the funnel. Its Performance report shows clicks, impressions, click-through rate and average position, and the default view covers the past three months.

Use it for three things:

Separating branded from non-branded. Add a query filter that excludes your company name. Non-branded clicks are the ones SEO actually earned.

Spotting movement before it reaches GA4. Impressions rise first, then position, then clicks, then leads. A page that moved from position 18 to 9 hasn't produced a lead yet, but it's about to. This is the leading indicator your report needs early on.

Checking the pages the work touched. Filter by the URLs the SEO team created or rewrote. If those show impression growth while the rest of the site is flat, the work is doing something, even before revenue moves.

Attribution windows: why your ROI number can be too low

Here's a mistake that quietly undercounts SEO every month. Someone finds you on Google in March, reads two pages, leaves, comes back through a direct visit in April, and fills in the form. Which channel gets credit?

In GA4 the answer depends on the attribution model and the lookback window. Google's documentation sets the default lookback window at 90 days for most key events, with 30 or 60 days as the alternatives, and uses a data-driven model by default. In practice this means organic search gets fractional credit for conversions that start in search and finish elsewhere, as long as the whole journey fits inside the window.

Two implications. First, don't shorten the window to 30 days for a business with a long decision cycle; you'll push credit from organic to direct and the SEO will look worse than it is. Second, the current month's numbers keep rising for weeks as late conversions get attributed back, so report on a lag of at least one month.

Why month 3 looks bad, and when to worry

Almost every SEO engagement has a stretch, usually months two through four, where the invoices have arrived and the leads haven't. Content is written but not yet ranking. Technical fixes are done but Google hasn't recrawled everything. Impressions are up, clicks are flat, and the ROI line is deeply negative.

This is normal. First Page Sage's analysis of campaigns run between 2021 and 2025 puts the time to break even between 5 and 14 months depending on the industry (construction at 5 months, HVAC at 6, legal services at 14), with three-year ROI in the hundreds of percent. Their numbers are their own, so don't adopt them as a target. Adopt the shape: a deep hole early, then a crossover, then compounding.

What should worry you is not a negative month 3. It's a month 3 with no leading indicators. If Search Console shows no impression growth on the pages that were worked on and no position improvement, ask hard questions. If those are moving and only revenue is flat, wait.

This is also why a one-off audit is hard to measure: the work happens once, the results arrive over a year, and nobody is there to track them. The retainer-versus-audit trade-off is partly a measurement decision.

What a monthly SEO report should actually show

If your report is a traffic chart and a list of rankings, send it back. A report you can act on has five rows:

  1. Non-branded organic clicks (Search Console, branded queries excluded).
  2. Organic key events (GA4, Organic Search channel, lagged one month).
  3. Organic leads that became customers (your CRM, matched by lead source).
  4. Revenue from those customers and the lead value implied.
  5. Total SEO cost for the month, and the running cumulative ROI since the start.

Row five matters most. Monthly ROI will swing wildly. Cumulative ROI since the engagement started is the number that tells you whether to continue, and it's the one that should cross zero somewhere in the window above. Add a short list of what was done this month and which pages it touched, so effort can be matched to the leading indicators.

For a worked example of measurement-first SEO on a real site, see what a car rental company taught us about SEO for booking sites.

Where this measurement breaks down, honestly

Phone calls are the usual hole. If most leads call rather than fill in forms, GA4 only sees the click on the number, not whether anyone answered. Call-tracking software with dynamic numbers fixes this for a modest monthly fee. Offline closes are the second hole: someone searches, visits, then walks into your office. Ask every new customer how they found you and log it.

The third is your own time. Any software that touches your sales and marketing data should return hours, not consume them. If the measurement setup costs more hours than it saves, cut it back to the five rows above and stop there.

Next step

If you have an SEO engagement running and you're not sure whether the numbers are real, we're glad to look at your GA4 and Search Console setup and tell you what we'd change, including when the answer is "your measurement is fine, give it three more months." Book a free call and you'll get a written recommendation within a few days, whether or not you work with us.

  • seo roi
  • ga4
  • search console
  • seo reporting
Keep reading
Free call

Let's talk about your business.

A free 30-minute call about your goals. No pitch, no quote. We work for mutual success: tell us as much as you can about where the business should go, and you'll leave with a written recommendation whether or not we end up working together.