Module 090 Intermediate 12 min read

SEO KPIs & Reporting

Visibility, engagement, conversion, brand, and AI visibility metrics for SEO. Looker Studio dashboards, executive-friendly client reports, and the metrics that survive contact with the CFO.

By SEO Mastery Editorial

The CFO does not care that you ranked #4 for “best CRM software.” She cares whether SEO is profitable. SEO reporting in 2026 is the discipline of translating the technical reality of search into the financial reality of a business — and doing it on a dashboard the executive team will actually open.

TL;DR

  • Five KPI tiers: visibility, engagement, conversion, brand, and AI visibility. Every report should be a balanced scorecard across all five — not a wall of impressions.
  • Branded vs non-branded must be split. A 40% YoY growth in organic clicks is meaningless if it is all branded traffic following a TV campaign.
  • Looker Studio is the right tool for 95% of SEO dashboards. It is free, connects natively to GSC, GA4, and BigQuery, and is the format C-suites are already trained to read.

The mental model

SEO reporting is like a dashboard in a car. The driver does not need every sensor reading — they need the four gauges that tell them whether to keep going, slow down, or pull over. Tachometer, speedometer, fuel, temperature. Everything else is diagnostic, not strategic.

This matters because the failure mode of SEO reporting is not “we did not measure enough.” It is “we measured everything and surfaced nothing.” A 40-page deck of every keyword’s rank change tells a CMO nothing they can act on. A single chart showing branded vs non-branded organic revenue against forecast tells them everything.

The other half of the mental model: the audience determines the metric. The same SEO program produces three reports — a tactical operator dashboard with crawl errors and indexing states, a strategic stakeholder dashboard with traffic and revenue trends, and an executive scorecard with three numbers. Different cuts of the same underlying data, never one report rolled up to all audiences.

Deep dive: the 2026 reality

The KPI stack you actually need looks like this.

1. Visibility metrics.

MetricSourceWhat it answers
Impressions (branded vs non-branded)GSCDid Google show our pages more?
Average positionGSCAre we trending up or down on the queries that matter?
Share of voiceAhrefs / Semrush / AccuRankerWhat percent of available demand are we capturing?
Indexed URLsGSC Indexing reportIs our crawlable surface area growing or shrinking?

2. Engagement metrics.

MetricSourceWhat it answers
CTR by query/pageGSCAre titles/descriptions earning the click?
Engagement rateGA4Did the click deliver value?
Average engagement timeGA4Is the content holding attention?
Pages per sessionGA4Is internal linking working?

3. Conversion metrics.

MetricSourceWhat it answers
Organic Key EventsGA4How many leads/signups/purchases?
Organic revenueGA4 + CRMTop-line dollars
CPL / CPAFinance + GA4Unit economics
Pipeline createdCRM (Salesforce, HubSpot)Lagging quality indicator

4. Brand metrics.

MetricSourceWhat it answers
Branded search volumeGoogle Trends / GSCIs awareness growing?
Branded vs non-branded splitGSC + regexIs non-branded the engine?
Direct sessionsGA4Direct + branded together = brand strength

5. AI visibility metrics — the 2026 addition.

MetricSourceWhat it answers
AI Overviews impressionsGSC Search AppearanceAre we cited in generative SERPs?
AI Mode impressionsGSC Search AppearanceAre we surfaced in Google AI Mode?
Citation share in ChatGPT/Perplexity/ClaudeProfound, Otterly, Peec AIWhat share of AI answers cite us?
AI traffic referralsGA4 (referrer = chatgpt.com, perplexity.ai, etc.)Real clicks from AI answers

Every one of these has caveats. AI Overviews impressions are logged when your page appears in the source carousel, not when the user actually reads the answer. Citation share tools poll prompts on a schedule and infer share from the sample — they are directional, not census-grade. Treat AI metrics as new and noisy until you have 90+ days of trend data.

Branded regex. The single most important piece of regex an SEO writes:

(?i)\b(brandname|brand-name|brandnamehq|brandnameapp|brandname\.com)\b

Apply it as a negative match to the GSC query field to isolate non-branded queries. Apply it as a positive match for the branded report. Tune it by inspecting the top 100 queries to catch typos and variants.

Visualizing it

flowchart TD
  A[Raw data sources] --> B[GSC Bulk Export]
  A --> C[GA4 BigQuery export]
  A --> D[CRM API]
  A --> E[Rank tracker API]
  A --> F[AI visibility tool API]
  B --> G[BigQuery dataset]
  C --> G
  D --> G
  E --> G
  F --> G
  G --> H[Looker Studio]
  H --> I[Operator dashboard]
  H --> J[Stakeholder dashboard]
  H --> K[Executive scorecard]

Bad vs. expert

The bad approach

The agency exports a CSV from GSC, drops it into PowerPoint, and writes “organic traffic +12% MoM” on the title slide. The deck has 30 slides, no breakdown of branded vs non-branded, and no link between SEO activity and business outcome.

Slide 1: Organic traffic +12% MoM
Slide 2: Top 10 keywords (vanity list)
Slide 3: Bounce rate down 2%
Slide 4: Page 1 rankings (count: 47, up from 41)
[...]
Slide 30: "Continue executing on the strategy"

This fails because the +12% might be entirely branded growth driven by paid media or a press cycle, the rankings count is a vanity stat (#1 for a zero-volume keyword counts the same as #1 for “auto insurance”), and bounce rate is a metric the executive team neither understands nor trusts.

The expert approach

A Looker Studio dashboard with three pages tied to a BigQuery dataset that joins GSC, GA4, CRM, and rank tracker data. The exec page is one screen. The stakeholder page expands to trends. The operator page exposes crawl/index health.

-- BigQuery: branded vs non-branded clicks and revenue, last 90 days
WITH gsc AS (
  SELECT
    data_date,
    query,
    SUM(clicks) AS clicks,
    SUM(impressions) AS impressions,
    REGEXP_CONTAINS(LOWER(query), r'\b(brandname|brand-name|brandnameapp)\b') AS is_branded
  FROM `project.searchconsole.searchdata_url_impression`
  WHERE data_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
  GROUP BY data_date, query
),
revenue AS (
  SELECT
    PARSE_DATE('%Y%m%d', event_date) AS event_date,
    SUM(ecommerce.purchase_revenue) AS revenue
  FROM `project.analytics_123456789.events_*`
  WHERE event_name = 'purchase'
    AND traffic_source.medium = 'organic'
    AND _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY))
                          AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
  GROUP BY event_date
)
SELECT
  gsc.data_date,
  SUM(IF(is_branded, clicks, 0)) AS branded_clicks,
  SUM(IF(NOT is_branded, clicks, 0)) AS nonbranded_clicks,
  ANY_VALUE(revenue.revenue) AS daily_revenue
FROM gsc
LEFT JOIN revenue ON gsc.data_date = revenue.event_date
GROUP BY data_date
ORDER BY data_date;

This works because the executive sees one chart of non-branded clicks against revenue (the line that only SEO can move), the stakeholder sees the trend with annotations of major launches, and the operator sees the underlying queries.

Do this today

  1. Open Looker Studio (lookerstudio.google.com) and create a new report. Add three data sources: Search Console (Site Impression and URL Impression as separate sources), GA4, and your BigQuery dataset.
  2. Build page 1: Executive scorecard. One scorecard each for non-branded clicks, organic Key Events, organic revenue, and AI Overviews impressions. Trend lines overlaid. Comparison: previous 90 days.
  3. Build page 2: Stakeholder trends. Time-series charts of clicks, impressions, average position, engagement rate by content cluster (use a calculated field with regex on Landing page). Annotate with launch dates.
  4. Build page 3: Operator detail. Top 100 pages by impression delta WoW, top 100 queries gaining and losing, indexing state counts, Core Web Vitals pass rate.
  5. Define your branded regex in BigQuery as a saved view: r'(?i)\b(yourbrand|your-brand|yourbrandapp|yourbrand\.com)\b'. Use it as a calculated field in Looker Studio: CASE WHEN REGEXP_MATCH(Query, "...") THEN "Branded" ELSE "Non-branded" END.
  6. Connect a rank tracker (AccuRanker, SE Ranking, Ahrefs Rank Tracker) via its Looker Studio connector. Add a share of voice widget on the stakeholder page.
  7. Connect an AI visibility tool (Profound, Otterly, Peec AI, or AthenaHQ) — most have native Looker Studio connectors as of late 2025. Add an AI citation share chart by competitor.
  8. Schedule email delivery of the executive page weekly to leadership and monthly to the board. Use Looker Studio’s Schedule email with PDF attached.
  9. Document each metric’s definition in a Notion or Confluence page linked from the dashboard footer. Numbers without definitions are how you lose stakeholder trust.
  10. Set annotations in Looker Studio for every algorithm update (Google core updates, AI Mode rollouts), every site launch, and every major piece of content. Future-you will thank present-you.

Mark complete

Toggle to remember this module as mastered. Saved to your browser only.

More in this part

Part 11: Analytics & Measurement

View all on the home page →
  1. 087 Google Search Console Mastery 14m
  2. 088 Google Analytics 4 for SEO 13m
  3. 089 Google Tag Manager 19m
  4. 090 SEO KPIs & Reporting You're here 12m
  5. 091 Server Log Analysis 26m
  6. 092 Rank Tracking 13m
  7. 093 A/B Testing for SEO 24m