SEO Reporting, ROI and Forecasting
SEO reporting: how to report results in revenue
SEO reporting is the regular account of what search work was done, what moved in search and what it brought the business. A report that ends in revenue follows each figure from query to click, visit, key event and sale, names the source and the rule behind it, and labels it known, influenced, modeled or incremental.
By QueryRev ResearchPublished Updated15 min read
Key takeaways
- Every SEO report has three parts: what was done, what moved in search, and what it brought the business, with revenue last and labelled.
- Agree the key events, the attribution model, the lookback window and where revenue is recorded before the first report, and write each definition down.
- Label every revenue figure known, influenced, modeled or incremental, never add the four together, and mark revenue that comes only from analytics as GA4-reported.
- Split branded from non-branded demand, so that search work is not credited with buyers who already knew the business.
- Read each change against the same month last year and Google’s update calendar, and name its likely cause before calling it a result.
What an SEO report is for
A report exists to help someone decide. A board decides whether search is worth what it costs; a marketing lead decides where next quarter’s effort goes; the person doing the work decides what to fix next. Rankings and visits matter to all three, but only as steps on the way to what the business counts: orders, enquiries, bookings and revenue.
That gives every good SEO report the same spine, whatever its length: what was done, what moved, and what it brought in. The first part makes the work visible and checkable. The second shows whether search responded. The third connects those results to money, in figures that carry their source and their label, so that nobody reads an estimate as cash.
What was done
- The question it answers
- Did the work happen?
- What it contains
- Pages published or changed, technical fixes and links earned, each with its date
What moved
- The question it answers
- Did search respond?
- What it contains
- Impressions, clicks, positions and pages in the index, against the last period and the same month last year
What it brought in
- The question it answers
- Did the business gain?
- What it contains
- Key events, enquiries, orders and revenue from organic search, each labelled by kind
| Part | The question it answers | What it contains |
|---|---|---|
| What was done | Did the work happen? | Pages published or changed, technical fixes and links earned, each with its date |
| What moved | Did search respond? | Impressions, clicks, positions and pages in the index, against the last period and the same month last year |
| What it brought in | Did the business gain? | Key events, enquiries, orders and revenue from organic search, each labelled by kind |
A report that stops at the second part is a traffic report. It can be accurate and still useless to a finance team, because it cannot say whether the traffic paid for the work. The rest of this guide is about the third part, and about the definitions that make it believable.
Agree what counts before the first report
Most arguments about SEO results are arguments about definitions, held months too late. Settle them in writing before the work starts, while nobody has a number to defend.
- Name the actions that count as business: an order, a booked call, a submitted form, a trial that becomes a subscription. In Google Analytics 4 each one is an event marked as a key event, and a standard property can mark up to 30 of them[1].
- Mark them before the period you will report on. Marking an event as a key event affects reports from the time it is marked and does not change historic data[1], so a key event set up in March cannot report on February.
- Choose the attribution model and write it down. GA4 offers data-driven attribution, paid and organic last click, and Google paid channels last click[2]. Changing the reporting model applies to historical and future data[3], so a quiet switch rewrites every past month of the report.
- Set the lookback window, the time before a key event in which a visit can earn credit: 90 days by default for most key events, with 30 or 60 days as options[3]. A business whose buyers take months to decide should know which window its figures use.
- Decide where revenue is recorded: the store, the payment system or the CRM. Analytics revenue is a reading of that record, not the record itself.
- Agree how a lead is valued until it closes, and who confirms that it closed.
Keep the definitions in the report itself, on a page at the back, with the date each was set. When one changes, the report says so in the month it changed, and figures from before and after the change are not compared as if nothing had happened.
Follow each figure from query to revenue
Organic revenue is the end of a chain, and each link of the chain is counted by a different system. Knowing which system counts what, and where they disagree, is most of the craft of SEO reporting.
Impression and click
- Counted by
- Search Console
- What it cannot see
- What the visitor did after the click
Visit and key event
- Counted by
- Google Analytics 4
- What it cannot see
- Visits its tag did not record, and sales closed somewhere else
Order or closed deal
- Counted by
- The store, the payment system or the CRM
- What it cannot see
- Which search, if any, started the journey
Revenue by kind
- Counted by
- The report, by the rules agreed in advance
- What it cannot see
- Anything the rules leave out, which the report names
| Link | Counted by | What it cannot see |
|---|---|---|
| Impression and click | Search Console | What the visitor did after the click |
| Visit and key event | Google Analytics 4 | Visits its tag did not record, and sales closed somewhere else |
| Order or closed deal | The store, the payment system or the CRM | Which search, if any, started the journey |
| Revenue by kind | The report, by the rules agreed in advance | Anything the rules leave out, which the report names |
Search Console and Analytics will not agree, and should not be forced to. Google lists the reasons: to protect privacy, Search Console omits some queries that are searched very rarely; its processing can remove duplicates; its data usually arrives two to three days after it is collected; it labels its days in Pacific Time; and tools such as Analytics count only visitors whose browsers run JavaScript[4]. Report each figure from the system that counts it, and never subtract one from the other to find a hidden number.
Linking the two closes part of the gap. With Search Console connected to Analytics, two reports join queries and landing pages to what visitors did and to the key events they reached, but Search Console keeps data for the last 16 months, so the joined reports hold at most 16 months too[5]. The join works by landing page, device and country[5], which is also the level at which a revenue report is most useful: the page is what the work changes.
Read the channel definition before reading the channel: in GA4, clicks from Google’s AI Overviews and AI Mode count as Organic Search, while visits from assistants such as ChatGPT have their own AI Assistant channel[6], a split set out in the guide to AI visibility metrics. A report that says “organic” should say which it means.
Sixteen months allows one comparison with the year before, and little more. Keep the monthly figures yourself from the first report on, in a sheet or a database, so that the second and third years can be compared too, and so that a lost login does not lose the history.
Four kinds of revenue, never added together
Revenue from search is not one number. A sale can be recorded and traced to a search visit; it can be one that search shared with other channels; it can be an estimate; or it can be the extra that a change added. These are different claims, resting on different evidence, and a report that blends them overstates all of them.
Known
- What it counts
- Revenue recorded in the store or CRM for journeys that began with organic search, under the stated rule
- The evidence behind it
- The order or the closed deal
- What it is not
- An estimate
Influenced
- What it counts
- Revenue where organic search took part in the journey but was not the last touch
- The evidence behind it
- Journeys in analytics, joined to orders
- What it is not
- Revenue to add to the known figure
Modeled
- What it counts
- An estimate, such as the expected value of open enquiries, always shown as a range
- The evidence behind it
- A named model and its inputs
- What it is not
- Money received
Incremental
- What it counts
- The estimated lift above a modeled baseline after a verified change
- The evidence behind it
- A comparison with what would have happened anyway
- What it is not
- All the revenue that arrived after a change
| Kind | What it counts | The evidence behind it | What it is not |
|---|---|---|---|
| Known | Revenue recorded in the store or CRM for journeys that began with organic search, under the stated rule | The order or the closed deal | An estimate |
| Influenced | Revenue where organic search took part in the journey but was not the last touch | Journeys in analytics, joined to orders | Revenue to add to the known figure |
| Modeled | An estimate, such as the expected value of open enquiries, always shown as a range | A named model and its inputs | Money received |
| Incremental | The estimated lift above a modeled baseline after a verified change | A comparison with what would have happened anyway | All the revenue that arrived after a change |
Where only Analytics is connected, the figure is none of the four yet. Label it GA4-reported: it is what the analytics tag recorded and credited by its attribution rule, and it will differ from the orders the business recorded, because consent choices, blocked tags and orders closed offline all stand between the two. It becomes known once the order record confirms it; until then it is GA4-reported.
The rule that assigns a sale to organic search is organic revenue attribution, and the rule changes the number. Under paid and organic last click, 100% of a key event’s value goes to the last channel the customer clicked through before converting[2]. Under data-driven attribution, credit is shared out between the interactions on the path, so key events and revenue can show fractions for the first time[3]. And every GA4 model gives direct visits no credit unless the whole path was direct[2]: a buyer who found you through search and came back days later by typing your address is still credited to search under last click.
Three rules keep the four honest. The label stands beside the figure, in the table and in every sentence that quotes it. The four are never summed into one total, because influenced revenue overlaps the journeys behind known revenue and a modeled figure is not money. And incremental revenue needs a comparison to exist: a group of similar pages left unchanged, a baseline forecast set before the change, or a test. Without one, the report says that it cannot tell what the work added.
Split branded from non-branded demand
Searches that include the brand name come mostly from people who already know the business. They respond to advertising, word of mouth and the product itself more than to SEO, and in many businesses they carry most of the organic revenue. A report that mixes them with everything else credits search work with demand it did not create.
Search Console separates the two: its branded and non-branded queries filter splits the data by whether the search term included the brand name[7]. Read its limits before relying on it. The filter is not available for sites with a low number of impressions, its history starts from its introduction in March 2025, and Google warns that some queries may be classified wrongly[7]. Where the filter is missing, a filter on the brand’s names and their common misspellings does the same job; keep that list with the report’s definitions.
Then split the money the same way, as far as the data allows. Analytics does not see the query behind a visit, so the split is made by landing page: revenue that lands on the home page and the brand pages leans branded, revenue that lands on category, product and guide pages leans non-branded. Say that the split is approximate, and keep the rule the same from month to month so that the trend is real even where the level is not exact.
When the sale happens later: leads and pipeline
Many businesses do not sell on the page. A clinic books an appointment, a school takes an application, a software company opens a trial, a contractor sends a quote. The report then has two moments to count: the enquiry, which analytics can see, and the sale, which happens later in a system analytics cannot see.
- Count the enquiry where it happens: the form, the call, the booking. Search Console stops at the click, so the business counts its own enquiries at the point of contact.
- Carry the source into the CRM with the enquiry, so that a closed deal can be traced back to its landing page and its channel.
- Until a lead closes, give it a value from your own history, such as the share of past enquiries of that kind that became customers, times their average value. Label that value modeled, and show it as a range.
- When the deal closes, replace the estimate with the known figure, and keep both in the record, so that the model can be checked against what happened.
- Count quality as well as volume. Enquiries that were spam, outside the area served or for a service you do not sell are reported, and then left out of the value.
A month in which enquiries rose and closed revenue did not is not a success yet; nor is it a failure. It is a pipeline whose outcome the report can only state as modeled, with the date on which the known figure will replace it. The next month’s report then closes the loop: of the enquiries search brought last month, how many became customers, and what they paid.
Read every change with its likely cause
Search results move without anyone touching the site. Google says that positions in its results are not static, that its results change as user expectations and the web itself change, and that this constant change can cause both gains and drops in organic traffic[8]. A report earns trust by separating the movements the work caused from the ones it did not.
- Compare like with like: the same month last year for anything seasonal, the month before for anything that is not, and always periods of equal length.
- Check the calendar of Google’s updates. After a core update, Google recommends waiting at least a full week after it completes, then comparing with a week before it started[8].
- Size the move before reacting to it. Google separates a small drop in position, which needs no drastic action, from a large one, which calls for a deeper assessment[8]; the guide to content decay shows where the line falls.
- Name the cause you believe, and say how sure you are. A cause you inferred is written as an inference, not as a finding.
- Flag a small base. When enquiries go from 6 to 4, say that the numbers are too small to read as a trend.
What a change means for revenue depends on where it happened. A fall in impressions on informational pages that never sold anything is a different event from a fall in clicks on the three category pages that carry most of the known revenue. Report movement by group of pages, with the revenue each group carries beside it, and the reader sees at once which changes matter.
Keep a dated record of every change made to the site, what QueryRev calls the Change Ledger, so that each movement in the numbers can be set against what changed, and when. Pages that lose ground slowly, month after month, have their own diagnosis, set out in Content decay: how to find and reverse it.
One report, three readers
The same figures serve different people at different depths. Write the report so that each reader can stop as soon as they have what they need.
Board or owner
- What they decide
- Whether search is worth its cost
- What they read
- One page: the headline, revenue by kind against the last period and last year, the cost of the work, and the one decision asked of them
Marketing lead
- What they decide
- Where effort goes next quarter
- What they read
- The groups of pages that earn and those at risk, the work done, and the next three actions with their expected value
Practitioner
- What they decide
- What to fix next
- What they read
- The full tables, linked rather than pasted: queries, pages, issues and the record of changes
| Reader | What they decide | What they read |
|---|---|---|
| Board or owner | Whether search is worth its cost | One page: the headline, revenue by kind against the last period and last year, the cost of the work, and the one decision asked of them |
| Marketing lead | Where effort goes next quarter | The groups of pages that earn and those at risk, the work done, and the next three actions with their expected value |
| Practitioner | What to fix next | The full tables, linked rather than pasted: queries, pages, issues and the record of changes |
For the first reader, the page starts with the answer. One sentence says what changed and what it was worth: “Non-branded organic revenue rose against the same month last year; the gain came from the category pages rewritten in the spring.” The table under it shows known revenue first, then influenced revenue, each with its label, and the cost of the work in the same period. Modeled and incremental figures, where they exist, stand apart with their ranges, so that no reader adds them up.
Leave the ranking chart out of that page. An average position across hundreds of queries can move for reasons that have nothing to do with the quality of the work, such as new queries entering the set at low positions. If rankings matter to the decision, show the few searches that bring buyers, by name.
The monthly version of this report, section by section, is in Monthly SEO report: what to include. The audit that sets the plan a report tracks is in SEO audit report: what it should contain, and which parts of a report a tool can safely produce is in Automated SEO reports: what to automate and what not.
Where AI search fits in the report
Answers written by AI tools belong in the same report, not in a separate deck: the same buyers, the same pages, the same months. What changes is what can be counted, and therefore which label the money carries.
Visits that AI tools send are observed, in the two channels described above, so revenue from them is GA4-reported as analytics records it, and becomes known once the order record confirms it. A mention in an answer that brings no click is a different thing: whatever it is worth can only be modeled, and the report labels it so, or leaves it as a count of mentions with no money attached.
How to build the set of prompts and count mentions and citations is covered in the guide to measuring results in AI search; which of those counts deserve to become KPIs is in the guide to AI visibility metrics and KPIs.
From reporting the past to valuing what comes next
A report looks back. The same definitions let you look forward. Return on investment compares the profit search brought with what the work cost; a forecast sets out a range of likely results if its assumptions hold. Both go wrong in the same two ways: using revenue where profit belongs, and counting customers who searched for the business by name. Both are worth stating in three cases, low, middle and high, because a single number hides the risk.
The SEO ROI calculator and the SEO forecast template work from your own inputs in those three cases. Keep a forecast and a report apart: a forecast is a range, a target is what you aim for, and an actual is what happened. Report the actual against both, and keep the original forecast unchanged, so that it can be judged when the period ends.
Seven mistakes that make a report untrustworthy
- Adding the four kinds of revenue into one total.
- Changing the attribution model or a key event in the middle of the year without saying so, then comparing months across the change.
- Crediting search with branded demand it did not create.
- Reporting revenue from analytics as if it were the order record.
- Reading a seasonal fall against the month before instead of the same month last year.
- Calling every change that follows a piece of work its result, when a before-and-after on one page shows timing, not cause.
- Hiding the bad news. A decline belongs next to the gains, with its likely cause and what is being done about it.
Each of these makes the next report harder to believe, and a report nobody believes cannot support a decision, which was its only job.
Sources
Primary sources only, each read on the day given.
- 1.Mark events as key events. Analytics Help, Google. Read .
- 2.Get started with attribution. Analytics Help, Google. Read .
- 3.Select attribution settings. Analytics Help, Google. Read .
- 4.Performance report (Search results): Troubleshooting data discrepancies. Search Console Help, Google. Read .
- 5.Connect Search Console to Google Analytics. Analytics Help, Google. Read .
- 6.Default channel group. Analytics Help, Google. Read .
- 7.Performance report (Search results): Dimensions and data groupings. Search Console Help, Google. Read .
- 8.Google Search’s core updates and your website. Google Search Central. Read .
Cite this guide
A suggested citation. Its link goes to this page, whose address does not change.
QueryRev Research. “SEO reporting: how to report results in revenue.” QueryRev AI, 18 Oct 2026. https://queryrev.com/guides/seo-reporting-roi