Quick answer

Useful SEO reporting doesn't try to prove the agency "caused" every sale. It connects decisions to a chain of measurements (eligibility, visibility, clicks, behavior, conversions, and value) and then states where attribution becomes uncertain. A quarterly review, or QBR (Quarterly Business Review), should decide what to continue, stop, or test. Positions and the number of deliverables remain diagnostics, never the economic conclusion.

Key takeaways

  • Fix the definitions, filters, and windows before observing the result.
  • Show observed performance, attributed value, and modeled incremental impact separately.
  • A Search Console average position is neither a fixed ranking nor revenue.
  • A good report explains bad news without changing the denominator.
  • The QBR ends with decisions, owners, and stopping conditions.

The model: from technical presence to economic value

Reporting follows a chain rather than a scoreboard:

Eligibility → visibility → visit → action → qualification → revenue → margin

Each link answers a different question. A page can be indexed without appearing for a useful query, appear without earning a click, receive visits without converting, or generate requests that never become customers.

Add two parallel tracks:

  • Branded and unbranded, because demand already created by other channels can inflate branded SEO;
  • Classic search and AI surfaces, because a mention can influence a decision without producing a correctly attributed click.
Level Question Example metric Source Limit to display
Technical Are the useful pages accessible and eligible? Valid URLs, errors, checked rendering Crawl, logs, Search Console Eligibility doesn't guarantee serving
Visibility Are we presented for the targeted demand? Impressions, queries, pages, AI mentions Search Console, AI protocol Aggregation, personalization, volatility
Acquisition Do people visit the site? Clicks, sessions, landing pages Search Console, Analytics A click and a session aren't identical
Behavior Does the visit reach a useful step? Engagement, form started Analytics/product Consent, instrumentation
Conversion Did a business action happen? Demo, purchase, qualified call CRM, ecommerce Duplicates, quality, sales cycle
Economics What value, observed or modeled? Revenue, gross margin, conservative LTV Finance/CRM Attribution and counterfactual

Three levels of financial truth

1. Observed value

This is the revenue or margin recorded for conversions whose journey contains an organic visit under your attribution rule. This value is verifiable in the systems, but the rule can over- or undervalue SEO.

2. Attributed value

A model splits credit between touchpoints. Google Analytics offers different frameworks and source dimensions; their configuration and scope must be documented. An attributed value isn't a raw observation.

3. Estimated incremental value

This is the difference between what was observed and what would probably have happened without the action. That second state isn't directly observable. It requires an experiment, a cohort, a time series, or at minimum a range of scenarios. Never turn a simple before and after into certain causality.

Procedure: building defensible reporting

Step 1: Write the measurement contract

Before the first delivery, define: conversions, qualification status, source of truth, time zone, currency, window, attribution model, internal exclusions, and frequency. Add a rule for tracking changes: no comparison should cross a break without annotation.

Step 2: Freeze the baseline and the segments

Keep the starting export. Separate at least branded and unbranded, country, device, page type, and conversion. For a local business, document the location method and the area. For a SaaS, separate sign-up, activation, opportunity, and customer.

Step 3: Build the KPI chain

For each economic objective, choose one leading and one lagging indicator. Example: unbranded impressions → clicks → requests → qualified requests → contracts. Avoid a table of fifty metrics where none triggers an action.

Step 4: Reconcile Search Console and Analytics

Search Console measures interactions with Google Search; Analytics observes instrumented activity on the site. Differences in time zone, consent, filters, attribution, redirects, and blocking can explain gaps. Don't force the totals to match: document their roles.

Step 5: Add a change log

Record publications, migrations, conversion changes, campaigns, promotions, incidents, updates, and seasonality. The log doesn't establish cause; it prevents stories constructed after the fact.

Step 6: Calculate a value range

For a lead generation model:

Estimated influenced margin = attributed requests × qualification rate × close rate × average gross margin.

Calculate a low, central, and high scenario. The rates come from the client's CRM, over a stated period. If the sample is small or the cycle long, widen the range instead of displaying false precision.

Modeled ROI = (estimated incremental margin − SEO cost) ÷ SEO cost.

Don't call a merely attributed margin "incremental." With no credible counterfactual, present "margin influenced under model X."

Step 7: Give a confidence level

Assign A, B, C, or D based on four criteria: tracking integrity, stability of the definition, sample size, and attribution plausibility. Publish the rules. An honest C is more useful than a two decimal ROI built on fragile data.

Step 8: Turn every report page into a decision

Each block must contain: observation, interpretation, limit, and proposed decision. "Clicks are down" isn't a decision. "Unbranded impressions are stable but CTR is falling on the pages where an AI format appeared; test two answers and keep a control" is one.

Worked example: calculating without overselling

A fictional example. A B2B company spends 18,000 euros over a quarter on SEO support. Its CRM records 120 requests containing at least one organic visit, 54 of them qualified. Twelve become customers. The average first year gross margin is estimated at 5,000 euros, from the internal annual cohort.

The observed margin associated with those twelve customers is therefore 60,000 euros. Yet the agency cannot announce an incremental ROI of 233%: some of those customers could have converted thanks to the brand, sales, or paid media.

The measurement contract proposes three incremental credit assumptions: 20%, 40%, and 60% of the observed margin.

Scenario Assumed incremental margin ROI calculation Result
Low 12,000 euros (12,000 − 18,000) ÷ 18,000 −33%
Central 24,000 euros (24,000 − 18,000) ÷ 18,000 33%
High 36,000 euros (36,000 − 18,000) ÷ 18,000 100%

These results don't prove which one is true. They show the decision under different assumptions. The QBR can then decide to improve source capture, analyze assisted journeys, and test a cohort of pages before increasing the budget.

The 60 minute QBR agenda

Time Topic Decision question Mandatory output
0 to 5 min Objectives recap Have they changed? Objective confirmed or revised
5 to 15 min Data integrity Can we compare the period? Limits and breaks recorded
15 to 25 min Chain results Where is the main gap? Priority diagnosis
25 to 35 min Actions and learnings What did we actually learn? Hypotheses accepted or rejected
35 to 45 min Value and scenarios Which decision survives the low scenario? Proposed investment
45 to 55 min Risks and dependencies What could block us? Owners and deadlines
55 to 60 min Commitments What do we do, stop, or test? Three decisions maximum

AI search: what to report in 2026

Search Console's generative AI performance report covers AI Overviews and AI Mode according to the Google documentation available in July 2026. It can show impression trends by page, device, or country. That doesn't turn every mention into a sale, nor does it resolve all influence without a click.

Track separately: prompts tested, number of repeats, engine, location, date, brand presence, clickable citation, cited URL, descriptive sentiment, observable referral traffic, and conversion. The denominator is essential: "cited 8 times" means nothing without knowing out of how many tests.

What the data proves and doesn't prove

The Search Console report documents impressions, clicks, CTR, and position under Google's rules. It proves the report's stated behavior, not the causal effect of a recommendation. The Analytics documentation explains sources and attribution, but an analytics model remains a convention.

Community discussions show persistent pain: some clients say the positions reported by their agency differ from Search Console, while agencies ask what data to include in their reports. These questions prove qualitative demand, not the frequency of the problem.

Common failures and stopping conditions

  • Celebrating a percentage with no absolute value: display both.
  • Changing a conversion's definition: interrupt the comparison and create a new baseline.
  • Adding positions, citations, and traffic into one opaque score: keep the denominators separate.
  • Reporting only deliverables: add observation, limit, and decision.
  • Attributing all organic revenue to the agency: present the model and scenarios.
  • Hiding branded inside unbranded: document the classification rules and the ambiguous queries.
  • Holding a QBR with no decision maker: reschedule; a review with no authority to arbitrate becomes a slide reading.

Reusable asset: the "Decision, Evidence, Limit" canvas

The SEOryon QBR report template provides a base you can import into a spreadsheet. Replace its examples with the client's definitions and observations; the values provided are not benchmarks.

For each recommendation in the report, fill in:

  1. Decision requested;
  2. Dated observation;
  3. Population and source;
  4. Comparison;
  5. Competing explanations;
  6. Confidence level;
  7. Cost and risk;
  8. Stopping condition;
  9. Review date.

Also calculate the decision rate = decisions accepted, rejected, or explicitly deferred ÷ decisions presented. A recommendation indefinitely "pending" is a dependency to escalate, not a reporting success.

How SEOryon fits in

SEOryon's public functions include read-only access to Search Console and Analytics data as well as tracking of mentions and citations in ChatGPT, Perplexity, Gemini, and Claude. The tool can also analyze SERPs and questions, recommend content, check cannibalization, and publish to several CMSs.

This can centralize observations and reduce manual assembly. It doesn't automatically reconcile the CRM, doesn't choose the attribution model, and doesn't prove incremental ROI. The agency must retain the KPI definitions, the controls, and the interpretation.

Measurable exercise

Take an existing client report. Reduce it to five decisions maximum and add, for each, evidence, population, period, limit, and owner. Calculate a value range with three scenarios. The exercise succeeds if:

  • the Search Console and Analytics totals aren't artificially forced;
  • every relative change also displays the absolute;
  • no attributed value is called incremental with no method;
  • the reader can reproduce two KPIs;
  • the QBR ends with dated decisions.

FAQ

What should go into a monthly SEO report?

Objectives, data integrity, the KPI chain, actions delivered, observations, limits, decisions, and dependencies. Remove any metric that changes no decision.

How do you calculate SEO ROI?

Connect conversions to a margin, subtract the cost, and divide by that cost, but distinguish observed, attributed, and incremental value. With no credible counterfactual, publish a range of scenarios.

Search Console or Analytics: which one is right?

They answer different questions. Search Console measures interactions with Google Search; Analytics measures instrumented activity on the site. Their gap should be explained, not removed.

Should positions appear in reporting?

Yes, as a diagnostic, with location, device, method, and volatility. They shouldn't be the only value indicator or be presented as an identical experience for every user.

How do you report visibility in AI tools?

Separate mention, citation, URL, engine, prompt, repeat, country, date, traffic, and conversion. Avoid a composite score with no denominator and no reproducibility test.

References

Method and update note

The formulas are decision frameworks. The example's figures are fictional and flagged as such. Reviewed 16 July 2026, translated and edited 22 July 2026. Revisit this page when Google changes the Search Console reports, the Analytics models, the scope of the generative AI report, or SEOryon's public functions.