What can actually be measured about an SEO result, and what cannot.
The result of an SEO change is measurable only where a number carries a known period, a known filter and a known owner. Everything else is an estimate, and has to be labelled as one.
- What can be measured about an SEO result?
- When is a number a measurement and when an estimate?
- Why do two reports on the same site disagree?
- How many queries does Search Console omit?
- What becomes visible when?
- How is the expectation recorded before publishing?
- How is a result attributed to a change?
- What this page does not claim
What can be measured about an SEO result?
The result is measured reliably in three places: impressions and clicks per page in Search Console, post-click behaviour in analytics, and business outcome in the system the client runs. All three are incomplete, and none of them converts into another.
| Tool | Measures | Does not cover |
|---|---|---|
| Google Search Console | Impressions, clicks, position and queries per page | What happened after the click. Rare queries. Any per-user breakdown. |
| AI features report in GSC | Impressions inside generated answers | Clicks. The text of the answer. Whether the source was cited. |
| GA4 | Sessions, engagement and events per landing page | The query that brought the visitor. Organic queries arrive as unknown. |
| Business Profile | Calls, directions and profile interactions | Any link to the site. These numbers do not add to clicks. |
| The client's own system | Enquiries, quotes and closed work | Channel of origin, unless a separate record was set up in advance. |
The join between the first two columns is the landing page URL, not the query. That is why the sentence “this query produced the sale” cannot be written without an additional record that no tool creates on its own.
When is a number a measurement and when an estimate?
A number is a measurement if it carries a period, a tool, a filter and an owner. If any of the four is missing, it is an estimate no matter how precisely it is written.
| Item | Why the number fails without it |
|---|---|
| Period | The same site returns different numbers over 28 and over 92 days. A number without a period cannot be reproduced. |
| Tool | An impression in Search Console and a session in analytics are different phenomena and are not compared. |
| Filter | Search type, country and device change the total. This is the item most often left out. |
| Owner | Publicly verifiable and client-supplied data do not carry equal weight and do not share a table. |
The check is simple: for every claim with a number, ask what evidence would show it to be false. If no such evidence exists, the number is an illustration rather than a measurement.
Why do two reports on the same site disagree?
Because they were exported under different filters, and the filter is rarely recorded next to the table. The same site, the same period and the same tool return a different total as soon as the search type or the set of included pages changes.
This is not a hypothetical example. In the first version of our leskovac.taxi control case, three tables gave three different impression totals for the same site over the same period.
| Grouping | Clicks | Impressions | Cause of the difference |
|---|---|---|---|
| By property | 1,140 | 47,536 | Several links from one site in a single result count as one impression |
| By page | 1,181 | 71,301 | Each URL gets its own impression, so the sum is half again as large |
| By query | 554 | 29,177 | Rare queries are not shown, so 61.4% of impressions are covered |
The consequence was not merely cosmetic. In the first published version of that study, the share of impressions in AI features was recorded against a base it did not belong to — the numerator came from property aggregation, the percentage from page aggregation. Both numbers were correct; their ratio was not. The fix was to state the grouping in every table caption.
The practical rule: numbers from two tables must not be added together or divided by one another unless they are grouped the same way. We publish this finding because the error was ours, and we meet the same pattern in other people's reports almost every time numbers from two exports end up on one page.
How many queries does Search Console omit?
Search Console does not show queries issued by too few users. Google does not publish how many it omits, but coverage can be measured on your own data: divide the sum of impressions across queries by the total for the same period and filter.
The practical consequence: the sum across queries is always lower than the total. On our two projects that coverage was measured for 17 May to 16 August 2026: on leskovac.taxi queries cover 61.4 percent of impressions, on taxi.co.rs 47.9 percent. The gap is not a reporting error but the omitted long tail. The idea that coverage is higher on larger sites is not borne out here — the larger project has lower coverage, because its tail of rare queries is wider.
The query list is therefore a sample, not an inventory. The sentence “the page ranks for these queries” is written meaningfully only as “for these queries that Search Console displays”, with a note that the rest exists but is not visible.
What becomes visible when?
Delivery is visible within days, the impression curve within weeks, the query mix within a quarter. A conclusion drawn before a stage matures is not an early conclusion but a wrong one.
The timings in the diagram are an estimate based on sites with low initial visibility and are not a documented Google schedule. On a site with high impression volume all three stages arrive earlier, because the threshold below which queries are not displayed is crossed sooner.
How is the expectation recorded before publishing?
Before publishing, record the predicted intents, the success threshold, and everything else changed on the same day. A threshold set after measuring is not a threshold but a justification.
| Field | What goes in it |
|---|---|
| Publication date | The date, because without it no later difference has a starting point |
| Target query pattern | Broken into contextual entity, central entity and intent synonym |
| Predicted intents | The list from the query fan-out, closed — no adding to it later |
| Success threshold | An impression count or a share of intents hit, with the source of the estimate |
| What else changed | Internal links, hub pages, structured data, layout |
The last row matters most and is the easiest to skip. Without it, three months later you cannot tell whether the difference came from the new text or from the redistribution of internal links that happened the same day.
From this record comes the one measure we can check ourselves: what share of predicted intents appeared as a real query, and what share of real queries we failed to predict. We expect the first number on this measure in November 2026.
How is a result attributed to a change?
It is attributed only if one surface changed while everything else stayed constant over the same period. In every other case the conclusion belongs to the system, not to the change.
On a new site this condition is almost never met, because everything changes at once in the first months. That does not mean measurement stops — it means the result is described as a system outcome, and written that way.
The other common error is measuring the wrong channel. For a local service the primary place of appearance is not the organic result but the business profile; measuring through AI impression share on the site then measures a secondary channel, however carefully it is done. Our control case shows the scale of that difference.
What this page does not claim
It does not claim that a complete measure of an SEO result exists. Each tool listed covers a part, and the parts do not add up.
It does not claim the timings in the diagram hold for every site. They are an estimate for low initial impression volume and change with the size of the site.
It does not state the share of queries Search Console omits, because that figure is not published. Only the existence of the gap, and the way to establish it on your own data, are stated.
It does not claim the pre-publication record described here is demonstrably better than working without one. It is a method we use, and its first measured result does not exist yet.
It does not show how the share of impressions in AI features moves over time. That share also depends on changes inside the AI search features themselves, which are not published and cannot be separated from changes on the site, so every finding is tied to one exported period.
Frequently asked questions about measuring results
Why does GA4 not show which query brought the visitor?
Google does not pass the organic query to analytics. It appears as unknown in reports. Clicks by query exist only in Search Console, and only at page level.
Can Search Console clicks and GA4 sessions be added together?
No. They are different phenomena with different counting rules and almost never match. They are compared by trend on the same page, not by absolute number.
Does the AI features report show clicks?
No. It gives impressions inside generated answers, without clicks and without the text of the answer.
How long before the first conclusion?
Two weeks for indexing, eight for the impression curve, twelve for the query mix. These timings are an estimate for a site with low impression volume.
What if two reports disagree?
Compare the filters before looking for an explanation in the data. Search type, date range and included countries explain most disagreements.
Is the success threshold the same for every project?
No. The threshold is set per project, before publishing, and recorded together with the source of the estimate.
Need a report that holds up to scrutiny?
We run a semantic SEO audit in which every table carries its filter and every estimate carries its caveat. How that looks on our own site is shown in the audit example, where two unresolved findings are documented alongside their fixes.