Skip to content

AI SEO Workflow Guide

Build a Daily AI SEO Analyst

A repeatable workflow that reads Search Console, GA4, Ahrefs, Semrush, Clarity and Core Web Vitals data through official APIs and MCP servers, then briefs a human on what changed, whether it matters, and what to investigate next. Read-only by design; every recommendation goes to a reviewer.

  • Official APIs
  • Official MCP
  • Read-only Workflow
  • Human Reviewed
Updated
3 August 2026
Reading time
About 2 hours
Author
Written and researched by Christian Stewart, Founder and Editor
Version
1.0

At a glance

A daily AI SEO analyst is a read-only workflow, not an autonomous optimiser: it pulls Search Console, GA4, Ahrefs, Semrush, Clarity and Core Web Vitals data through official APIs or MCP servers, normalizes it, then briefs a human on what changed and what to investigate. The judgement stays with the reviewer, so build the data layer and the brief format first and add automation only where the source is officially supported.

Data sources
Search Console, GA4, Ahrefs, Semrush, Clarity, CrUX
Access model
Read-only official APIs and MCP servers
Human role
Reviews every recommendation before action
Reading time
About 2 hours

Introduction#

This guide teaches SEO professionals how to build a trustworthy AI-powered analyst that reviews data from multiple SEO platforms, identifies meaningful changes, investigates likely causes, and recommends the highest-priority next actions.

The emphasis is decision support, not autonomous optimization. The workflow you build here reads data and writes a brief; a person decides what to change.

Every factual product capability in this guide is backed by the vendor's own documentation. Any suggested workflow, threshold, or implementation pattern is presented as a recommendation, not a platform requirement — where we recommend something, we say so explicitly.

What You'll Build#

A Daily AI SEO Analyst is a repeatable workflow that combines structured SEO data with a large language model to answer four questions every day.

Unlike a dashboard, which primarily reports metrics, an AI analyst investigates relationships across multiple data sources before presenting prioritized findings. The output is a short daily brief: what moved, whether the movement is material, the most likely explanation, and the checks a human should run next.

This guide deliberately does not describe an autonomous agent. The analyst does not publish content, edit metadata, deploy code, change redirects, submit URLs, modify analytics configuration, or make any production decision without review.

Explicitly out of scope

  • Publishing or editing content
  • Editing metadata, redirects or robots directives
  • Deploying code or submitting URLs for indexing
  • Changing analytics configuration
  • Any production change without human review

The four daily questions

  1. What changed?
  2. Does it matter?
  3. What most likely caused it?
  4. What should we investigate or do next?

Before you build: readiness checklist

0/6 done

How an AI SEO Analyst Thinks#

Before you connect anything, decide how the analyst reasons. A model with excellent data and no reasoning discipline produces confident nonsense; a model with modest data and a strict evidence loop produces briefs a senior SEO can act on.

Everything in this chapter is Connector Scout editorial guidance. It is not a vendor requirement, and no platform documents an "investigation loop", an "evidence layer" or a confidence band. What the vendors document is what their APIs return; how you reason across those returns is a house style, and this is ours. Sections that cite official documentation are labeled as official documentation throughout the guide, so the difference is always visible on the page.

The mindset has four moving parts: a repeatable investigation loop, a layered view of what each evidence source can and cannot prove, an explicit separation of facts from hypotheses with a confidence score attached, and a prioritization framework that decides what the reviewer should look at first.

The investigation loop

Every flagged change runs through the same six steps, in the same order. The order matters more than any single step: skipping validation produces false alarms, and skipping corroboration produces confident hypotheses dressed up as findings.

The six-step investigation loop

Observe the change, validate that it is real, localize where it is concentrated, explain it with competing hypotheses, corroborate against a second source, then prioritize what the reviewer sees first.

  1. Step 1Observe

    What actually changed, in numbers?

    Read the metric, the window and the magnitude straight from the source API. No interpretation, no adjectives — a click count against a stated baseline.

    OutputA labeled verified fact with source, window and magnitude.

  2. Step 2Validate

    Is the change real, or an artefact of measurement?

    Rule out reporting latency, partial days, tagging changes, sampling, thresholding and low-volume noise before treating a delta as a finding. Most false alarms die here.

    OutputA pass or fail on data quality, with the reason recorded.

  3. Step 3Localize

    Where is the change concentrated?

    Slice by page, query, country, device and date until the change stops being site-wide. A drop isolated to one template is a different problem from a drop spread evenly across the site.

    OutputThe narrowest segment that still contains the change.

  4. Step 4Explain

    What could plausibly cause this segment to move this way?

    Generate competing explanations rather than one. Every explanation is written as a hypothesis, and each one names the evidence that would confirm or kill it.

    OutputTwo or more labeled hypotheses, each with a test.

  5. Step 5Corroborate

    Does a second, independent source agree?

    Test the surviving hypotheses against a different evidence layer — search data against analytics, analytics against behavior, on-site against off-site. Agreement raises confidence; disagreement is itself a finding.

    OutputA confidence score with the corroborating sources named.

  6. Step 6Prioritize

    What should the reviewer look at first?

    Rank surviving findings on impact, confidence, effort, reversibility and urgency, then hand the top few to a human with the checks to run. The loop stops here — the analyst never acts.

    OutputA ranked shortlist of recommended checks for human review.

It is a loop, not a checklist: corroboration that fails sends the analyst back to Explain, and a failed validation sends it back to Observe with a wider window.

Five layers of SEO evidence

Each layer answers a different question, and none of them answers all four daily questions alone. Naming the layer a number came from is what stops the analyst from arguing that a session drop proves a ranking loss.

What each evidence layer can and cannot prove

Layer 1 · Before the click

Search visibility

Google's own record of impressions, clicks, CTR and position. Proves whether search demand and visibility changed. Cannot tell you what happened after the click.

Related tools

  • Google Search Console

Layer 2 · After the click

Session and outcome data

Sessions, engagement and key events by landing page and channel. Proves whether arriving visitors behaved differently. Cannot prove a ranking change, and will not match search-side click counts.

Related tools

  • Google Analytics 4

Layer 3 · On the page

Behavioral evidence

Session recordings, heatmaps and interaction signals for the specific pages a brief flags. Explains why a page underperforms once you already know it does. Not a sampling-free source of truth.

Related tools

  • Microsoft Clarity

Layer 4 · Off-site and competitive

Third-party market estimates

Backlink change, competitor movement and keyword landscape. Useful for corroboration and context — and always an estimate, so it must never be presented in a brief as a verified fact.

Related tools

  • Ahrefs
  • Semrush

Layer 5 · Delivery

Field and lab performance

Real-user field data and synthetic lab data for page experience. Field evidence and lab evidence answer different questions and must stay separate in the brief.

Related tools

  • Chrome UX Report
  • PageSpeed Insights

Evidence chains

An evidence chain is how a finding is presented: each link is labeled as a verified fact, a calculated metric, a hypothesis or a recommended check, so a reviewer can see exactly where observation ends and inference begins. Two worked examples follow.

Example 1 — a snippet problem, not a ranking problem

Clicks to a pricing page fall while impressions and position hold steady, CTR falls, and the decline is concentrated on desktop, supporting a snippet or SERP-feature hypothesis rather than a ranking hypothesis.

  1. 01

    Organic clicks to /pricing fell 18% week over week

    Search Console

    Verified fact. Read from Search Analytics for the last 7 days against the previous 7-day baseline.

  2. 02

    Impressions were flat at +1%

    Search Console

    Verified fact. Demand and visibility did not fall, so this is not a lost-impressions story.

  3. 03

    Average position moved from 4.1 to 4.3

    Derived

    Calculated metric. Too small to account for an 18% click loss on its own; the ranking hypothesis weakens.

  4. 04

    CTR fell from 6.4% to 5.2%, concentrated on desktop

    Derived

    Calculated metric. Mobile CTR was broadly unchanged, which localises the change to one device class.

  5. 05

    A desktop SERP-feature or snippet change is suppressing clicks

    Unproven

    Hypothesis. Competing hypothesis considered and retained as weaker: a title rewrite shipped in the same window.

Recommended check

Ask a human to inspect the live desktop SERP and the page's title and description before anyone edits content.

Example 2 — a measurement problem masquerading as a traffic problem

Analytics sessions drop sharply while search clicks are unchanged, and the drop starts on a deployment date, supporting a tracking hypothesis rather than an SEO hypothesis.

  1. 01

    Organic sessions fell 41% day over day

    GA4

    Verified fact. Read from the Data API for organic search sessions by landing page.

  2. 02

    Search clicks for the same pages were unchanged

    Search Console

    Verified fact. Two independent sources disagree. Because they measure different stages, the disagreement is the signal.

  3. 03

    The drop begins exactly on a release date and affects only two templates

    Derived

    Calculated metric. A step change on a single date rarely reflects search behavior.

  4. 04

    Analytics tagging on those templates changed during the release

    Unproven

    Hypothesis. Alternative hypotheses — consent-banner changes and bot filtering — are retained until the tag check returns.

Recommended check

Ask a human to verify tag firing on the affected templates for the deployment date before any SEO work is scheduled.

Confidence scoring

Every hypothesis carries a score from 0 to 100 and the band that score falls in. The bands are our editorial convention — they exist so “probably” means the same thing in every brief.

Connector Scout confidence bands. Editorial convention, not a vendor specification.

90–100

Band
Very high
What it means
Two or more independent primary sources agree, and no plausible alternative explanation survives.

75–89

Band
High
What it means
One primary source plus corroborating evidence; alternatives were checked and ruled out.

50–74

Band
Moderate
What it means
A single primary source, or corroboration that is directional rather than conclusive.

25–49

Band
Low
What it means
Pattern-consistent but unconfirmed; competing explanations remain open.

0–24

Band
Speculative
What it means
A hypothesis worth testing only. Never act on it without validation.

How the brief labels every statement. Compact by design — a reviewer should read it in seconds.

Verified fact

What it means
Read directly from a source API.
What it must carry
Source, metric, window.
Can it justify action?
Yes, as evidence.

Calculated metric

What it means
Derived from stored source data.
What it must carry
The derivation and its inputs.
Can it justify action?
Yes, if the derivation is stated.

Hypothesis

What it means
The model's candidate explanation.
What it must carry
A confidence score and a test.
Can it justify action?
No — it justifies a check.

Recommended check

What it means
The action a human should take next.
What it must carry
The source that would settle it.
Can it justify action?
It is the action.

Prioritization framework

Five inputs decide what reaches the top of the brief. They are deliberately not collapsed into one score: reviewers need to see why something was ranked first, and a hidden weighting is impossible to argue with.

What the analyst weighs before it hands anything to a human

Impact

How much value is at stake if this is real?

Size it in the currency the business uses — revenue, leads, or clicks on commercially important templates — not in percentage change on a low-volume URL.

High / medium / low

Confidence

How well is the diagnosis evidenced?

Use the band the finding earned. A speculative finding with large impact is a research task; a very-high-confidence finding with modest impact may still be the better first move.

0–100 band

Effort

What will it cost to validate and to fix?

Score validation effort separately from remediation effort. Cheap validation on an uncertain finding often beats expensive work on a certain one.

Hours / days / weeks

Reversibility

How easily can the change be undone?

Title and metadata edits are near-reversible; redirect maps, template rewrites and URL migrations are not. Irreversible work needs a higher confidence bar.

Reversible / partial / one-way

Urgency

Does waiting make the outcome worse?

Compounding problems — deindexation, broken canonicals, a spreading regression — outrank stable ones of equal size. A flat decline can wait a day for better evidence.

Now / this week / backlog

Architecture#

The pipeline is the same whichever build you choose: collect read-only data on a schedule, normalize it, detect material change, diagnose it with evidence attached, brief a human, and stop there.

Three principles keep the output trustworthy. Evidence before explanation: every recommendation should be traceable to one or more verified data sources. Facts before hypotheses: the brief must separate verified facts, calculated metrics, hypotheses and recommended validation steps, and never blur them. Multiple sources beat one: a finding supported by two independent sources deserves higher confidence than a finding from a single API.

Useful pairings in practice are Search Console with GA4, Search Console with Ahrefs, GA4 with Clarity, and Search Console with Clarity and Semrush. Corroboration is what makes the difference between an analyst and a chart.

Every claim in a brief carries a label

  • Verified fact — read directly from a source API
  • Calculated metric — derived from stored source data
  • Hypothesis — the model's explanation, marked as unproven
  • Recommended validation — the check a human should run to confirm it
The daily analyst pipeline

Collect read-only data from each source, normalize it into one comparable shape, detect material change against stored baselines, diagnose flagged deltas with evidence attached, brief a human, and stop for review.

  1. 01Collect

    Read-only pulls from each official API or MCP server on a fixed schedule.

    • Search Console
    • GA4
    • CrUX
  2. 02Normalize

    Map every source into one dated, comparable metric shape.

    • Shared schema
  3. 03Detect

    Compare against stored baselines and apply validation rules.

    • Thresholds
  4. 04Diagnose

    The model investigates flagged deltas across sources before explaining them.

    • MCP
    • System prompt
  5. 05Brief

    A short daily brief separates facts, metrics, hypotheses and checks.

    • Daily brief
  6. 06Human review

    A person approves anything that would change the site.

    • Read-only by default

Choose Your Build#

There are two recommended architectures. Option A is an interactive AI workspace; Option B is a scheduled AI analyst. Both are legitimate — the choice depends on how repeatable and auditable the output has to be.

Option A — Interactive AI workspace suits independent consultants, small teams, experimentation and ad hoc analysis. You work in an AI chat interface, use official MCP servers where the vendor provides one, and add custom read-only tools for platforms that do not. Investigations are human-driven. It is fast to set up, flexible and needs almost no infrastructure, but it is less repeatable, depends on manual prompting, and handles historical processing poorly.

Option B — Scheduled AI analyst suits agencies, enterprise SEO, large content libraries and recurring executive reporting. Data sources feed a scheduled extraction step, then a normalized data store, then validation rules, then the LLM investigation, then the daily brief, then human review. It is repeatable, easier to audit, better at historical analysis, cheaper in API cost over time, and easier to govern.

The two recommended architectures compared.

Best for

Option A — Interactive workspace
Consultants, small teams, experimentation, ad hoc analysis
Option B — Scheduled analyst
Agencies, enterprise SEO, large content libraries, recurring reporting

How it runs

Option A — Interactive workspace
AI chat interface, human-driven investigations
Option B — Scheduled analyst
Scheduled extraction, normalized store, validation rules, then the model

Setup effort

Option A — Interactive workspace
Fast; low infrastructure
Option B — Scheduled analyst
Higher; a store and a scheduler

Repeatability

Option A — Interactive workspace
Lower — depends on manual prompting
Option B — Scheduled analyst
Higher — same inputs every run

Auditability

Option A — Interactive workspace
Harder to reconstruct a past answer
Option B — Scheduled analyst
Easier; runs and outputs are logged

Historical analysis

Option A — Interactive workspace
Limited historical processing
Option B — Scheduled analyst
Better; baselines are stored

API cost over time

Option A — Interactive workspace
Grows with ad hoc querying
Option B — Scheduled analyst
Lower; scheduled pulls are deduplicated

Write access

Option A — Interactive workspace
None — read-only tools only
Option B — Scheduled analyst
None — read-only end to end

Option B data flow

  1. SEO data sources
  2. Scheduled extraction
  3. Normalized data store
  4. Validation rules
  5. LLM investigation
  6. Daily brief
  7. Human review

Connection Options#

This guide classifies every integration with one of four labels, so you always know whether a capability is vendor-supported or something you are building yourself.

The labels matter for governance as much as for setup. An official MCP server is maintained by the vendor and documented publicly. A custom pipeline over an official API is your code, your credentials and your responsibility — which is fine, provided the distinction is recorded rather than assumed.

A minimum viable analyst does not need all six sources. Search Console, GA4 and Core Web Vitals data are enough to answer the four daily questions for most sites; the rest add off-site and behavioral context.

How this guide labels every integration.

Official MCP

Meaning
Vendor-supported Model Context Protocol integration.

Official API

Meaning
Vendor-supported API requiring your own application or pipeline.

Custom MCP / pipeline

Meaning
Your implementation exposing official APIs to an AI client.

Optional

Meaning
Helpful, but not required for a minimum viable analyst.

Data sources covered by this guide and how each one is reached.

Google Search Console

Classification
Official API + custom MCP/pipeline
In a minimum build?
Yes

Google Analytics 4

Classification
Official API + custom MCP/pipeline
In a minimum build?
Yes

Ahrefs

Classification
Official MCP + official API
In a minimum build?
Optional

Semrush

Classification
Official MCP + official API
In a minimum build?
Optional

Microsoft Clarity

Classification
Official MCP + official API
In a minimum build?
Optional

Core Web Vitals

Classification
Official API
In a minimum build?
Yes

Ahrefs

Verified

Off-site corroboration — backlink and referring-domain records plus third-party organic estimates — through the hosted Ahrefs MCP server for investigation, or Ahrefs API v3 for scheduled pulls.

Semrush

Verified

Position Tracking measurements for a keyword set you configure, backlink records, keyword demand context and — for subscribers — Traffic & Market data, through the Semrush MCP server or the Standard API.

Google Search Console#

Search Console is the foundation of the analyst because it is Google's own reporting on how your site performs in Google Search. It is the primary "before the click" data source in this guide.

If the analyst only reads analytics data, it cannot tell a demand problem from a ranking problem, a CTR problem or a tracking problem. Search Console fills that gap by showing what happened in Google Search before the visitor ever reached the site, which makes it the primary evidence source whenever organic visibility changes.

Google documents three API surfaces for this work: Search Analytics for performance reporting, the URL Inspection API for the indexing and rich-results state of a single URL, and the Sitemaps API for sitemap submission and status. Treat those references as the authoritative description of what the platform provides.

Questions the analyst should be able to answer from Search Console alone

  • Which pages gained or lost clicks?
  • Which queries changed?
  • Did impressions change?
  • Did average position change?
  • Did CTR change?
  • Which devices were affected?
  • Which countries were affected?
  • Is the change isolated to a few URLs or site-wide?

Daily workflow

Each daily run compares the current reporting window with an appropriate historical baseline. The investigations below are editorial recommendations, not Google requirements, and each one is a ranked list rather than a single number.

Suggested daily investigations

  • Largest click declines
  • Largest click gains
  • Largest impression declines
  • Largest CTR declines
  • Largest ranking changes
  • Emerging queries
  • Declining queries

Investigation pattern

Never start a traffic investigation in GA4. Establish first whether search visibility changed; if impressions and clicks are stable, the root cause is probably elsewhere.

When a page loses traffic

  1. Confirm the click decline against the stored baseline.
  2. Check impressions to separate lost demand from lost visibility.
  3. Check average position for a ranking shift.
  4. Check CTR for a snippet or SERP-feature effect.
  5. Compare the affected queries, not just the page total.
  6. Escalate to GA4, Ahrefs, Semrush or Clarity for corroboration before recommending anything.

Common mistakes

Each of these skips a step. Gather evidence from more than one source before the analyst recommends an action.

Assumptions the brief must not make

  • Fewer sessions automatically means rankings dropped.
  • Average position alone explains a traffic change.
  • A CTR decline always calls for rewriting titles.

Data quality notes

Account for reporting latency, for the aggregation and anonymisation characteristics Google documents for the Performance report, and for the fact that Search Console and analytics tools measure different stages of the journey. Do not expect Search Console clicks to match GA4 sessions, and do not let the analyst treat the difference as a finding.

What a good finding looks like

Finding: organic clicks to /pricing declined 18% week over week. Evidence: impressions remained stable, average position changed minimally, CTR declined, and desktop saw the largest drop. Recommendation: review search snippets, title tags and recent SERP changes before considering content revisions.

The shape matters as much as the content — a labeled fact, the corroborating evidence behind it, and a recommendation that names a check rather than a change.

Metrics to capture on every Search Console run.

Clicks

Why it matters
Organic traffic from Google Search.

Impressions

Why it matters
Search demand and visibility.

CTR

Why it matters
Snippet performance.

Average position

Why it matters
Ranking trend indicator.

Recommended dimensions

  • Page
  • Query
  • Country
  • Device
  • Date

Google Analytics 4#

Search Console answers "how did users find us?". GA4 answers "what happened after they arrived?". It is the behavioral layer of the investigation — engagement, key events and business outcomes rather than search visibility.

An analyst that reads only search data can tell you that clicks fell. It cannot tell you whether the visitors who did arrive found what they came for, whether a template change broke a form, or whether a traffic gain reached anything the business cares about. GA4 supplies that half of the story, and only that half: it has no view of impressions, queries or ranking.

GA4 is event-based rather than session-based. Everything it records — a page view, a scroll, a click, a purchase — is an event with parameters, and sessions are derived from those events rather than the other way round. That single fact changes how the analyst should query it: you are asking which interactions occurred and how often, not how long someone stayed on a site.

Everything stated about GA4's behavior, metric definitions, reports and limits in this section comes from Google's own Analytics Help and Data API documentation, linked at the end of the section. The investigation workflows, diagnostic patterns and checklists are Connector Scout editorial guidance and are labeled as such.

What GA4 measures: the event model

GA4 records interactions as events with parameters, and derives sessions from those events. Google documents four event categories: automatically collected events such as page_view, session_start, first_visit and user_engagement; enhanced measurement events such as scroll, outbound click, site search, video engagement and form interactions, which are toggled in the interface rather than coded; recommended events such as purchase, which have documented names and parameters but are not sent automatically; and custom events you define yourself.

The four event categories GA4 documents, and what each one gives the analyst.

Automatically collected

Documented examples
page_view, session_start, first_visit, user_engagement
What the analyst does with it
Baseline traffic and engagement. Present without any tagging work beyond installing the Google tag.

Enhanced measurement

Documented examples
scroll, outbound_click, site_search, video engagement, form_start and form_submit
What the analyst does with it
On-page behavior that needs no code, but is toggled per data stream — confirm which toggles are on before trusting an absence of data.

Recommended

Documented examples
purchase and the other events Google names for a vertical
What the analyst does with it
Documented names and parameters for common business actions. Not sent automatically; they need implementing.

Custom

Documented examples
Events you define for interactions specific to your business
What the analyst does with it
Everything the standard set does not cover. Google's own guidance is to check the event is not already collected before creating one.

Above that sits the concept the brief should actually lead with. Google documents a key event as an event that measures an action particularly important to the success of the business, and states that any event you collect can become a key event: you create or identify the event, then mark it as key. Google also documents that historical conversion data remains available as key-event data, so year-over-year comparisons still work for events that were already being collected. What does not exist is data for an event that was never collected — an event first configured on Tuesday has nothing before Tuesday — and Google Ads conversions shared with Analytics have no historical data associated with them.

GA4 in the evidence layer

GA4 is layer two of the five evidence layers described earlier in this guide: the behavioral layer. It proves what visitors did. It cannot prove why they did it, and it has no view of search visibility at all.

The primary question each evidence source answers. Connector Scout framing; the underlying capabilities are vendor-documented.

Google Search Console

Primary question
Can users find the page?
What it cannot tell you
Whether anyone who arrived did anything useful.

Google Analytics 4

Primary question
Do users find value once they arrive?
What it cannot tell you
Why they behaved that way, or how visible the page was in search.

Microsoft Clarity

Primary question
Why do they behave this way on the page?
What it cannot tell you
Whether the pattern is site-wide or affects outcomes at scale.

Ahrefs / Semrush

Primary question
How competitive is the topic, and what changed off-site?
What it cannot tell you
Anything about your own users; these are third-party estimates.

Core Web Vitals (CrUX / PSI)

Primary question
Is page performance plausibly affecting behavior?
What it cannot tell you
Whether performance caused a specific engagement change.

Primary questions the analyst answers with GA4

  • Did the visitors who arrived engage, or did they leave immediately?
  • Which landing pages absorb traffic well, and which lose it?
  • Which pages carry disproportionate business value?
  • Did the acquisition mix change, and did quality change with it?
  • Where in the journey do users drop off before a key event?
  • Did the outcome the business cares about move, or only the traffic?
  • Is this a behavior change at all, or a measurement change dressed up as one?

Core reports and the questions they answer

The distinction that matters most here is traffic acquisition versus user acquisition. Google documents the traffic acquisition report as showing where new and returning users come from, and the user acquisition report as showing how new users found the site for the first time. They disagree by design, and an analyst that treats the difference as an error will keep filing false discrepancies.

Standard GA4 reports, framed by the investigation question each answers.

Traffic acquisition

Question it answers
Where do new and returning users come from?
Analyst note
Session-scoped. This is the report to use when asking whether an organic session change is isolated to organic.

User acquisition

Question it answers
How did new users find the site for the first time?
Analyst note
User-scoped first-touch. Divergence from traffic acquisition is a returning-visitor story, not a discrepancy.

Landing page

Question it answers
Which page did the visit start on, and how many visits started there?
Analyst note
The join point with Search Console. Search-side page data and GA4 landing pages describe the same entry URL.

Pages and screens

Question it answers
Which individual pages and app screens were viewed?
Analyst note
All views, not entrances. Useful for internal-journey questions, misleading if read as arrival data.

Events

Question it answers
How many times was each event triggered, and by how many users?
Analyst note
Confirms whether measurement itself changed — a missing event is often a tagging incident, not a behavior change.

Key events

Question it answers
Did the actions the business cares about happen?
Analyst note
Any collected event can be marked as a key event. Historical conversion data remains available as key-event data, so year-over-year comparison is possible; a newly created event only has data from the point collection began.

Explorations

Question it answers
Can I interrogate a hypothesis beyond a standard report?
Analyst note
Ad hoc techniques for a human, not a stable daily feed. Keep scheduled runs on the API.

Google also documents a Search Console integration for GA4 that surfaces two reports — Google Organic Search Queries and Google Organic Search Traffic — once a property is linked. It is a convenience for human review, not a substitute for reading the Search Console API directly, which is where Part 2 of this guide gets its evidence.

Important metrics, and when each one lies

Metric definitions come from Google’s documentation, and each badge shows the Data API metric name from the official GA4 schema — which does not always match the interface wording (the UI’s Average engagement time is derived from the API’s userEngagementDuration, and the API’s current outcome metric is keyEvents). The failure modes are Connector Scout editorial guidance — a metric without a stated failure mode is how a brief ends up claiming a number proves something it cannot.

GA4 metrics an analyst should read together, never alone

  • Sessions

    sessions
    Measures
    Visits to the site or app, derived from the events GA4 collects rather than counted directly.
    Why it matters
    The denominator for most rate metrics, and the closest GA4 analogue to a search-side click.
    Misleading when
    Read as equivalent to Search Console clicks. The two count different stages of the journey and will not match.

    AnswersDid the volume of visits change at all?

  • Total users / active users

    totalUsers, activeUsers
    Measures
    Distinct users, and users with an engaged session, over the requested window.
    Why it matters
    Separates a traffic change from the same people visiting more often.
    Misleading when
    Compared across windows of different lengths, or treated as people rather than as identifiers GA4 could resolve.

    AnswersAre we reaching more people, or the same people more often?

  • Engaged sessions

    engagedSessions
    Measures
    Sessions that lasted longer than 10 seconds, or had a key event, or had 2 or more screen or page views — any one of the three qualifies.
    Why it matters
    The cheapest available proxy for whether arriving visitors got something out of the page.
    Misleading when
    Applied to a page whose job is answered instantly. A correct one-screen answer that takes eight seconds is not a failure.

    AnswersDid visitors engage, or did they arrive and leave?

  • Engagement rate

    engagementRate
    Measures
    Engaged sessions divided by sessions. Google documents bounce rate as the exact opposite of this metric, and the Data API returns the rate as a fraction.
    Why it matters
    Normalizes engagement so a traffic gain and a quality decline can be told apart.
    Misleading when
    Compared across pages with different intent, or when a mix shift — new channel, new country — changes the population rather than the content.

    AnswersDid the quality of the visit change, independent of volume?

  • Average engagement time (UI)

    userEngagementDuration
    Measures
    The Data API returns userEngagementDuration — total time, in seconds, the app was in the foreground or the website in focus, sent by the Google tag in an engagement_time_msec parameter. The interface's Average engagement time divides that total by users; the API leaves the division to you.
    Why it matters
    Focus-based timing, so background tabs do not inflate it the way older session-duration metrics did.
    Misleading when
    Treated as reading time, quoted as an average straight from the API without dividing by users or sessions, or used on pages where a single measured event ends the session and truncates the timing.

    AnswersDid visitors spend meaningfully less time with the content?

  • Views

    screenPageViews
    Measures
    Total page and screen views, including repeat views within a session.
    Why it matters
    Distinguishes an entrance problem from an internal-navigation problem.
    Misleading when
    Substituted for landing-page entrances when diagnosing a search-driven change.

    AnswersDid consumption change, or only arrivals?

  • Event count

    eventCount
    Measures
    How many times events were triggered, filterable by event name.
    Why it matters
    The measurement-integrity check. A collapse in one event name with everything else stable usually means tagging, not behavior.
    Misleading when
    Summed across event names as if the total meant anything. Event volume is a function of what you chose to measure.

    AnswersIs this a behavior change or a tracking change?

  • Key events

    keyEvents
    Measures
    The count of events marked as key — Google's current name for the important Analytics events previously labeled conversions. Any collected event can be marked as one. In the Data API, keyEvents is the metric name; conversions remains as a deprecated alias.
    Why it matters
    The closest GA4 metric to a business outcome, and the one a brief should lead with.
    Misleading when
    Read across a period in which the key-event definition changed. Historical conversion data is available as key-event data, so year-over-year comparison works for events that were already being collected — but an event created last Tuesday has no data before last Tuesday, and Google Ads conversions shared with Analytics carry no historical data at all.

    AnswersDid the outcome the business cares about actually move?

  • Total revenue

    totalRevenue
    Measures
    Revenue from purchase and other monetisation events, where ecommerce measurement is implemented.
    Why it matters
    Ends the argument about whether a traffic change mattered.
    Misleading when
    Read on a site with partial ecommerce implementation, or attributed to organic search without checking the channel dimension.

    AnswersDid the change reach the bottom of the funnel?

Documented data-quality constraints

Four documented behaviors produce most of the false alarms we see in automated GA4 reporting. They are separate mechanisms and should not be conflated: processing latency, sampling in explorations and ad-hoc queries, cardinality and the (other) row, and system-defined thresholding. Encode each in the pipeline rather than hoping the model notices.

Data freshness
Google documents that data processing can take 24–48 hours and that data in reports may change during that time. Realtime data arrives within minutes, standard intraday within 2–6 hours, and Analytics 360 has shorter intervals. A daily analyst that reads yesterday and treats it as final will manufacture declines.
Sampling in explorations and ad-hoc queries
Sampling is documented as an explorations and ad-hoc query behavior: Google's configuration limits state 10M events per query for explore sampling and that ad-hoc queries processing beyond 10M events will be sampled, while standard queries are not affected by this limit. Do not describe every Data API report as sampled past 10 million events; the Data API has its own separate quota system.
Cardinality and the (other) row
Google defines high-cardinality dimensions as those with more than 500 unique values in a day and documents that they make a report more likely to hit its row limit, condensing the remainder into a row labeled (other). Page path on a large site is the usual trigger, and stricter cardinality limits can apply while only intraday data is available.
Data thresholds
Google documents system-defined thresholds that withhold data from a report, exploration or API call — typically where demographic, audience or search-query data is involved and there are not enough users. Withheld rows are not zeros, and a narrow date range makes thresholding more likely. The data-quality indicator in the interface reports when it has been applied.

Investigation workflows

Two worked chains, following the same evidence-labeling convention as the mindset chapter: each link is a verified fact, a calculated metric, a hypothesis or a recommended check.

Chain 1 — stable visibility, degraded behavior

Search Console impressions and clicks are unchanged while GA4 engagement rate, average engagement time and key events all fall, pointing at content or user experience rather than search.

  1. 01

    Search Console impressions unchanged

    GSC · flat

    Verified fact. Search demand and visibility for the affected URLs held flat against the stored baseline.

  2. 02

    Search Console clicks unchanged

    GSC · flat

    Verified fact. CTR and average position moved within normal variance, so the search-side journey is intact.

  3. 03

    GA4 engagement rate down

    GA4 · down

    Calculated metric. Engaged sessions divided by sessions fell for the same landing pages over the same window. Same visitors arriving, fewer of them qualifying as engaged.

  4. 04

    GA4 average engagement time down

    GA4 · down

    Calculated metric. Focus time per session declined alongside the rate, so this is not a single-threshold artefact.

  5. 05

    GA4 key events down

    GA4 · down

    Verified fact. The outcome the business cares about fell too, with no key-event definition change in the window to explain it.

  6. 06

    Event count for the affected events is stable

    GA4 · flat

    Verified fact. Tagging is intact — the events are still firing at normal volume elsewhere, so this is behavior rather than measurement.

Conclusion

Search visibility is healthy; content quality or on-page experience most likely changed. Recommended next check: compare the affected templates against recent deploys, then look at Clarity for the page-level behavior before recommending any content change.

Chain 2 — top of funnel improved, bottom of funnel did not

Sessions and download key events rose while revenue stayed flat, isolating the problem to the conversion step rather than acquisition.

  1. 01

    GA4 sessions up

    GA4 · up

    Verified fact. Organic sessions to the affected landing pages rose against the baseline.

  2. 02

    Download key event up

    GA4 · up

    Verified fact. The mid-funnel key event rose roughly in proportion to sessions, so the new traffic behaves like the old traffic.

  3. 03

    Total revenue unchanged

    GA4 · flat

    Verified fact. Monetisation events did not move, and the ecommerce implementation was unchanged in the window.

  4. 04

    Traffic acquisition shows the gain is concentrated in one channel

    GA4 · localized

    Verified fact. The increase is not spread evenly, which makes an intent difference a live explanation rather than an afterthought.

Conclusion

Top-of-funnel content improved; bottom-of-funnel conversion needs investigation. Recommended next check: confirm the new sessions match the intent the money pages serve — the honest alternative explanation is that the added traffic was never going to convert, which is a targeting finding, not a conversion-rate problem.

Common diagnostic patterns

Recurring shapes in the data, the explanation each usually supports, and the check that settles it. This is Connector Scout editorial guidance built on the documented GA4 behaviors above.

GA4 diagnostic pattern library

  • Measurement incident, not a behavior change

    Confidence 72% — Moderate confidence
    • GA4: one event name decreased
    • GA4: sessions unchanged
    • GSC: clicks unchanged
    Usually means
    A tag, consent banner or enhanced-measurement toggle changed, so the event stopped being collected while behavior carried on unchanged.
    Rule out first
    A genuine collapse in that specific interaction — check whether related events on the same page also moved.
    Next check
    Read the Events report for the exact event name and date of the break, then confirm the enhanced-measurement settings for that data stream.
  • Mix shift masquerading as a quality decline

    Confidence 68% — Moderate confidence
    • GA4: engagement rate decreased
    • GA4: sessions increased
    • GA4: key events unchanged
    Usually means
    New traffic with different intent diluted the rate. The existing audience behaved the same; the population changed.
    Rule out first
    An actual content regression, which would show engagement falling within a stable channel and country.
    Next check
    Segment engagement rate by channel, landing page and country before concluding anything about content quality.
  • Search-side cause, GA4 symptom

    Confidence 82% — High confidence
    • GSC: impressions decreased
    • GA4: sessions decreased
    • GA4: engagement rate unchanged
    Usually means
    Visibility fell and fewer people arrived, but those who did behaved normally — the GA4 decline is downstream of a search change.
    Next check
    Return to Search Console for the query and position detail. The GA4 numbers are corroboration here, not the finding.
  • Cardinality artefact

    Confidence 74% — Moderate confidence
    • GA4: a page-path row decreased
    • GA4: the (other) row increased
    Usually means
    The dimension exceeded the table row limit, so real traffic was folded into (other). Nothing about behavior changed.
    Next check
    Re-run the query with a narrower date range or a filtered page set, and flag the (other) row in any brief that quotes page-level GA4 numbers.
  • Freshness artefact

    Confidence 86% — High confidence
    • GA4: yesterday's sessions decreased
    • GA4: the prior week unchanged
    Usually means
    The most recent day is still processing. Google documents 24–48 hours for processing, during which reported figures can change.
    Next check
    Exclude the incomplete window from comparisons, or re-read the same window a day later before raising an alert.

Combining GA4 with other evidence

The landing page is the join key. Search Console reports on the page that appeared in search results; GA4 reports on the page a visit started on. Store both against the same URL and a single question becomes answerable in one pass: did fewer people arrive, or did the people who arrived behave differently?

AI analyst checklist — behavioral investigation

  1. 01Start with the business question

    Not with a metric that happened to move.

    • State which of the four daily questions this run is answering.
    • Name the outcome — a key event, revenue, a qualified lead — that would make the change matter.
    • Write down the window and the baseline before looking at any number.
  2. 02Verify discoverability in Search Console first

    • Check impressions and clicks for the affected URLs before opening GA4.
    • If search visibility moved, treat GA4 as corroboration rather than as the finding.
  3. 03Validate behavior in GA4

    • Confirm the window is not still processing, and exclude incomplete days.
    • Read sessions, engagement rate, average engagement time and key events together, never one alone.
    • Check event count for the specific events involved to rule out a measurement incident.
    • Segment by channel and landing page to separate a mix shift from a quality change.
    • Note whether an (other) row or a withheld threshold row affects the figures you are quoting.
  4. 04Investigate user experience only for pages the data flagged

    • Take the flagged landing pages to Clarity for page-level behavior.
    • Check field performance data where a speed or layout regression is plausible.
  5. 05Corroborate before recommending

    • Require a second evidence layer before confidence rises above Moderate.
    • Label every link in the chain as a verified fact, a calculated metric, a hypothesis or a recommended check.
    • Recommend a check, not a change, whenever the cause is still a hypothesis.
Editorial procedure, not a vendor requirement. It exists so a reviewer can audit how a conclusion was reached, not just what it claims.

Common mistakes

Best practices

Key takeaway

Ahrefs#

Search Console and GA4 are first-party: they describe your search performance and your visitors. Ahrefs is the off-site layer — third-party crawl records and modelled estimates that tell the analyst what changed outside your own property, and how the competitive field looks.

Ahrefs earns its place in a daily analyst for one reason: some declines have no first-party explanation. Impressions fall, engagement is unchanged, nothing shipped — and the only remaining explanation lives outside the site, in links that disappeared or competitors that moved. Ahrefs is where that evidence is found, and it is the only layer in this guide that is not measuring your own users.

That also makes it the layer most easily over-read. Ahrefs backlink records come from Ahrefs' own crawl, and its traffic and traffic-value figures are estimates that Ahrefs models from keyword rankings — neither is Google data and neither can override Search Console. This chapter treats counts of crawled links as observations, and everything traffic-shaped as an estimate that must be labeled as one.

Every product, endpoint, plan and pricing claim below comes from Ahrefs' own documentation, linked at the end of the section. The daily-versus-weekly split, the interpretation rules, the diagnostic patterns and the confidence caps are Connector Scout editorial guidance and are labeled as such.

What Ahrefs contributes to the evidence model

Ahrefs sits in the off-site layer: third-party crawl records of links and modelled estimates of organic performance. It corroborates first-party findings and explains declines that have no on-site cause. It never measures your search performance or your users, so it cannot overrule Search Console or GA4.

MCP for investigation, API v3 for schedules

The two documented ways to reach Ahrefs data. Product facts from Ahrefs documentation; the 'use it for' column is Connector Scout editorial guidance.

Hosted remote MCP server

What Ahrefs documents
A hosted MCP server that lets supported AI tools access Ahrefs API data. Streamable HTTP endpoint https://api.ahrefs.com/mcp/mcp is recommended; the legacy SSE endpoint https://api.ahrefs.com/mcp/mcpSse is deprecated in many tools. Available on paid plans starting from Lite, with plan-specific row limits and monthly API units. Ahrefs states the external MCP endpoint is not a general-purpose programmatic API, and that using it via custom scripts, bridges or standalone HTTP/JSON-RPC clients is unsupported and not permitted.
Use it for (editorial)
Interactive investigation inside a supported AI client — the follow-up questions a human asks after the brief flags something off-site.

Ahrefs API v3

What Ahrefs documents
The current public API, covering Site Explorer, Keywords Explorer, SERP Overview, Rank Tracker, Site Audit, Batch Analysis, Brand Radar, Social Media Management, Management, subscription/usage and public endpoints. Available on eligible paid plans; other plans get a limited set of free test queries. Most paid requests consume API units. Ahrefs names it the supported route for programmatic access.
Use it for (editorial)
Every scheduled pull in the daily pipeline: fixed field sets, small row counts, stored against a baseline.

Connecting, plans and API units

Connecting a supported AI client to the hosted MCP server presents an authorization consent screen and creates a dedicated API key tagged with MCP scope; workspace admins can set a monthly API-unit limit for each key. The recommended Streamable HTTP endpoint is https://api.ahrefs.com/mcp/mcp, and the SSE endpoint https://api.ahrefs.com/mcp/mcpSse is legacy.

How a request is priced

Ahrefs documents the cost of a request as max(base_cost, per_row_cost × num_rows). The base cost is 50 units, and the per-row cost is the sum of the costs of each unique field appearing in the returned result or in the `where` and `order_by` parameters. Most fields cost 1 unit; some are documented at 5 or 10 units — estimated organic traffic and traffic value among them.

Units are non-refundable

Ahrefs states that API units, once consumed, are non-refundable, and recommends using the free test queries for development and testing and putting limits on API keys. A pipeline bug that pulls a full backlink inventory on a schedule spends real allowance you cannot get back.

Documented efficiency guidance

Ahrefs recommends requesting only the fields you need with `select`, limiting the number of rows, using bulk endpoints where possible, and checking your limits and usage. Because cost scales with both rows and fields, a scheduled daily full export is usually the most expensive way to learn the least.

Plans, keys and limits

API access is available on eligible paid plans, with a limited set of free test queries elsewhere; the remote MCP server is available on paid plans from Lite upward, with plan-specific maximum rows per request and a monthly API-unit allowance. Connecting an AI tool shows an authorization consent screen and creates a dedicated API key tagged with MCP scope, and workspace admins can set a monthly API-unit limit per key.

Endpoints worth wiring

High-value Site Explorer endpoints, the question each answers, and how the output must be labeled in a brief.

Site Explorer — Metrics (`/site-explorer/metrics`)

Question it answers
How large is this target's organic footprint, and how does a competitor's compare?
Output type
Estimate. Returns estimated monthly organic traffic and traffic value (both documented as estimates), plus organic keyword counts, keywords in the top 3, and the equivalent paid metrics.

Site Explorer — Backlinks stats (`/site-explorer/backlinks-stats`)

Question it answers
Did the link and referring-domain totals for this target change?
Output type
Count of Ahrefs crawl records. Returns live backlinks, live referring domains, all-time backlinks and all-time referring domains, reported for a requested date.

Site Explorer — Backlinks (`/site-explorer/all-backlinks`)

Question it answers
Which specific links exist, appeared or were lost for this target?
Output type
Link-level Ahrefs crawl records. Supports target scope (exact, prefix, domain, subdomains), aggregation, a history window, ordering, filtering and selected fields, and returns attributes including source and target URL, anchor, first seen, last seen, lost and new flags, follow/nofollow and redirect flags, and quality fields where selected.

Site Explorer — Best pages by backlinks (`/site-explorer/pages-by-backlinks`)

Question it answers
Which of my pages carry the link equity, and which of them lost links?
Output type
Counts per page from Ahrefs' crawl: inbound links to the target page, referring domains, new and lost links for the selected window, dofollow and nofollow counts, and URL-rating fields where selected.

Site Explorer — Anchors (`/site-explorer/anchors`)

Question it answers
How is the link profile described, and did that description shift?
Output type
Counts per anchor: inbound backlinks and referring domains for a given anchor, plus new and lost links across the selected history window.

Site Explorer — Broken backlinks (`/site-explorer/broken-backlinks`)

Question it answers
Which inbound links point at something that no longer resolves?
Output type
Broken backlink records for the target — the closest thing in this chapter to an actionable list, because a recoverable link is a concrete task.

Connector Scout editorial guidance: what a daily analyst should pull from Ahrefs, and what belongs in a weekly or on-demand pass.

Daily or alert-triggered

What to pull
Backlink and referring-domain totals for a short list of priority domains and pages; newly found and lost links for pages the brief has already flagged; broken backlinks for high-value pages; the subscription limits and usage endpoint.
Why
Small, fixed row counts against a known target list. This is enough to notice an off-site change and nothing more — the investigation itself happens interactively.

Weekly or on demand

What to pull
Broad backlink inventories, anchor distributions, pages by backlinks, competitor organic estimates, keyword and market exploration, Site Audit, Brand Radar and SERP pulls.
Why
These answer strategic questions that do not change daily, and they are the pulls that return thousands of rows.

Reading Ahrefs metrics

Ahrefs metrics an analyst reads daily — definition from Ahrefs documentation, failure mode from Connector Scout

  • Live referring domains

    live_refdomains
    Measures
    Documented as the total number of unique domains linking to your target, reported for the date you request.
    Why it matters
    The steadiest off-site signal there is. Unique domains move slowly, so a genuine drop is worth reading, where a raw link-count drop often is not.
    Misleading when
    Read as a Google-visible fact. It is a count of what Ahrefs' crawler currently has on record, and crawl coverage and recrawl timing differ from Google's.

    AnswersDid anything change in who links to us?

  • Live backlinks

    live
    Measures
    Documented as the total number of links from other websites pointing to your target, alongside all-time totals for links and referring domains.
    Why it matters
    Gives the scale of the profile and the size of any movement relative to it. All-time versus live is the difference between what ever existed and what Ahrefs currently sees.
    Misleading when
    A single site-wide template link changes on a large referring domain and thousands of backlinks move without a single referring domain changing. Lead with domains, not links.
  • Estimated organic traffic

    org_traffic (10 units)
    Measures
    Documented as the estimated number of monthly visitors that your target gets from organic search.
    Why it matters
    The only way to size a competitor's search performance, since you have no first-party access to their analytics.
    Misleading when
    Applied to your own property. You have Search Console and GA4 for that, and a model of your traffic must never contradict a measurement of it. Also one of the expensive fields, at 10 units per row.

    AnswersHow big is this competitor in organic search, roughly?

  • Estimated organic traffic value

    org_cost (10 units)
    Measures
    Documented as the estimated value of your target's monthly organic search traffic, in USD cents.
    Why it matters
    Converts a visibility difference into a number a stakeholder can weigh against paid spend.
    Misleading when
    Quoted as revenue. It is an estimate derived from another estimate — modelled traffic priced at modelled keyword costs — so give it a range and a label, never a decimal place.
  • Organic keywords and keywords in positions 1–3

    org_keywords / org_keywords_1_3
    Measures
    Documented as the total number of keywords the target ranks for in the top 100 organic results, and the number in the top 3.
    Why it matters
    Movement in the top-3 count is a cleaner competitive signal than total keywords, which drifts with database coverage.
    Misleading when
    Compared across time without accounting for Ahrefs' own index growth. Rising totals for everyone in a market is a coverage story, not a market story.
  • First seen / first seen link

    first_seen / first_seen_link
    Measures
    Documented as the date the referring page URL was first discovered, and the date Ahrefs first found a backlink to your target on that referring page.
    Why it matters
    The only timestamp available on a link, and the field a 'new links' alert is built on.
    Misleading when
    Treated as a publication date. Connector Scout interpretation: discovery is a crawl event, so a newly discovered backlink is not necessarily a newly created one — the link may have existed for months before Ahrefs reached the page.

    AnswersWhen did we learn about this link — not when was it built?

  • Lost links

    lost_links_to_target / is_lost
    Measures
    Documented per page and per anchor as the number of backlinks lost during the selected time period, with a per-link is_lost flag and a last_seen date describing when the link was discovered to be lost.
    Why it matters
    The single most useful off-site alert, because a concentrated loss on one page is a testable hypothesis rather than noise.
    Misleading when
    Read as removal. Connector Scout interpretation: a redirect change, a canonical change, source downtime at crawl time, or ordinary recrawl timing all produce lost records too, so every lost link needs manual validation before it is reported as a cause.
  • Domain Rating and URL Rating

    domain_rating_source / url_rating_target
    Measures
    Ahrefs metrics describing the strength of a domain's or page's backlink profile relative to other sites in the Ahrefs database.
    Why it matters
    A quick, consistent way to sort which lost or gained links are worth a human's attention first.
    Misleading when
    Presented as a Google ranking factor. They are Ahrefs' own scores; a change in either causes nothing, and the analyst must never write a sentence in which DR moves rankings.

Data quality and interpretation limits

Third-party data, not ground truth

Everything Ahrefs returns comes from Ahrefs' own crawl and models. It is not Google data and it is not your analytics. Connector Scout rule: when Ahrefs and a first-party source disagree, the first-party source wins and the disagreement itself is worth a line in the brief.

Estimates must carry the word 'estimated'

Ahrefs documents organic traffic and traffic value as estimates. Store them under field names that say so, and render them in the brief with the label attached, so no downstream summary can quietly promote a model output into a fact.

Discovery timing is not publication timing

The documented meaning of first seen is the date of discovery. Connector Scout interpretation: a spike in newly found links can therefore be a crawl artefact rather than a link-building result, and should never be attributed to a campaign without independent confirmation.

Lost links are hypotheses until validated

Connector Scout interpretation: the operational explanations behind a lost record — true removal, a redirect, a canonical change, source downtime at crawl time, or recrawl lag — have completely different responses, and only a manual fetch of the referring page settles which one applies. Report the check, not the cause.

No causal claims from off-site metrics

Domain Rating and URL Rating are Ahrefs metrics, not Google ranking factors, and a backlink change correlating with a ranking change is not evidence that it caused it. Connector Scout rule: an Ahrefs-only explanation caps at Moderate confidence and always ships with the competing explanation named.

Worked evidence chains

Chain 1 — a first-party decline with an off-site explanation

Search Console clicks and positions fall for one page while Ahrefs shows lost referring domains concentrated on that same URL, making backlink loss the leading hypothesis — pending a manual check.

  1. 01

    Search Console clicks down for one URL

    GSC · down

    The decline is isolated to a single page rather than spread across the section, so a site-wide or seasonal explanation is already weaker.

  2. 02

    Average position for its head queries declined

    GSC · down

    Impressions fell with clicks and position moved, so this is a visibility change rather than a snippet or CTR change.

  3. 03

    No deploy, content edit or robots change in the window

    Internal · flat

    The obvious first-party causes are eliminated before any third-party data is opened.

  4. 04

    Ahrefs live referring domains down for the domain

    Ahrefs · down

    The backlinks-stats endpoint reports fewer live referring domains than the stored baseline for the same dates.

  5. 05

    Lost links concentrated on the affected page

    Ahrefs · localized

    Best pages by backlinks shows the lost-links count for the window sitting almost entirely on the declining URL, not spread across the site.

  6. 06

    Backlink loss is the leading explanation

    Hypothesis

    Two independent layers moved together on the same URL, in the same window, with first-party causes ruled out.

  7. 07

    Fetch the top lost referring pages by hand

    Check

    Confirm whether each link was genuinely removed, redirected, made nofollow, or whether the source was simply unreachable when Ahrefs crawled it.

ConclusionReport it as: rankings for this URL declined, and Ahrefs shows referring-domain loss concentrated on the same URL over the same window. Recommended next check: manually verify the highest-rated lost links before any outreach or reclamation work is scheduled. Do not write that the lost links caused the ranking drop — write that they are the leading explanation and name the check that would confirm it.

Confidence 66% — Moderate confidence

Two independent layers agree and the internal causes were eliminated, but the off-site layer is third-party crawl data and the lost records are unvalidated. Connector Scout rule: this stays Moderate until the manual fetch comes back.

Chain 2 — when the estimate disagrees with first-party data

Ahrefs estimated organic traffic falls sharply while Search Console clicks and GA4 organic sessions are flat. The estimate loses.

  1. 01

    Ahrefs estimated organic traffic down 30%

    Ahrefs · down

    The metrics endpoint reports a large fall in estimated monthly organic visitors for our own domain.

  2. 02

    Search Console clicks unchanged

    GSC · flat

    First-party search data for the same window shows clicks and impressions inside normal variance.

  3. 03

    GA4 organic sessions unchanged

    GA4 · flat

    The behavioral layer agrees with the search layer: the same number of people arrived and behaved the same way.

  4. 04

    Ahrefs organic keyword count moved with the estimate

    Ahrefs · down

    Tracked keyword counts moved in step, which points at Ahrefs' keyword coverage or volume model rather than at our traffic.

  5. 05

    The estimate is not evidence of a traffic decline

    Hypothesis

    A modelled figure derived from third-party keyword data changed; two measurements of the actual traffic did not.

ConclusionNo traffic finding. Report it as a third-party estimate change with no first-party corroboration, note it in case a stakeholder sees the same chart, and take no action. Connector Scout rule: an estimate never overrides a measurement of the same thing — the only legitimate daily use of estimated traffic is for targets whose analytics you cannot see.

Confidence 88% — High confidence

Two first-party sources agree against one third-party model, and the vendor documents the disputed figure as an estimate. Deciding the estimate loses is close to a definitional call rather than an inference.

Common diagnostic patterns

Connector Scout editorial guidance — recurring off-site shapes and the check that settles each one

  • Link count collapses, referring domains do not

    Confidence 80% — High confidence
    • Ahrefs: live backlinks decreased
    • Ahrefs: live referring domains unchanged
    • GSC: clicks unchanged
    Usually means
    One referring domain changed a site-wide element — a footer, sidebar or template link — so thousands of links moved and the number of distinct sites linking to you did not.
    Rule out first
    A genuine multi-site loss, which would move the referring-domain count too.
    Next check
    Group the lost links by source domain. If one domain accounts for nearly all of them, this is a template change and rarely worth escalating.
  • New links spike with no campaign behind it

    Confidence 62% — Moderate confidence
    • Ahrefs: new links increased
    • GSC: impressions unchanged
    • Internal: outreach activity unchanged
    Usually means
    A crawl-discovery artefact. First seen records when Ahrefs discovered the link, so a batch of older links reaching the index at once looks like a sudden gain.
    Rule out first
    Real acquisition — a launch, a mention or a piece that was picked up in the window.
    Next check
    Sample the new records and compare the referring page's own publication date against the first-seen date before attributing anything to a campaign.
  • Lost links that were never actually removed

    Confidence 70% — Moderate confidence
    • Ahrefs: lost links increased
    • GSC: clicks unchanged
    • Ahrefs: referring domains unchanged
    Usually means
    Redirect, canonical or URL changes on the referring side, or a source that was unreachable when Ahrefs crawled it — the link record is lost without the link being gone.
    Rule out first
    A real removal, which a manual fetch of the referring page settles in seconds.
    Next check
    Fetch the top lost referring URLs by hand and check for the link, a redirect chain, or a non-200 response before scheduling any reclamation work.
  • Broken inbound links after a URL change

    Confidence 84% — High confidence
    • Ahrefs: broken backlinks increased
    • GSC: clicks to the old URL decreased
    • Internal: recent URL or template change mixed
    Usually means
    A migration, slug change or deletion left inbound links pointing at URLs that no longer resolve — one of the few off-site findings with a concrete, recoverable action attached.
    Next check
    Cross-check the broken targets against the redirect map, then propose redirects for the highest-value sources. The recommendation is still a proposal for a human, not a change.
  • Competitor estimate rises while ours holds

    Confidence 55% — Moderate confidence
    • Ahrefs: competitor estimated organic traffic increased
    • GSC: our impressions unchanged
    • Ahrefs: competitor keywords in top 3 increased
    Usually means
    A competitor gained visibility in a shared topic area. Because both figures are estimates, this is a prompt to look, not a finding.
    Rule out first
    Ahrefs index-coverage growth, which lifts these counts for everyone in a market at once.
    Next check
    Compare the movement against two or three other competitors in the same market. If they all rose, it is coverage; if one did, it is worth a SERP-level look at the shared queries.

Ahrefs analyst checklist (Connector Scout editorial guidance)

  1. 01Exhaust first-party evidence first

    Ahrefs is layer four, not layer one.

    • Confirm the change in Search Console, and check GA4 for whether behavior moved with it.
    • Rule out deploys, content edits, redirects and robots changes in the same window.
    • Only open Ahrefs when the first-party layers leave the change unexplained.
  2. 02Scope the off-site pull before spending units

    • Name the target and the mode — exact, prefix, domain or subdomains — because the scope changes the answer.
    • Select only the fields the question needs; cost scales with fields as well as rows.
    • Start with backlinks stats for the totals, and only escalate to a link-level pull if the totals moved.
  3. 03Localize the movement

    • Ask whether the change sits on one page or across the site, using pages by backlinks.
    • Group lost and new links by source domain to separate a template change from a real multi-site movement.
    • Check whether the anchor distribution shifted, which points at a different kind of change entirely.
  4. 04Validate before reporting

    • Manually fetch the highest-value lost or broken referring pages; never report a lost record as a removal without it.
    • Compare first-seen dates against the referring page's own publication date before crediting a campaign.
    • Label every traffic, value or keyword-count figure as an Ahrefs estimate in the brief itself.
  5. 05Report as corroboration, not proof

    • Cap an Ahrefs-only explanation at Moderate confidence and name the competing explanation.
    • Never claim a Domain Rating or URL Rating change affected rankings.
    • Record the units consumed and the remaining allowance alongside the finding, so the cost of the investigation is visible.

Semrush#

Ahrefs answers what changed outside the site. Semrush answers two questions Ahrefs cannot: what your own configured Position Tracking campaign recorded for a defined keyword set, and how a market looks in one named regional database — plus, for subscribers, modelled Traffic & Market data that no first-party source can supply.

Semrush is the second third-party layer in this guide, and the temptation to treat it as a first-party one is stronger here than anywhere else, because Position Tracking looks like your rankings and Traffic & Market looks like traffic. Neither is. Position Tracking is a measurement of the keywords, search engine, location and device you configured in a Semrush campaign, and Traffic & Market is modelled market data. Search Console and GA4 remain the arbiters of your own performance.

What Semrush genuinely adds to a daily analyst is scoped, repeatable observation of a keyword set you chose, a documented backlink dataset with explicit first- and last-seen fields, keyword demand context in a specific regional database, and crawl-based Site Audit observations from your own campaign. Every one of those is corroboration or context. None of them proves a Google ranking, actual traffic, user intent, content quality or causation.

Every product, endpoint, version, plan, unit and field claim below comes from Semrush's own developer documentation, linked at the end of the section, and where two current official pages disagree this chapter says so rather than choosing silently. The cadence split, the interpretation rules, the diagnostic patterns, the confidence caps and the sequencing are Connector Scout editorial guidance and are labeled as such.

What Semrush contributes beyond Search Console, GA4 and Ahrefs

Semrush earns its place for three things the other layers cannot supply: a repeatable observation of a keyword set you configured in a Position Tracking campaign, including SERP-feature flags for AI features; a documented link dataset with explicit first-seen and last-seen fields; and, for subscribers, modelled Traffic & Market data about a market rather than a site. Everything else it returns overlaps Ahrefs or duplicates first-party data at lower authority.

What changed from older Semrush guidance

The MCP endpoint is v2 and streamable HTTP only

Semrush documents a single MCP endpoint, `https://mcp.semrush.com/v2/mcp`, using streamable HTTP transport only. OAuth is the default authentication approach and requires no extra headers; where an AI client cannot do OAuth, Semrush documents an API-key fallback passed as `Authorization: Apikey YOUR_API_KEY`. Older setup notes that reference a v1 path, an SSE transport or a query-string key do not match the current page.

Version 4 arrived for three APIs only — scope the migration precisely

Semrush's release notes record Keyword API v4 on 9 June 2026, Backlinks API v4 on 11 June 2026, and Projects API v4 with API-key authorization on 2 July 2026. What those notes deprecate is narrow: the previous Backlinks v3 methods, the previous Keyword Reports v3 methods, and — for Projects — v3 plus the earlier v4 OAuth methods, all still operational temporarily. It is not a sitewide v3 sunset: Domain, Overview, Subdomain, Subfolder and URL reports, plus Position Tracking and Site Audit, remain documented v3-only surfaces with no v4 equivalent. Migrate the three APIs that moved; keep building the rest on v3.

Backlinks v4 and Keyword v4 are Early Access, not GA

Semrush labels Backlinks API v4 and Keyword API v4 as Early Access: endpoints, response formats and pricing are documented as subject to change until general availability, and during Early Access the documentation says requests are billed at the current v3 rates as a courtesy. Connector Scout rule: do not treat these as stable GA endpoints — pin the version in stored records, expect field and response-shape changes without a data change, and budget for pricing to move at GA.

API keys are now version-specific

Since 15 July 2026 the documentation is split by version and keys are version-scoped: a `v3` key works only with Version 3 APIs and a `v4` key only with Version 4 APIs. Each account has one automatically generated, non-revocable `v3` key; `v4` keys can be created (up to 100), named, given permissions and a TTL, and revoked. Connector Scout guidance: give v4-capable calls (Backlinks v4, Keyword Reports v4, Projects v4, Listing Management) their own scoped `v4` key with a TTL — but scheduled Domain, Overview, Subdomain, Subfolder, URL, Position Tracking and Site Audit pulls still require the single account-wide `v3` key, which cannot be revoked or scoped. Handle credentials per version, keep the `v3` key in managed secret storage with the tightest possible access, log its use, and re-issue dependent integrations if it is ever exposed. A `v4` key does not replace it for those APIs.

A documented conflict worth naming in your runbook

As of the versions of these pages current on 31 July 2026, the Semrush MCP page states that MCP exposes all read-only methods from Projects API **v3**, while the release notes and version guidance point new Projects integrations at Projects API **v4**. Both statements are official and current. This chapter reports the split rather than resolving it: read project data through MCP as documented today, and build new direct Projects integrations against v4.

MCP versus direct API access

The two documented ways to reach Semrush data. Product facts from Semrush developer documentation; the 'use it for' column is Connector Scout editorial guidance.

Semrush MCP server

What Semrush documents
Endpoint `https://mcp.semrush.com/v2/mcp`, streamable HTTP transport only. OAuth by default; API-key fallback via `Authorization: Apikey YOUR_API_KEY`. Exposes all Trends API methods (subject to your Trends subscription), all SEO API methods, and all read-only methods from Projects API v3 — you can read project data but cannot create projects or change settings. It consumes the same API units as the APIs, and Semrush lists daily AI-agent scanning of keyword and backlink data among its use cases.
Use it for (editorial)
Interactive investigation inside a supported AI client, and the read-only guardrail itself: the documented MCP surface cannot write to your projects.

Direct API (v3 and v4)

What Semrush documents
Standard API covers the SEO and Projects APIs; Trends API is a separate product with its own subscription. Version 4 currently covers Backlinks, Keyword reports, Projects and Listing Management with `v4` keys; Version 3 still covers Trends, Domain, Overview, Subdomain, Subfolder and URL reports, Position Tracking and Site Audit with the `v3` key. SEO API responses are available as CSV or JSON; Projects API responses are JSON.
Use it for (editorial)
Every scheduled pull: fixed field sets, explicit `display_limit`, stored against a dated baseline, with the unit cost recorded per run.

Setup is short. The endpoint is https://mcp.semrush.com/v2/mcp and it accepts streamable HTTP only. OAuth is the default and needs no headers — the client registers itself and redirects you to the Semrush login. Where a client cannot do OAuth, Semrush documents an API-key fallback sent as Authorization: Apikey YOUR_API_KEY. Keys are version-specific: v4 keys can be created with their own permissions and TTL, but they only reach Backlinks v4, Keyword Reports v4, Projects v4 and Listing Management. Domain, Overview, Subdomain, Subfolder, URL, Position Tracking and Site Audit pulls still need the single account-wide v3 key, which cannot be scoped or revoked — so separate credentials per version where you can, and keep the v3 key in managed secret storage with tight access and a re-issue plan for the integrations that depend on it.

Datasets worth wiring

Semrush data families a daily analyst uses, the question each answers, and how the output must be labeled in a brief.

Position Tracking reports (Projects API v3)

Question it answers
What did our configured campaign record for the keywords we chose, in the search engine, location and device we configured?
Output type
Project-tracked measurement, scoped to the campaign. Organic and Adwords overview, positions, competitors discovery, visibility index and landing-pages reports are served from `https://api.semrush.com/reports/v1/projects/{campaignID}/tracking/`. Not a census of all queries.

Backlinks API v4

Question it answers
What does Semrush's link index currently record for this target, and what moved?
Output type
Third-party crawl/discovery records. Overview, Historical Summary, Backlinks, Referring Domains, Referring IPs, Pages, Anchors, Score Profile, Competitors and Summary Comparison, each scoped by `scope` (`ROOT_DOMAIN`, `SUBDOMAIN`, `SUBFOLDER`, `PAGE`) with a `fields` parameter.

Domain and Overview reports (SEO API v3)

Question it answers
How does this domain look in one named regional database, and who competes with it?
Output type
Third-party dataset scoped to a regional database. Domain organic and paid keywords, domain vs. domain, competitors in organic and paid search, and the domain/subdomain/subfolder/URL overview reports, including history variants.

Keyword reports (Keyword API v4 / SEO API v3)

Question it answers
What demand and commercial context sits behind a query?
Output type
Third-party keyword dataset. `Get Keyword Metrics` exposes fields including `cpc` (average advertiser cost per click in USD cents), `competitive_density` and `intents`. Demand context, never first-party performance.

Site Audit (Projects API v3)

Question it answers
What did the Semrush crawler observe on our own site in the configured campaign?
Output type
Crawl observation from your campaign configuration. Documented as running crawls, monitoring progress and retrieving errors, warnings and notices — not a statement about Google's index.

Trends API (separate subscription)

Question it answers
How does the wider market and its traffic distribution look?
Output type
Modelled market data: the Trends overview documents estimates generated from raw clickstream data processed by a proprietary machine-learning algorithm. A separate product with Basic and Premium plans, rate-limited at 10 requests per second per account, with the overall monthly quota tied to the API units on your subscription (the legacy hourly and daily limit fields still appear in responses but are no longer used). Never present it as analytics sessions.

Connector Scout editorial guidance — not a Semrush recommendation: what a daily analyst should pull from Semrush, and what belongs in a weekly or on-demand pass.

Daily or alert-triggered

What to pull
Position Tracking organic overview and visibility index for one campaign; positions for a tagged subset of tracked keywords; Backlinks Overview (a fixed per-request cost) for a short priority target list; the free API-unit balance endpoint before and after the run.
Why
Small, fixed, comparable pulls against a stored baseline. Enough to notice movement in a keyword set you chose and in a link profile you watch — nothing more.

Weekly or on demand

What to pull
Full referring-domain and backlink inventories, anchors and score profiles, domain organic keyword exports, competitor and keyword-gap research, Site Audit issue reviews, Trends market pulls.
Why
These are per-line reports that answer strategic questions which do not change daily, and they are where units disappear. Historical variants cost more again.

API units, cost control and failure handling

Per line or per request, depending on the report

Semrush documents two pricing shapes: reports charged per line of data returned (for example the Domain reports) and reports with a fixed cost per request (for example Backlinks Overview in v4, documented at 45 API units per request). The unit price is printed in the documentation beneath each report or request name.

Historical data costs more

Most analytic reports offer historical data at a higher price than regular data. Semrush's own worked example uses the Domain Organic Search Keywords report: 500 keywords per domain across 50 domains costs 10 units per returned line for current data (250,000 units) and 50 units per returned line for data from 12 months ago (1,250,000 units), documented as 1,500,000 units in total. The history is five-sixths of that bill.

Control the output before you spend

Use `display_limit` to cap the number of lines returned, `display_offset` for pagination, filters to narrow the set, and — in v4 methods that support it — `fields` to return only the columns you need. Semrush's documented guidance is to estimate the unit cost of a request before sending it.

Check the balance with a free request

Semrush documents free balance requests for the Standard and Trends APIs; the Standard one is `GET http://www.semrush.com/users/countapiunits.html?key=YOUR_API_KEY`. The **API Queries** log in the Semrush profile records report type, database, requested rows, offset, report cost and the balance remaining after each request, for the SEO API and Projects API v4.

Insufficient units fail two different ways

Semrush documents that you get either an error or a partial result. The SEO, Trends, Position Tracking and Site Audit APIs return `ERROR 132`; the Projects and Local APIs return `403`. For per-line SEO and Trends reports you instead receive only the number of lines your remaining balance covers. Connector Scout rule: a short result set is a truncation suspect, not evidence of 'no data' — check the balance before concluding anything.

Access and included units differ by page — read both

The MCP access page lists Semrush One Starter, One Pro+, SEO Classic Pro and SEO Classic Guru as including 50,000 API units that refresh on the subscription renewal date, with SEO Classic Business and Semrush One Advanced using separately purchased unit packages (2M, 5M, 10M or 20M). The v4 API-access page describes Standard API access as an SEO Business subscription plus a purchased unit package, and notes the balance is zero immediately after upgrading. Trends API requires its own Basic or Premium subscription and includes MCP access. Confirm your own entitlement in Subscription info before promising a cadence.

Reading Semrush datasets

Semrush datasets an analyst reads — definitions from Semrush documentation, failure modes and pairing rules from Connector Scout

  • Tracked keyword position

    Position Tracking · organic positions
    Measures
    Documented as the ranking recorded by your Position Tracking campaign for a keyword, in the search engine, location and device that campaign is configured for.
    Why it matters
    It is the closest Semrush gets to a repeatable measurement, because you defined the keyword set and the configuration stays constant between runs.
    Misleading when
    Read as 'our ranking'. It is the ranking of the keywords you chose in the configuration you chose. Connector Scout rule: pair every tracked-position claim with Search Console average position and clicks for the same queries before it enters a brief.

    AnswersDid the keyword set we decided to watch move?

  • Visibility index

    tracking · visibility
    Measures
    Documented as a Position Tracking report covering the visibility of the campaign's tracked keywords over time, with an organic and an Adwords variant.
    Why it matters
    A single number that summarizes a campaign's tracked keyword set, which makes day-over-day movement easy to threshold.
    Misleading when
    Compared across campaigns, or after the tracked keyword set changed. Adding or removing keywords changes the index without anything happening in search. Store the campaign ID and keyword-set version with every observation.
  • Tracked landing pages

    tracking · landing pages
    Measures
    Documented as the landing pages recorded for the campaign's tracked keywords, with organic and Adwords variants and a url parameter that takes a root-domain, subdomain, subfolder or URL mask.
    Why it matters
    Localises a tracked movement onto specific pages, which is the step that turns a visibility change into something a human can check.
    Misleading when
    The URL mask does not match the scope you think it does. Semrush documents different mask forms per URL type, and some reports require the URL without a mask — a mismatch quietly changes the answer rather than erroring.
  • SERP feature flags, including AI features

    SERP features · aio / aim / aic / aai
    Measures
    Documented letter codes for SERP features supported in Position Tracking filtering, including aio (AI overview), aim (AI summary), aic (AI chat) and aai (Ask AI), alongside the conventional ad, snippet and pack features.
    Why it matters
    Lets the analyst ask whether a click decline coincides with an AI or feature change on the SERPs for tracked keywords, rather than assuming a ranking cause.
    Misleading when
    Treated as proof of what a user saw. It is Semrush's observation of the SERP for that configuration at that time; personalisation and rollout differences mean a feature flag corroborates a hypothesis, it does not confirm an experience.

    AnswersDid the shape of the results page change, not just our position in it?

  • Backlink and referring-domain counts

    backlinks_count / domains_count
    Measures
    Documented in Backlinks API v4 Overview as the number of backlinks and the number of referring domains for the requested target and scope, alongside follows_count, nofollows_count, urls_count, ips_count and related counts.
    Why it matters
    Referring domains move slowly, so a genuine change is readable, and the Overview endpoint is a fixed per-request cost rather than a per-line one — cheap enough to run daily on a short list.
    Misleading when
    Read as what Google sees, or compared against a different scope. Root domain, subdomain, subfolder and page return different numbers for the same site; Semrush's own troubleshooting page names scope mismatch as a leading cause of API-versus-UI discrepancies.
  • New and lost link counts

    new_count / lost_count / first_seen_at
    Measures
    Documented in Backlinks v4 as the number of new backlinks — meaning those whose first_seen_at falls within the last 30 days — and the number lost, with first_seen_at defined as when the item was first found.
    Why it matters
    The most alert-worthy backlink fields, and the only ones with a time dimension attached.
    Misleading when
    Read as link creation or link removal. First seen is Semrush's discovery date, not a publication or link-creation date, so a batch of newly discovered links can be old links reaching the index. Connector Scout rule: validate the highest-value records by fetching the referring page before reporting a cause.

    AnswersWhen did Semrush learn about this link — not when was it built?

  • Authority and domain scores

    score / domain_score
    Measures
    Documented Backlinks v4 fields: the target's score and, per referring source, domain_score — 'source domain authority score' — with a Score Profile endpoint reporting the distribution.
    Why it matters
    A consistent way to sort which gained or lost links deserve a human's attention first.
    Misleading when
    Presented as a Google ranking factor. These are Semrush's own scores. A change in either causes nothing, and no brief should contain a sentence in which a score moves rankings.
  • Keyword demand and commercial context

    cpc / competitive_density / intents
    Measures
    Documented Keyword API v4 fields: cpc as the average price in USD cents advertisers pay for a click on an ad triggered by the keyword, competitive_density as the competition level among PPC advertisers, and intents as the search intents associated with the keyword.
    Why it matters
    Turns a query list into a prioritized one by attaching demand and commercial weight to it.
    Misleading when
    Used as evidence of what your visitors wanted. intents is Semrush's classification, competitive_density is about paid competition rather than organic difficulty, and none of it measures your own performance.
  • Domain organic keywords and positions

    SEO API v3 · domain reports
    Measures
    Documented per-line reports returning the keywords a domain ranks for in a selected regional database, with paid, competitor and domain-versus-domain variants and historical options.
    Why it matters
    The only way to size a competitor's organic footprint, because you have no first-party access to theirs.
    Misleading when
    Compared across regional databases, or across dates without recording the database, or treated as your own performance. Semrush documents update cycles, aggregation and naming as reasons API figures differ from the UI; a domain report is a third-party dataset for one database, not a ranking fact.
  • Site Audit issues

    Projects API v3 · Site Audit
    Measures
    Documented as crawling websites, monitoring crawl progress and retrieving structured reports of errors, warnings and notices for the configured campaign.
    Why it matters
    Gives a technical hypothesis a crawl-level check, from a crawler whose configuration you control.
    Misleading when
    Read as Google's view. It is what the Semrush crawler saw under your campaign settings; confirm anything indexation-shaped in Search Console before it becomes a finding.

Data quality and interpretation limits

Three different kinds of data wear the same logo

Semrush returns modelled estimates (keyword and domain datasets, Trends market data), crawl and discovery records (Backlinks, Site Audit), and project-tracked measurements (Position Tracking on a keyword set you configured). Connector Scout rule: label which family a number belongs to in the record itself, because the confidence you can attach differs by family, not by vendor.

Scope mismatches produce wrong answers, not errors

Semrush's troubleshooting page attributes API-versus-UI differences to filters applied differently, different data scope (domain vs. subdomain vs. subfolder), date ranges and update cycles, metric definition and aggregation differences, limits and pagination, and naming differences between API endpoints and UI tools. Store the regional database, scope, device, search engine, location, date and filter set with every observation, or the next comparison is not like-for-like.

Short results can be truncation

Documented behavior: per-line SEO and Trends reports return as many rows as your remaining unit balance covers, and top-N endpoints return part of the dataset unless you paginate with `display_limit` and `display_offset`. Connector Scout rule: record the requested row count next to the returned row count, and treat a shortfall as unresolved until the balance and pagination are checked.

Position Tracking is a configuration, not a census

The Position Tracking API is documented as monitoring rankings, visibility and competitors for specific keywords, devices and regions within a campaign. It sees only what the campaign was told to watch. Connector Scout rule: version the tracked keyword set and treat any change to it as a break in the time series.

Discovery timing is not publication timing

`first_seen_at` is documented as the date and time the item was first found, and `new_count` as items first seen within the last 30 days. Connector Scout interpretation: a spike in new links can be a crawl-coverage artefact, and neither field evidences when a link was actually created.

Version churn is an operational risk

Keyword, Backlinks and Projects APIs each moved to v4 during June–July 2026, with the previous methods for those APIs deprecated but operational temporarily, and API keys are now version-specific. Backlinks v4 and Keyword v4 are Early Access: endpoints, response formats and pricing are subject to change until GA, and Early Access requests are documented as billed at current v3 rates as a courtesy. Everything else — Domain, Overview, Subdomain, Subfolder and URL reports, Position Tracking and Site Audit — is still v3-only. Connector Scout rule: pin the API version (and whether the endpoint was Early Access) in every stored record, so a field-name, response-shape or price change is visible as a version change rather than a data change.

MCP answers are model output

Reaching Semrush through MCP puts a language model between you and the data. Connector Scout rule: any figure that reaches a brief through an AI client must be reproducible by a direct API call with the same parameters recorded — the model's summary is a lead, the API response is the record.

Worked evidence chains

Chain 1 — clicks fall while position holds

Search Console shows clicks down with impressions and position stable, GA4 shows no behavioral change, and the Semrush campaign records an AI overview appearing on the affected tracked keywords.

  1. 01

    Search Console clicks down, impressions and position flat

    GSC · down

    The queries still surface as often and in the same place, but fewer people click — so this is a results-page change rather than a visibility change.

  2. 02

    GA4 engagement for the landing page unchanged

    GA4 · flat

    The visitors who did arrive behaved as before, which makes a broken template or an on-page content regression less likely — it does not rule one out, since a regression that deters clicks in the SERP or affects only non-arriving users would leave engagement flat.

  3. 03

    Semrush tracked positions for those keywords unchanged

    Semrush · flat

    The campaign, configured for the same location and device as the affected queries, records no ranking movement — a second, independently configured observation agreeing with Search Console.

  4. 04

    AI overview flag now present on the tracked keywords

    Semrush · changed

    The campaign's SERP-feature data shows the aio feature on keywords that did not carry it in the stored baseline.

  5. 05

    Hypothesis: a SERP-layout change is the leading candidate for the CTR fall

    Hypothesis

    Flat impressions and position weaken the visibility explanations, and unchanged engagement weakens the on-page ones, leaving a results-page change as the best-supported candidate. Flat clicks, impressions and position do not prove a layout change — they are consistent with one, which is why this stays a hypothesis until query-level CTR is checked.

  6. 06

    Compare CTR by query and device in Search Console across the same window

    Check

    If the CTR fall concentrates on the queries carrying the new feature, the hypothesis survives; if it is spread evenly, look for a snippet or title change instead.

ConclusionReport it as: clicks fell without a visibility change, and Semrush's campaign records an AI overview newly present on the affected tracked keywords. Recommended next check: segment Search Console CTR by query and device. Do not write that the AI overview caused the decline — Semrush observed a SERP feature for one configuration, which is corroboration, not causation.

Confidence 64% — Moderate confidence

Two independent sources agree that position did not move and a third records a plausible SERP change, but the feature observation is one vendor's view of one configuration and no user-level evidence exists. Connector Scout rule: SERP-feature explanations cap at Moderate until query-level CTR confirms the concentration.

Chain 2 — a backlink drop that turns out to be a scope artefact

Semrush reports fewer referring domains than the stored baseline, Ahrefs does not, and the difference resolves to a scope and truncation problem rather than a link loss.

  1. 01

    Semrush referring domains down against the stored baseline

    Semrush · down

    The Backlinks v4 Overview response returns a lower domains_count than the value stored for the previous run.

  2. 02

    Ahrefs live referring domains flat over the same window

    Ahrefs · flat

    A second third-party crawl index shows no change, so at least one of the two records is describing something other than a real loss.

  3. 03

    Search Console clicks and impressions unchanged

    GSC · flat

    No first-party corroboration of any consequence, which lowers the priority of the finding regardless of its cause.

  4. 04

    The two runs used different `scope` values

    Pipeline · scope

    The stored baseline was collected at ROOT_DOMAIN and the new run at SUBDOMAIN. Semrush documents scope mismatch as a leading cause of discrepancies.

  5. 05

    This is a pipeline defect, not an off-site event

    Hypothesis

    Two records describing different scopes were compared as if they described the same target.

  6. 06

    Re-run at the baseline scope and check the unit balance and row counts

    Check

    Re-request with the original scope, and confirm that requested and returned row counts match on any per-line follow-up, since an insufficient balance returns only the rows it can pay for.

ConclusionReport it as a data-quality defect, not a backlink finding: the comparison was not like-for-like. Fix the stored scope, re-run, and add scope to the record key so the same comparison cannot be made again. Connector Scout rule: a third-party movement contradicted by another third-party index and unsupported by first-party data is a measurement question before it is an SEO question.

Confidence 90% — Very high confidence

The explanation is a documented behavior of the API and is directly verifiable by re-running the request with the original parameters. Very high confidence is appropriate because the check is deterministic rather than inferential.

Common diagnostic patterns

Connector Scout editorial guidance — recurring Semrush shapes, the explanation each usually supports, and the check that settles it

  • Tracked positions move but Search Console does not

    Confidence 70% — Moderate confidence
    • Semrush: tracked positions decreased
    • GSC: average position unchanged
    • GSC: clicks unchanged
    Usually means
    A scope difference between the campaign and reality: the campaign's location, device or search engine does not represent where your actual impressions come from, or the tracked keyword set is not the set that drives clicks.
    Rule out first
    A genuine localised ranking change, which would show in Search Console once segmented by country and device.
    Next check
    Segment Search Console by country and device to match the campaign configuration, then compare only the tracked queries.
  • Visibility index jumps with no ranking movement behind it

    Confidence 78% — High confidence
    • Semrush: visibility index mixed
    • Semrush: tracked keyword count mixed
    • GSC: impressions unchanged
    Usually means
    The tracked keyword set changed. Adding or removing keywords rebases the index, so the series is discontinuous rather than the rankings having moved.
    Rule out first
    A real broad movement, which would appear in Search Console impressions too.
    Next check
    Diff the campaign's keyword list against the stored version for the previous run before reading the index at all.
  • A dataset shrinks overnight with no other signal

    Confidence 85% — High confidence
    • Semrush: returned rows decreased
    • Semrush: API unit balance decreased
    • GSC: clicks unchanged
    Usually means
    Truncation. Per-line SEO and Trends reports return only as many rows as the remaining balance covers, and top-N endpoints return partial data without pagination.
    Rule out first
    A real disappearance of keywords or links, which would show at a stable row count.
    Next check
    Compare requested against returned rows, read the free balance endpoint, and check the API Queries log for the run's report cost before treating the shortfall as data.
  • Backlink count collapses while referring domains hold

    Confidence 76% — High confidence
    • Semrush: backlinks_count decreased
    • Semrush: domains_count unchanged
    • GSC: clicks unchanged
    Usually means
    One referring domain changed a template, footer or sidebar link, so many links moved and the number of distinct linking sites did not.
    Rule out first
    A multi-site loss, which would move the referring-domain count as well.
    Next check
    Group the change by referring domain using the Referring Domains endpoint. If one domain accounts for nearly all of it, this rarely deserves escalation.
  • New links spike with no campaign behind it

    Confidence 60% — Moderate confidence
    • Semrush: new_count increased
    • Internal: outreach activity unchanged
    • GSC: impressions unchanged
    Usually means
    Crawl-discovery timing. new_count counts items first seen in the last 30 days, so a batch of older links reaching the index at once looks like acquisition.
    Rule out first
    Genuine acquisition — a launch or a mention that landed in the window.
    Next check
    Sample the new records and compare each referring page's own publication date against first_seen_at before crediting anything.
  • Competitive numbers disagree with last month's report

    Confidence 82% — High confidence
    • Semrush: domain organic keywords mixed
    • Semrush: regional database mixed
    • GSC: impressions by country unchanged
    Usually means
    The two pulls used different regional databases, scopes, filters or date settings — the discrepancy causes Semrush documents between API results and the UI.
    Rule out first
    A real competitive shift, which survives once both pulls are aligned.
    Next check
    Re-run both with the database, scope, filters and dates pinned to the baseline record, and only then compare.

Semrush analyst checklist (Connector Scout editorial guidance)

  1. 01Place Semrush after the first-party layers

    Search Console and GA4 decide what happened to you; Semrush describes context around it.

    • Confirm the change in Search Console and check GA4 before opening any third-party tool.
    • Ask what specifically Semrush can add: a tracked keyword set, a SERP-feature observation, a link record, a market view — if the answer is none of those, do not spend the units.
    • Decide up front whether the output will be corroboration or context; it is never proof.
  2. 02Pin the scope before spending units

    • Record the regional database, target scope, device, search engine, location, date and filter set with the request, not just the response.
    • Use display_limit, filters and — where supported — fields to return only what the question needs.
    • Read the free balance endpoint before the run and again after it, and store the delta with the results.
  3. 03Validate the response before interpreting it

    • Compare requested rows against returned rows and treat any shortfall as possible truncation, not as an absence of data.
    • Check for ERROR 132 on SEO, Trends, Position Tracking and Site Audit calls, and 403 on Projects and Local calls.
    • Confirm the API version and key version used, and that the campaign's tracked keyword set is unchanged since the baseline.
  4. 04Label the data family in the record

    • Mark each value as a modelled estimate, a crawl or discovery record, or a project-tracked measurement.
    • Never store a Semrush figure under a field name that implies first-party traffic, rankings or sessions.
    • Keep Trends data in its own namespace so market modeling can never be summarized as analytics.
  5. 05Report as corroboration with a named check

    • Cap a Semrush-only explanation at Moderate confidence and name the competing explanation.
    • Never write that an authority score, a SERP feature or a tracked position caused a change.
    • State the units consumed and the remaining balance alongside the finding, so the cost of the investigation is visible to the reviewer.

Microsoft Clarity#

Search Console, GA4, Ahrefs and Semrush tell the analyst that something changed. Microsoft Clarity is the behavioral-observation layer for the pages that evidence has already flagged: what interactions Clarity collected, how they aggregate, and — for a handful of retained sessions — what the interaction looked like.

Clarity is the last layer to open and the easiest to over-read. It can show collected interactions, aggregate behavior patterns, heatmaps and retained recordings. It cannot prove search ranking, user intent, content quality, user motivation or causation, and nothing it returns can override Search Console or GA4 for your own performance.

That sequencing is deliberate. Clarity should usually follow Search Console and GA4 in an investigation rather than originate an SEO claim: it observes behavior after arrival, so it explains what happened to visitors who already got there, and its most valuable output is often a negative one — behavior did not change, so look elsewhere.

Every product capability, endpoint, limit, retention period and field name below comes from Microsoft's own Clarity documentation and the official Microsoft MCP repository, linked at the end of the section, and where two current official pages disagree this chapter says so rather than choosing silently. The diagnostic patterns, confidence scores, recommended cadence, dimension choices, evidence chains, token-security advice and the MCP-versus-API split are Connector Scout editorial guidance and are labeled as such. Nothing here is legal advice: consent and privacy implementation must be validated with your own privacy and legal owners.

What Clarity contributes — and what it cannot tell you

Clarity is the behavioral-observation layer for pages that first-party search and analytics evidence has already flagged. Microsoft documents it as collecting interactions, aggregating them into dashboard metrics, rendering heatmaps of clicks and scroll reach, and retaining a limited set of session recordings reconstructed from DOM and interaction data. Those four things are what it contributes.

What it cannot do matters just as much. Clarity has no view of queries, impressions or ranking, no measure of intent or content quality, and no mechanism for establishing causation. A behavioral signal is an indicator that something is worth reproducing — never a finding on its own.

What changed from older Clarity guidance

The official MCP server runs locally, not as a hosted endpoint

Microsoft ships the Clarity MCP server as an npm package, `@microsoft/clarity-mcp-server`, started with `npx` or a global install. It is not a vendor-hosted remote MCP endpoint and there is no OAuth flow: it needs Node.js 16 or later and a Clarity project Data Export API token. The current official repository documents three tools — `query-analytics-dashboard`, `list-session-recordings` and `query-documentation-resources` — while the Learn overview describes natural-language analytics access more generally.

The official repository is internally inconsistent about per-tool token passing

The Learn page says the Data Export token can be supplied via `--clarity_api_token` or as a tool parameter. In the current official repository, the Configuration section still describes passing the token to a `get-clarity-data` tool, while the current Server Usage section lists `query-analytics-dashboard`, `list-session-recordings` and `query-documentation-resources`. That is an official documentation inconsistency, not a hidden fourth tool. **Connector Scout guidance:** check the installed package version and its advertised tool schema before relying on per-tool token injection — it is not documented as guaranteed for all three current tools.

Consent signals are enforced for EEA, UK and Switzerland traffic

Since 31 October 2025 Microsoft enforces consent signals for page visits from the EEA, UK and Switzerland before full Clarity functionality is available. `consentv2` is the current recommended method and the older consent API is planned for deprecation. Without granted consent Clarity runs in no-consent mode with no first- or third-party cookies, assigning a unique ID per pageview, so it cannot persist a cross-page journey.

Tracking all sessions is not the same as retaining all recordings

The current FAQ says Clarity tracks all sessions with no sampling for tracking, but recordings may not be available for every session. The client API documents a ceiling of up to 100,000 recordings per project per day, above which retained recordings are sampled, with an upgrade API that can prioritize specified sessions. Never write that all sessions are recorded, and never apply the 'no sampling' phrase to recording evidence.

Two current official pages disagree on heatmap retention

The Data Retention page (updated 30 June 2026) and the current FAQ state that heatmaps are available for 9 months; the Heatmaps features page states 13 months. Both are official and current. The same retention page documents click and aggregated page data at 9 months, playback data at 30 days, and labeled or favourited sessions at 9 months.

MCP versus direct API access

Two documented routes into Clarity data. Capabilities and limits from Microsoft documentation; the recommended use of each is Connector Scout guidance.

Official MCP server

What it is
A locally run npm package, `@microsoft/clarity-mcp-server`, started with `npx @microsoft/clarity-mcp-server --clarity_api_token=...` or from a global install. Requires Node.js 16+ and a project Data Export API token, which the Learn page says can also be passed as a tool parameter. The current repository documents `query-analytics-dashboard`, `list-session-recordings` and `query-documentation-resources`, giving access to project analytics, session-recording lists and documentation. It is not hosted by Microsoft and uses no OAuth. The Learn page repeats the export-token limits for its analytics examples: 10 requests per project per day, at most 3 days and up to 3 dimensions per request. Microsoft's documentation does not establish that documentation-resource or recording-list calls draw on that same export quota.
Connector Scout recommendation
Interactive investigation only — the follow-up questions a human asks about a page the brief already flagged.

Data Export API

What it is
`GET https://www.clarity.ms/export-data/api/v1/project-live-insights` with `Authorization: Bearer <token>`; only project admins can manage tokens. `numOfDays` accepts 1, 2 or 3, corresponding to the previous 24, 48 or 72 hours, and up to three dimensions may be supplied from Browser, Device, Country/Region, OS, Source, Medium, Campaign, Channel and URL. Responses are UTC, capped at 1,000 rows with no pagination.
Connector Scout recommendation
Every scheduled pull. A deterministic pipeline should not depend on a model's choice of tool or parameters.

Setup for the MCP server is local. Microsoft publishes it as the npm package @microsoft/clarity-mcp-server, run with npx @microsoft/clarity-mcp-server --clarity_api_token=your-token-here or from a global install, with Node.js 16 or later and a Clarity project Data Export API token as the prerequisites. The token can also be supplied as a tool parameter. There is no Microsoft-hosted Clarity MCP endpoint and no OAuth flow. The direct route is a single documented request: GET https://www.clarity.ms/export-data/api/v1/project-live-insights, authenticated with Authorization: Bearer <token>, where only project admins can manage tokens.

Data surfaces and cadence

Clarity surfaces and what each one can answer. Capabilities and retention from Microsoft documentation.

Data Export API aggregates

What it returns
Documented metric groups include Scroll Depth, Engagement Time, Traffic, Popular Pages, Browser, Device, OS, Country/Region, Page Title, Referrer URL, Dead Click Count, Excessive Scroll, Rage Click Count, Quickback Click, Script Error Count and Error Click Count.
Documented limits
Last 1–3 days only, maximum 3 dimensions, maximum 1,000 rows with no pagination, 10 requests per project per day, UTC output.

Session recordings

What it returns
Recordings reconstructed from DOM and page information plus interaction events — not video streams. The MCP server can list session recordings; the export endpoint does not return replay payloads.
Documented limits
Up to 100,000 recordings per project per day, above which retained recordings are sampled; playback data is retained for 30 days, labeled or favourited sessions for 9 months.

Heatmaps

What it returns
Aggregated clicks and scroll reach across pageviews for a page, segmentable by device, viewed in the Clarity UI.
Documented limits
Capped at 100,000 pageviews per heatmap, with documented rendering limits for dynamic, canvas, iframe and nested-scroll contexts. Heatmap images are not returned by `project-live-insights`.

Connector Scout editorial guidance — how to spend the project's 10 daily Data Export calls. The exact dimensions are our recommendation, not a Microsoft rule.

Daily, scheduled (1 call)

What to pull
One canonical `numOfDays=1` pull on URL + Device + Channel — or another three-dimension combination you can justify in writing — persisted immediately on receipt.
Why
The window is rolling and only reaches back 72 hours, so an unstored day is unrecoverable. One fixed shape also keeps day-over-day records comparable.

On demand (reserve the rest)

What to pull
Targeted validation pulls for pages the brief already flagged, with the dimension set chosen for that question, plus interactive MCP analytics queries — which are backed by Data Export and must be budgeted against the same 10-call export limit.
Why
Ten Data Export requests per project per day is the whole export budget, and spending it on speculative slices leaves nothing for the investigation that matters. Microsoft's documentation does not state that documentation-resource or recording-list MCP calls consume that export quota, so treat only export-backed analytics queries as spending it.

Manual, in the UI

What to pull
Heatmaps and individual recordings for a specific page and device, after the aggregates have named a candidate.
Why
Neither is available through the export endpoint, and both are qualitative evidence for a human, not pipeline input.

Limits, timezones, row caps and failure handling

Token handling

The Data Export API token is generated in the Clarity project and only project admins can manage tokens; requests send it as `Authorization: Bearer <token>`. The MCP server accepts it via `--clarity_api_token` or as a tool parameter. **Connector Scout guidance:** command-line arguments can be exposed through shell history and process listings, so prefer managed secret injection wherever the client supports it, and never place the token in source control, a prompt or a stored transcript.

A 72-hour rolling window, not a date-range API

`numOfDays` accepts only 1, 2 or 3, meaning the previous 24, 48 or 72 hours from the moment of the call. There is no arbitrary historical date range and no backfill: anything not pulled and persisted within three days is gone from this endpoint.

UTC output against a local-time dashboard

The API returns results in UTC, while the dashboard uses the viewer's local-machine timezone per the Dashboard Features page. The same apparent date can therefore differ between the two unless the pipeline normalizes windows explicitly and records which basis each stored figure used.

1,000 rows, no pagination

A response is capped at 1,000 rows and cannot be paginated. A high-cardinality dimension such as URL can silently hit that ceiling, so compare requested scope against returned rows and treat a suspiciously round result as truncation rather than as an absence of data.

Documented failure handling

`400` invalid request parameters, `401` missing, invalid or expired token, `403` token not authorised for the operation, `429` daily request limit exceeded. **Connector Scout guidance:** treat `429` as a budget failure that must surface in the brief, never as an empty day, and retry only on the next quota window.

Preserve raw vendor field names

The documented sample response labels a dashboard concept as Distinct Users while the JSON sample uses `distantUserCount`. Do not silently 'correct' the key in a parser: store raw vendor keys as returned and map them to your own names explicitly in normalization, so a future field rename is a visible break rather than a silent one.

Privacy, masking and consent

Microsoft’s client API documentation classifies input-box content, numbers and email addresses as sensitive and masked by default, and masked content is not uploaded. Masking can be expanded, and unmasking is an explicit choice. That is a strong default, but it is not a claim that privacy is automatic or complete — what is collected still depends on how your implementation configures masking.

Consent is enforced. Since 31 October 2025 Microsoft enforces consent signals for page visits from the EEA, the UK and Switzerland before full Clarity functionality is available. consentv2 is the current recommended method and the older consent API is planned for deprecation. Without granted consent, Clarity runs in no-consent mode with no first- or third-party cookies: the documentation says it assigns a unique ID per pageview and cannot persist the cross-page journey, which fragments sessions and affects funnels and recordings.

Reading Clarity metrics and signals

Clarity metrics and behavioral signals — definitions from Microsoft documentation, failure modes and pairing rules from Connector Scout

  • Traffic and sessions

    Traffic
    Measures
    Sessions Clarity collected for the project in the requested rolling window, sliceable by up to three dimensions.
    Why it matters
    Establishes whether a behavioral change sits on top of a stable audience or a changing one.
    Misleading when
    Clarity sessions and GA4 sessions are defined and collected differently and will not reconcile. Consent state, tracking-code coverage and blockers all move this number independently of real demand.

    AnswersDid the audience for this page change, or only its behavior?

  • Bot sessions

    Traffic
    Measures
    Sessions Clarity attributes to bots within the collected traffic.
    Why it matters
    A shift in the bot share can move every behavioral rate on a page without a single human behaving differently.
    Misleading when
    Treated as a clean split. Check the bot share before reading any rate change as a human-behavior change.
  • Distinct Users

    distantUserCount
    Measures
    The dashboard's distinct-user concept; the documented JSON sample returns it under the key distantUserCount.
    Why it matters
    Separates a change in how many people arrived from a change in how many times they came back.
    Misleading when
    Read as a stable identity count. Under no-consent mode Clarity assigns a unique ID per pageview and cannot persist the cross-page journey, which inflates apparent distinct users in affected regions.
  • Pages per session

    Traffic
    Measures
    How many pages a collected session touched.
    Why it matters
    A drop can indicate a navigation or internal-linking problem on an entry template.
    Misleading when
    Compared across a consent-implementation change: per-pageview IDs fragment journeys and drive this number toward one without any user behaving differently.
  • Scroll depth

    Scroll Depth
    Measures
    How far down the page collected sessions scrolled.
    Why it matters
    Shows whether content below the fold is reached at all.
    Misleading when
    Applied to short pages. Low scroll depth is appropriate for a page that answers in the first screen, and high scroll depth can mean searching rather than reading.
  • Total and active engagement time

    Engagement Time
    Measures
    Time associated with collected sessions, reported by Clarity as separate total and active figures.
    Why it matters
    Distinguishes an open tab from actual interaction with the page.
    Misleading when
    Used as a proxy for content quality, or compared with GA4 engagement metrics, which are defined differently and are not interchangeable.
  • Rage clicks

    Filter
    Measures
    Repeated clicks in a clustered area within a brief period, per the Clarity filters documentation.
    Why it matters
    A strong candidate signal for an element that looks interactive and is not.
    Misleading when
    Read as frustration by definition. Rapid legitimate interaction — a stepper, a gallery, a quantity control — produces the same shape.

    AnswersIs there an element on this page that is not responding as users expect?

  • Dead clicks

    Filter
    Measures
    A click that produced no response, per the filters documentation.
    Why it matters
    Points at non-interactive elements that read as interactive, or at broken handlers.
    Misleading when
    Counted on decorative imagery and text, where a click with no response is the correct behavior.
  • Excessive scrolling

    Filter
    Measures
    Scrolling faster than expected for normal content consumption.
    Why it matters
    Suggests the visitor is hunting for something the page did not put where they looked.
    Misleading when
    Applied to long reference pages, where fast scrolling to a known section is ordinary use.
  • Quick backs

    Filter
    Measures
    Navigating to a new page and quickly returning.
    Why it matters
    Can indicate a link or template that did not deliver what it promised.
    Misleading when
    Read as dissatisfaction. A quick back is also what a successful lookup looks like when the answer was visible immediately.
  • Script errors and error clicks

    Error Count
    Measures
    Two distinct documented counts: an error click is a click occurring immediately before a JavaScript error, while a script error is recorded independently of any click.
    Why it matters
    Error clicks localise a defect to an interaction; script errors show breakage that may never surface as a click.
    Misleading when
    Merged into one 'errors' figure. They answer different questions, and collapsing them destroys the localisation that makes an error click useful.

    AnswersIs the failure attached to a specific control, or ambient on the page?

Data quality and interpretation limits

72-hour rolling window

`numOfDays` reaches back at most 72 hours from the call. Persist every scheduled pull on receipt; there is no backfill and no arbitrary historical range.

1,000-row cap with no pagination

High-cardinality dimensions such as URL can hit the ceiling silently. Record requested scope alongside returned rows and flag a full-cap response as possible truncation.

10 Data Export calls per project per day

The documented quota is 10 Data Export requests per project per day, and MCP analytics queries backed by Data Export must be budgeted against it — the scheduler and an interactive analytics question compete for the same export limit. Microsoft's documentation does not establish that documentation-resource or recording-list MCP calls consume that export quota, so do not assume every MCP tool call spends it. A `429` means the day's export evidence is incomplete and must be said so in the brief.

UTC API against a local-time dashboard

API output is UTC; the dashboard follows the viewer's machine timezone. Never compare an API window with a dashboard day without normalizing, or a shifted boundary will read as a behavioral change.

Consent fragmentation

For EEA, UK and Switzerland visits without granted consent, Clarity runs cookieless with a unique ID per pageview and cannot persist the journey. Regional session counts, pages per session and recording availability can all move because of a consent implementation change rather than a behavioral one.

Recording availability is sampled above volume

Up to 100,000 recordings per project per day are kept, and retained recordings are sampled above that; the upgrade API can prioritize specified sessions. Recordings are illustrative examples, never a representative census, and playback data expires after 30 days.

Tracking-code coverage

Clarity only sees pages carrying its tracking code. A template, subdomain or consent-gated region without the tag looks like an absence of behavior rather than an absence of measurement.

Insights are ML-based filters and recommendations

The Insights overview describes them as machine-learning-driven. Treat an Insight as a lead worth checking against the underlying signals, not as verified causation.

URL scope and normalization

URL is one dimension among the documented set, and raw URLs carry query parameters and casing variants. Normalize to canonical URLs — and, where useful, to page templates — before comparing, or one page will appear as several.

Retention differs by data type, and one figure is disputed

Click and aggregated page data 9 months, playback data 30 days, labeled or favourited sessions 9 months. Heatmap retention is stated as 9 months on the Data Retention page and the FAQ, and as 13 months on the Heatmaps features page. **Connector Scout guidance:** assume 9 months operationally until Microsoft reconciles the pages.

Not for audiences under 18

The Clarity client API page states that Clarity should not be used on websites or apps targeting users under 18. That is a product-use restriction, so an under-18 property is out of scope for this evidence layer entirely rather than a measurement caveat. This guide does not give legal advice: confirm applicability with your privacy and legal owners.

Worked evidence chains

Chain 1 — a mobile landing page loses key events

GA4 shows key events and engagement falling on one mobile landing page, Clarity's URL + Device slice shows dead clicks, error clicks and script errors rising on the same page and device, and targeted recordings show the same CTA failing.

  1. 01

    GA4 key events and engagement down on one mobile landing page

    GA4

    The decline is isolated to one page and one device class, with desktop for the same page unchanged.

  2. 02

    Clarity URL + Device shows dead clicks, error clicks and script errors rising

    Clarity API

    A single scheduled numOfDays=1 pull on URL + Device + Channel shows all three counts up on the affected page and device, with traffic to it flat.

  3. 03

    Error clicks are distinct from ambient script errors here

    Clarity

    Error clicks rose alongside script errors, which localises at least part of the breakage to an interaction rather than to page load alone.

  4. 04

    Targeted recordings show the same CTA not responding

    Clarity recordings

    Several retained recordings for that page and device show repeated taps on the primary CTA with no navigation. Recordings are sampled above volume, so this illustrates the failure; it does not measure its prevalence.

  5. 05

    Reproduce on the device class and inspect client logs

    Reproduce the interaction on the affected device class and read the browser console and release history for the template before changing anything.

ConclusionThe evidence supports a mobile front-end defect hypothesis on that template, not a proven cause. Reproduce it and inspect the logs before shipping a change; Clarity has shown where to look, not what broke.

Confidence 72% — Moderate confidence

Three independent surfaces agree on the same page and device, but recordings are sampled and no log-level confirmation exists yet — so this stays a strong hypothesis with a named validation step.

Chain 2 — search visibility falls while behavior holds

Search Console clicks and impressions fall on a cluster of pages while GA4 post-click quality and every Clarity behavioral signal remain flat.

  1. 01

    Search Console clicks and impressions down across a page cluster

    Search Console

    Fewer people see and click the pages in search; the loss is on the visibility side of the click.

  2. 02

    GA4 post-click quality unchanged

    GA4

    Engagement and key-event rates per session for visitors who did arrive are flat against the prior baseline.

  3. 03

    Clarity behavioral signals flat on the same pages

    Clarity API

    Rage clicks, dead clicks, quick backs, scroll depth and error counts are unchanged for the same URLs and device split.

  4. 04

    Clarity supplies no corroborating behavioral change

    Clarity observes behavior after arrival. A flat aggregate behavioral picture alongside fewer arrivals means Clarity offers no supporting evidence for a behavioral explanation — it weakens a widespread one without excluding unmeasured subsegments, tracking gaps, sampled recordings or template variants.

  5. 05

    Investigate queries, SERP appearance and technical search evidence

    Return to query-level Search Console data, SERP appearance and indexing or technical checks for the affected cluster.

ConclusionThis is a search-visibility investigation, not a behavioral one. The Clarity finding is a negative one: it supplies no corroborating behavioral change, which is a reason to return to search evidence — not proof that every on-page factor is excluded.

Confidence 65% — Moderate confidence

Three sources agree that aggregate post-click behavior did not visibly change, which is enough to deprioritise a broad behavioral explanation. It is not enough to exclude one: subsegments below the aggregate, tracking or consent gaps, sampled recordings and template variants remain unmeasured, and the actual cause is unidentified until the search-side checks run.

Common diagnostic patterns

Connector Scout editorial guidance — recurring Clarity shapes, the explanation each usually supports, and the check that settles it

  • Mobile CTA defect hypothesis

    Confidence 70% — Moderate confidence
    • GA4: Key events (mobile) decreased
    • Clarity: Dead and error clicks increased
    • Clarity: Script errors increased
    Usually means
    An interactive element on one template is failing for a device class, so intent arrives but cannot complete.
    Rule out first
    A release to a different template, a traffic-mix shift toward that device, and a third-party script change unrelated to the CTA.
    Next check
    Reproduce on the device class, read the console and the release history, then confirm with targeted recordings for that page and device.
  • Content or navigation mismatch

    Confidence 55% — Moderate confidence
    • Clarity: Excessive scrolling increased
    • Clarity: Quick backs increased
    • Clarity: Scroll depth mixed
    Usually means
    Visitors are hunting for something the page promised but did not place where they looked, or the entry point sets the wrong expectation.
    Rule out first
    A page short enough that fast scrolling and quick returns are appropriate, and a reference page where jumping to a known section is normal use.
    Next check
    Compare the query set for the page in Search Console against what the page leads with, then check a heatmap for the same page and device.
  • Traffic-mix confounder

    Confidence 60% — Moderate confidence
    • Clarity: Behavioral rates mixed
    • Clarity: Device or channel share increased
    • Clarity: Bot sessions increased
    Usually means
    The composition of collected traffic changed, moving every aggregate rate without any individual behavior changing.
    Rule out first
    A genuine behavioral change confined to one segment — check whether the within-segment rates held.
    Next check
    Re-slice by device and channel and compare within-segment rates, and check the bot share before reading any rate at all.
  • Consent or session fragmentation

    Confidence 65% — Moderate confidence
    • Clarity: Sessions (EEA/UK/CH) increased
    • Clarity: Pages per session decreased
    • GA4: Sessions unchanged
    Usually means
    A consent implementation change pushed regional traffic into no-consent mode, where a unique ID per pageview fragments journeys and inflates session-shaped counts.
    Rule out first
    A real navigation regression. Stable GA4 sessions weaken a broad navigation-regression hypothesis, but they do not rule out a regional or template-specific issue that the aggregate hides.
    Next check
    Confirm the consentv2 rollout date and configuration with the engineering owner, then reproduce segmented by region and template rather than reading the aggregate.
  • API truncation or quota exhaustion

    Confidence 85% — High confidence
    • Clarity: Returned rows at 1,000 unchanged
    • Clarity: Long-tail URLs present decreased
    • Clarity: 429 responses increased
    Usually means
    The response hit the non-paginated row cap, or the day's 10 Data Export requests ran out, so the dataset is incomplete rather than the behavior changed.
    Rule out first
    A genuine drop in long-tail pages, which would persist in a narrower, in-quota pull.
    Next check
    Re-run with a narrower dimension set inside the quota, and mark the affected day as incomplete in the brief rather than as a decline.
  • Recording availability drops while traffic holds

    Confidence 70% — Moderate confidence
    • Clarity: Retained recordings decreased
    • Clarity: Sessions unchanged
    • GA4: Sessions unchanged
    Usually means
    Recording retention is being sampled above the documented daily ceiling, or consent state changed which sessions can be recorded — not a change in visitor behavior.
    Rule out first
    A tracking-code regression, which would reduce collected sessions as well.
    Next check
    Compare collected sessions against available recordings, check whether daily volume is near the documented ceiling, and use the upgrade API to prioritize the sessions the investigation needs.

Microsoft Clarity analyst checklist (Connector Scout editorial guidance)

  1. 01Open Clarity only after the search and analytics layers

    Clarity observes behavior after arrival. It should follow Search Console and GA4 in an investigation, not originate an SEO claim.

    • Name the page or template the first-party evidence already flagged before spending a request.
    • State the behavioral question in one sentence — which interaction, on which device, over which window.
    • Accept a negative result: if aggregate behavior is flat, Clarity supplies no corroborating behavioral change, and saying so — without claiming every on-page factor is excluded — belongs in the brief.
  2. 02Fix the window and the timezone basis

    • Use numOfDays of 1, 2 or 3 and record which was used; there is no historical range.
    • Normalize the UTC API window before comparing anything with a local-time dashboard view.
    • Persist every scheduled pull immediately — an unstored day cannot be recovered after 72 hours.
  3. 03Validate the response before interpreting it

    • Compare returned rows against the cap and treat exactly 1,000 rows as probable truncation.
    • Check remaining quota and report a 429 as incomplete evidence, never as a flat day.
    • Store raw vendor keys such as distantUserCount as returned and map them explicitly in normalization.
  4. 04Treat every signal as an indicator, not a diagnosis

    • Keep script errors and error clicks as separate counts with separate meanings.
    • Check the bot share and the device and channel mix before reading any rate change.
    • Describe rage clicks, dead clicks, excessive scrolling and quick backs as candidate signals with a named alternative explanation.
  5. 05Report behavior as observation with a validation step

    • Cap a Clarity-only explanation at Moderate confidence and name the competing explanation.
    • Label recordings as illustrative examples drawn from a sampled, 30-day set — never as a census.
    • Never write that Clarity shows intent, content quality, ranking or causation; write what was observed and what to check next.

PDF download

Get the PDF version of this guide

Get the full Daily AI SEO Analyst guide as a PDF: the architecture, the connector classifications and the official sources, for SEO leads building a read-only AI workflow.

The download is available immediately after you submit. You may also receive occasional updates when new parts of the guide are published. No list sharing, unsubscribe any time.

Core Web Vitals#

Core Web Vitals is the performance-evidence layer. Field data from the Chrome UX Report says how eligible real Chrome users experienced a page or an origin; lab data from PageSpeed Insights and Lighthouse helps reproduce and diagnose a problem under controlled synthetic conditions. The two answer different questions and must never be merged.

The current Core Web Vitals are Largest Contentful Paint for loading, Interaction to Next Paint for responsiveness and Cumulative Layout Shift for visual stability. web.dev documents the good thresholds as 2.5 seconds or less for LCP, 200 milliseconds or less for INP and 0.1 or less for CLS, evaluated at the 75th percentile of page loads and segmented across mobile and desktop devices.

What this layer cannot do is as important as what it can. Core Web Vitals are real-user performance measurements: they do not measure search intent, content quality, business impact, or the cause of a regression, and they cannot establish that a performance change caused a ranking change. Google states that Core Web Vitals are used by its ranking systems and recommends good scores, while also saying that good tool results do not guarantee top rankings, that relevance remains primary, and that there is no single page-experience signal.

Field and lab evidence stay in separate namespaces throughout this chapter. Field data is aggregated over a rolling collection period across many real users; a lab run is one synthetic load in one configured environment. Lighthouse cannot measure INP at all without real user input, and Total Blocking Time is a lab diagnostic for responsiveness rather than a substitute for INP.

Every capability, endpoint, field name, threshold, aggregation rule, update cadence and limitation below comes from Google's and Chrome's own documentation, linked at the end of the section. The cadence, the multiple-run median rule, the prioritization advice, the diagnostic patterns, the evidence chains and the confidence caps are Connector Scout editorial guidance and are labeled as such.

What Core Web Vitals contribute — and what they cannot tell you

Core Web Vitals are the performance-evidence layer. web.dev documents three metrics: Largest Contentful Paint for loading, Interaction to Next Paint for responsiveness and Cumulative Layout Shift for visual stability, with good defined as 2.5 seconds or less, 200 milliseconds or less and 0.1 or less respectively, assessed at the 75th percentile of page loads and segmented across mobile and desktop.

They measure real-user performance and nothing else. They do not measure intent, content quality or business impact, they cannot identify a cause on their own, and they cannot establish that a performance change moved rankings. Google states that Core Web Vitals are used by its ranking systems and recommends good scores, while also saying that good tool results do not guarantee top rankings, that relevance remains primary, and that there is no single page-experience signal.

What changed from older performance guidance

INP replaced FID as the responsiveness Core Web Vital

web.dev documents Interaction to Next Paint as the responsiveness Core Web Vital, replacing First Input Delay in March 2024. Guidance, dashboards or scripts still built around FID are measuring a retired metric. INP considers the full interaction — input delay, processing and presentation — rather than input delay alone.

The current thresholds are 2.5s, 200ms and 0.1

web.dev documents good as LCP at or under 2.5 seconds, INP at or under 200 milliseconds and CLS at or under 0.1, with 'needs improvement' and 'poor' bands above each. Thresholds are assessed at the 75th percentile of page loads, segmented across mobile and desktop.

CLS is a session-window score, not a page total

web.dev documents CLS as the largest burst of layout shifts — the session window — rather than the sum of every shift on the page. A single late shift inside one burst can therefore define the score even when most of the page is stable.

PageSpeed Insights runs Lighthouse 13.0 as of 20 October 2025

The PageSpeed Insights release notes state that as of 20 October 2025 PSI and its API were updated to Lighthouse 13.0. Lab scores are version-dependent, so a lab-only score change across that date can reflect the tooling rather than the page.

CrUX History API gives 40 weeks of weekly field data

The CrUX History API is updated each Monday around 04:00 UTC and contains data up to the previous Saturday, one collection period per week for the previous 40 weeks (roughly 10 months). It returns 25 periods by default; `collectionPeriodCount` accepts 1 to 40.

The daily CrUX API is a 28-day rolling average

The CrUX API documents its data as a 28-day rolling average, updated daily around 04:00 UTC on a best-effort basis with no SLA. The reported `collectionPeriod` always shows 28 days, even where a page has existed for less than that.

PSI field data is documented as planned for discontinuation

The current PageSpeed Insights API get-started page states that the API offers real-world data 'soon to be discontinued' alongside Lighthouse lab data, and points to the Chrome User Experience Report as the source of that real-world data. Connector Scout guidance: take scheduled field collection from the CrUX API and the CrUX History API directly, and use PSI and Lighthouse for lab diagnostics only, so a future removal of the PSI field half cannot break the assessment layer.

EXPERIMENTAL_INTERACTION_TO_NEXT_PAINT was removed from the PSI response

The PageSpeed Insights release notes record that, as of 8 August 2023, `EXPERIMENTAL_INTERACTION_TO_NEXT_PAINT` is no longer in the API response and `INTERACTION_TO_NEXT_PAINT` — which carries the same data — should be used for the page's field INP. Any parser still keyed on the experimental name reads a field that no longer exists.

Field versus lab: two different questions

Field and lab answer different questions. Definitions from Google and Chrome documentation; the reporting rule is Connector Scout guidance.

What it is

Field (CrUX)
Aggregated measurements from eligible real Chrome users over a rolling collection period.
Lab (Lighthouse / PSI)
One synthetic load in a configured environment with emulated device and throttling.

Answers

Field (CrUX)
How did this page or origin actually perform for eligible users?
Lab (Lighthouse / PSI)
What is slow in this run, and what changed after my fix?

INP availability

Field (CrUX)
Reported, because real interactions exist.
Lab (Lighthouse / PSI)
Not measurable without real user input; TBT is the lab proxy.

Freshness

Field (CrUX)
Daily CrUX API is a 28-day rolling average updated daily around 04:00 UTC; History API updates Mondays to the previous Saturday.
Lab (Lighthouse / PSI)
Immediate — reflects the moment of the run and the Lighthouse version used.

Coverage

Field (CrUX)
Only publicly discoverable, sufficiently popular URLs and origins with eligible users and enough samples.
Lab (Lighthouse / PSI)
Any URL the runner can load, including staging and unpopular pages.

Reporting rule

Field (CrUX)
Use for assessment: whether the experience is good, needs improvement or poor.
Lab (Lighthouse / PSI)
Use for diagnosis and verification: what to change, and whether the change worked.

Storing that separation is what keeps it true. The record below is an illustrative Connector Scout design, not a Google schema: field and lab are sibling namespaces that are never merged or averaged, each field value carries its exact collection window, form factor and granularity, each lab value carries its Lighthouse version and environment, and unavailable data is stored as its own state rather than as a zero.

core-web-vitals-record.example.json
{  "recordId": "cwv:example.com/pricing:2026-07-28",  "note": "Illustrative Connector Scout record design, not a Google schema. FIELD and LAB are sibling namespaces and are never merged or averaged.",  "page": {    "requestedUrl": "https://example.com/pricing",    "template": "pricing"  },  "field": {    "source": "crux",    "api": "chromeuxreport.googleapis.com/v1/records:queryRecord",    "availability": "available",    "scope": "url",    "requestedUrl": "https://example.com/pricing",    "normalizedUrl": "https://example.com/pricing",    "urlNormalizationDetails": {      "originalUrl": "https://example.com/pricing?ref=nav",

Documented access routes

Documented access routes for Core Web Vitals data. Capabilities from Google and Chrome documentation; the recommended use of each is Connector Scout guidance.

CrUX API

What it returns
POST to `https://chromeuxreport.googleapis.com/v1/records:queryRecord` with an API key. Returns histograms, fractions and p75 percentiles for CLS, LCP, INP, FCP, experimental TTFB, round-trip time and LCP image subparts, for a URL or an origin, optionally by form factor. Data is a 28-day rolling average updated daily around 04:00 UTC with no SLA, and the API is limited to 150 queries per minute per Google Cloud project, offered without charge and not payable to increase.
Connector Scout recommendation
The daily field-assessment source. One scheduled query per tracked URL or origin and form factor, persisted with its collection period.

CrUX History API

What it returns
Same request body plus an optional `collectionPeriodCount` between 1 and 40 (default 25). Updated each Monday around 04:00 UTC, holding up to the previous Saturday, one weekly collection period across the previous 40 weeks.
Connector Scout recommendation
Weekly trend context and the answer to 'is this new?'. Pull it weekly, not daily — daily calls cannot produce new weekly periods.

PageSpeed Insights API

What it returns
Returns Lighthouse lab results and, where available, CrUX field data for the same URL in one response. The get-started page states the API can be used with or without an API key, although a key is recommended for frequent, automated queries, and describes the real-world data half as soon to be discontinued. Field INP is returned under `INTERACTION_TO_NEXT_PAINT`; the earlier `EXPERIMENTAL_INTERACTION_TO_NEXT_PAINT` key was removed on 8 August 2023. PSI and its API were updated to Lighthouse 13.0 on 20 October 2025.
Connector Scout recommendation
Lab diagnosis and verification. Do not build a scheduled dependency on the PSI field half, which Google documents as planned for discontinuation — take field data from the CrUX and CrUX History APIs instead. If a PSI response is stored, keep its lab and field halves in separate namespaces.

Lighthouse (CLI, Node, DevTools, CI)

What it returns
A synthetic audit run under your own configuration, with performance, accessibility, SEO and best-practices categories and detailed opportunities and diagnostics.
Connector Scout recommendation
Reproduction and verification against a fixed configuration you control. Pin the Lighthouse version so a score change means a page change.

Search Console Core Web Vitals report

What it returns
Google's own grouping of URLs into good, needs improvement and poor status, based on CrUX field data, with a validation workflow. Search Console Help documents that URLs are grouped by similar pages and reported separately for mobile and desktop, that only indexed URLs are included, and that reporting is based on a sample rather than the full URL inventory.
Connector Scout recommendation
The reconciliation surface when the field and lab picture disagrees. Read a group status as a group statement: a group's p75 can differ from any individual URL inside it.

First-party RUM (optional)

What it returns
Your own real-user measurement, collected with the web-vitals library or an equivalent, giving per-visit context such as the LCP element, the interaction target, page template, geography and logged-in state.
Connector Scout recommendation
Connector Scout guidance, not a Google requirement: supplementary field evidence for segments and interaction context CrUX cannot express. Keep it in its own source label — CrUX and first-party RUM sample different populations by different methods, so the two can legitimately disagree and must never be merged into one number.

The daily field request is a single documented call: POST https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=YOUR_API_KEY with either a url or an origin in the JSON body and an optional form factor. The trend request uses the same body against the History API plus an optional collectionPeriodCount between 1 and 40, which defaults to 25.

Percentiles, collection periods, eligibility and limits

The 75th percentile is the assessment, not the average

web.dev documents Core Web Vitals thresholds as being evaluated at the 75th percentile of page loads, segmented across mobile and desktop. A mean or a median is not a Core Web Vitals assessment, and a p75 that sits just inside a threshold band can cross it without any change in typical experience.

Every field number carries a collection period

The CrUX API returns a 28-day rolling average and its `collectionPeriod` always shows 28 days, even for pages younger than that. Store the exact `firstDate` and `lastDate` with every value. Adjacent daily pulls are not independent observations: two consecutive 28-day windows share 27 of their 28 days, so daily series are highly overlapping and smooth, and the size of a day-over-day move cannot be converted into the size of an underlying change — percentiles and histogram densities do not decompose that way.

Field data exists only for eligible URLs and users

CrUX methodology requires a page or origin to be publicly discoverable and sufficiently popular, and counts only users who have enabled usage-statistic reporting, sync their browser history without a sync passphrase, and are on a supported platform. Absence of field data is a coverage fact, not a performance verdict.

URL-level and origin-level data are different questions

The CrUX API accepts either a `url` or an `origin`. Where a specific URL has insufficient samples, tools may show origin-level data instead. Record which was returned; an origin aggregate cannot answer a question about one template.

Segment by form factor before comparing anything

Thresholds are assessed separately for mobile and desktop, and the CrUX API's `formFactor` dimension accepts PHONE, TABLET and DESKTOP. Keep PHONE and DESKTOP as the two separate assessment classes, and never silently fold TABLET into either one — carry it as its own labeled series, or state that it was excluded. A mixed-device aggregate can move purely because the device mix moved, with no experience changing at all.

Label PSI URL-to-origin fallback explicitly

A PSI response can carry `loadingExperience` for the requested URL and `originLoadingExperience` for its origin, and where a URL lacks sufficient samples the interface may present origin-level data in its place. Preserve the actual granularity in the record — `scope: "url"` or `scope: "origin"` — and never attach an origin p75 to a URL row. If only origin data exists, the URL's field state is 'unavailable', not the origin's number.

Store requested and normalized URLs

CrUX normalizes the URL it was asked about — trailing slashes, fragments and other variations — and the response reports the URL the record actually describes together with normalization details. Store both the requested URL and the returned normalized URL. Without them, two rows that look like the same page can be different records, and a 'missing' page is often a normalization mismatch rather than a coverage gap.

Search Console reports groups, not individual URLs

The Search Console Core Web Vitals report groups similar URLs, reports mobile and desktop separately, covers only indexed URLs, and is based on a sample rather than the full inventory. A group's status is a statement about the group: it can differ from an individual URL's own CrUX record, and 'not in the report' is not the same as 'good'.

First-party RUM is supplementary, not a CrUX replacement

Connector Scout guidance: first-party RUM can add segments, interaction targets and LCP-element context that CrUX does not expose, which makes it valuable for diagnosis. It is a different population measured by a different method — CrUX covers eligible, opted-in Chrome users on supported platforms, not every visitor or browser — so the two series can legitimately disagree. Report them side by side under separate source labels; never average or reconcile them into one figure.

Missing data is a state, never a value

A 404 from the CrUX API, an absent metric within an otherwise present record, or a metric with too few eligible samples all mean 'unavailable or insufficient eligible samples'. That is not zero, not good, and not a failed assessment. Persist it as its own state so charts show a gap and averages skip it, and say so in the brief.

Single-page apps under-report route transitions

CrUX methodology notes that JavaScript route transitions in single-page apps appear as new page views to users but are attributed to the initial page view by the underlying platform APIs. Treat SPA route-level field data as structurally incomplete rather than reassuring.

Handle rate limits as incomplete evidence

The CrUX API documents a limit of 150 queries per minute per Google Cloud project, offered without charge and not payable to increase. The PSI get-started page states its API works with or without an API key and recommends a key for frequent, automated queries. Connector Scout guidance: restrict each key to its own API, monitor quota use, back off and retry, and if a scheduled pull still fails, record the day as missing rather than as unchanged.

One lab run is a sample, not a measurement

Connector Scout guidance: lab results vary with network, CPU contention, the runner and the Lighthouse version. Run a lab check at least three times against a pinned version and report the median, store the Lighthouse version and environment settings with every result, and never compare lab numbers taken across the 20 October 2025 move to Lighthouse 13.0 as if the tooling were constant.

Reading the metrics

Core Web Vitals and supporting metrics — definitions and thresholds from Google and Chrome documentation, failure modes and pairing rules from Connector Scout

  • Largest Contentful Paint (LCP)

    Field · good ≤ 2.5s
    Measures
    Render time of the largest image or text block visible in the viewport, relative to when the page started loading.
    Why it matters
    It is the loading Core Web Vital and the clearest proxy for when the page felt useful. CrUX reports it with a p75 percentile and LCP image subparts — TTFB, resource load delay, resource load duration and element render delay.
    Misleading when
    Read as a single cause. A p75 regression can come from any one subpart, and a change in which element is largest — a new hero, a swapped banner — changes what the metric is timing.

    AnswersDid the largest above-the-fold element get slower, or did it change identity?

  • Interaction to Next Paint (INP)

    Field · good ≤ 200ms
    Measures
    How long the page takes to paint after user interactions across the whole visit, reported as a single representative value rather than a single interaction.
    Why it matters
    It is the responsiveness Core Web Vital, covering input delay, event processing and presentation delay. It is the only one of the three that requires real user input to exist.
    Misleading when
    Compared with a lab number. Lighthouse cannot measure INP without real interactions; Total Blocking Time is a lab diagnostic that correlates with responsiveness, not a substitute for INP.

    AnswersWhich interaction on which template is slow, and can it be reproduced by hand?

  • Cumulative Layout Shift (CLS)

    Field · good ≤ 0.1
    Measures
    The largest burst of unexpected layout shifts during the page's lifespan, scored as a unitless value.
    Why it matters
    It is the visual-stability Core Web Vital, and it catches the failures users describe as the page moving under them.
    Misleading when
    Assumed to be reproducible in a lab run. Shifts caused by late third-party content, personalized blocks, consent banners or interaction-dependent content may never appear in one synthetic load.

    AnswersWhich burst dominates the score, and does it depend on real-user conditions?

  • Time to First Byte (TTFB)

    Field diagnostic
    Measures
    Time to the first byte of the response. CrUX exposes it as experimental_time_to_first_byte, and also as an LCP image subpart.
    Why it matters
    It separates server and network delivery from client-side rendering when LCP moves, and it is the first subpart to check.
    Misleading when
    Treated as a Core Web Vital. It is a supporting diagnostic, and a good TTFB does not protect LCP if render or resource delays dominate.
  • First Contentful Paint (FCP)

    Field diagnostic
    Measures
    When the first content of any kind is painted. CrUX reports it with a p75 percentile.
    Why it matters
    Useful for localising an LCP regression to early render versus the specific largest element.
    Misleading when
    Reported as a user outcome. FCP can improve while the meaningful content still arrives late.
  • Total Blocking Time (TBT)

    Lab only
    Measures
    Main-thread blocking time in a synthetic Lighthouse run, under that run's configured throttling and device emulation.
    Why it matters
    It is the practical lab handle on responsiveness work — a reproducible number to move while INP is only observable in the field.
    Misleading when
    Written into a brief as if it were a Core Web Vital, or compared with field INP. It belongs in the lab namespace and nowhere else.
  • Lighthouse performance score

    Lab only
    Measures
    A weighted composite of lab audits from one synthetic run in one configured environment.
    Why it matters
    Convenient for tracking a reproducible build over time in CI, where the environment is held constant.
    Misleading when
    Used as the headline in an SEO brief. It is not a Core Web Vitals assessment, it varies between Lighthouse versions — PSI moved to Lighthouse 13.0 on 20 October 2025 — and Google states good tool results do not guarantee rankings.

Worked evidence chains

Chain 1 — mobile field LCP crosses Good into Needs Improvement after a release

Field p75 LCP for a template's URLs moves from good to needs improvement on mobile, pinned multi-run Lighthouse LCP worsens for the same template, and the hypothesis is a loading regression — with attribution limited by the overlapping rolling windows.

  1. 01

    CrUX p75 LCP on PHONE crosses 2.5s for the tracked URL

    CrUX API

    The daily CrUX query for that URL and formFactor: PHONE returns p75 LCP above 2.5 seconds with the band recorded as needs improvement, while DESKTOP for the same URL stays in the good band. The collectionPeriod firstDate and lastDate are stored with the value.

  2. 02

    Pinned multi-run Lighthouse LCP for the same template also worsens

    Lighthouse

    Three Lighthouse runs at one pinned version, in one recorded environment, give a median lab LCP materially higher than the previous median for the same template — a lab observation kept in the lab namespace and never compared numerically with the field p75.

  3. 03

    Band distance and lab delta, computed from stored records

    Derived

    How far the field p75 sits above 2.5 seconds, the change in the poor-bucket histogram density, and the change in the lab median LCP across pinned runs — each labeled with its own source and window rather than averaged together.

  4. 04

    A loading regression on this template, most likely in the LCP element's delivery

    Hypothesis

    Field and lab both moved in the same direction on the same template after a template or image release, which is consistent with the largest element becoming slower to fetch or render. It is a hypothesis: neither source names a cause.

  5. 05

    Attribution is bounded by the collection windows

    Method

    Daily CrUX windows share 27 of 28 days, and weekly History points are themselves overlapping 28-day windows that share three weeks with their neighbours. They can narrow a candidate interval; they cannot date a release or identify a cause. The interval must be intersected with the release history rather than read as a date.

  6. 06

    Confirm the LCP element, the network trace and the release history

    Validation

    Identify the LCP element in the current lab run and check whether its identity changed; read the network trace and the LCP subparts to separate TTFB from resource load delay, resource load duration and render delay; and match the candidate interval against deploys touching that template or its images.

ConclusionA loading regression on this template is the best-supported hypothesis, corroborated independently in field and lab. It is not yet attributed to a specific release, and the rolling windows cannot supply that attribution — the release-history check and the LCP-element and network inspection must close it.

Confidence 70% — Moderate confidence

Two independent namespaces moved in the same direction on the same template, which is stronger than either alone. Confidence is capped below high because the rolling, overlapping windows cannot date the change, the LCP element identity has not yet been re-verified, and CDN or network conditions were not independently measured.

Chain 2 — field INP worsens while lab TBT and long-task audits rise

Field INP degrades on mobile for one template while pinned lab runs show higher Total Blocking Time and more long tasks. The hypothesis is main-thread JavaScript — and TBT is explicitly not INP.

  1. 01

    CrUX p75 INP on PHONE moves into a worse band for the template

    CrUX API

    The stored field record shows interaction_to_next_paint p75 rising past 200 milliseconds with its histogram density shifting into the 200–500ms bucket, for that URL, that form factor and that recorded collection window.

  2. 02

    Pinned Lighthouse runs show higher TBT and additional long tasks

    Lighthouse

    Median TBT across three runs at a pinned Lighthouse version rises, and the long-tasks and JavaScript-execution audits list more main-thread work. web.dev documents TBT as a lab metric; it is stored in the lab namespace only.

  3. 03

    Field INP delta and lab TBT delta, held separately

    Derived

    The change in field p75 INP and the change in median lab TBT are each computed within their own namespace and reported as two numbers. There is no ratio between them and no combined score: TBT is not INP and cannot be converted into it.

  4. 04

    Main-thread JavaScript on this template is delaying the next paint after input

    Hypothesis

    Rising lab main-thread work alongside worse real-user responsiveness is consistent with script work — a new handler, a heavier bundle, or a third party — occupying the main thread when users interact. Correlation across two namespaces, not a demonstrated cause.

  5. 05

    Reproduce the real interactions and read field interaction context

    Validation

    Perform the actual interactions on the affected device class and profile the main thread while doing so; then use first-party RUM or the web-vitals attribution build to see which interaction targets and which phase — input delay, processing, presentation — dominate for real users. CrUX alone cannot name the interaction.

ConclusionReport a responsiveness regression on this template with main-thread JavaScript as the leading hypothesis, stating plainly that TBT localises main-thread work but is not a measurement of INP. The claim stands or falls on the hand-reproduced interaction and the field interaction context.

Confidence 60% — Moderate confidence

The two signals agree in direction but come from different populations and measurement methods, and no specific interaction has been identified yet. Confidence stays moderate until a real interaction is reproduced and field attribution names the target and phase.

Chain 3 — field CLS worsens while fresh lab CLS stays flat

Real-user CLS degrades while pinned Lighthouse CLS run today is unchanged. The hypothesis is a post-load or real-user-only shift that the synthetic run never receives.

  1. 01

    CrUX p75 CLS rises for the template on PHONE

    CrUX API

    The stored field record shows cumulative_layout_shift p75 above 0.1 with density moving out of the good bucket, for the recorded URL, form factor and collection window.

  2. 02

    A fresh pinned lab run reports CLS effectively unchanged

    Lighthouse

    Three Lighthouse runs today at a pinned version, with the environment recorded, give a median lab CLS at the same near-zero value as before. The lab is not contradicting the field; it is answering a different question about a different load.

  3. 03

    The size of the field-only divergence

    Derived

    The field p75 CLS delta and the share of loads now in the needs-improvement and poor buckets, alongside the flat lab median stored separately. The gap between namespaces is described, never resolved by averaging.

  4. 04

    A post-load or real-user-only shift is not reproduced in the lab run

    Hypothesis

    web.dev documents CLS as the largest session window of unexpected shifts across the page's lifespan, so shifts that occur after the synthetic run ends — or only under real-user conditions — can raise field CLS while lab CLS stays flat.

  5. 05

    Check dynamic components, ads, consent flows and shifts during interaction

    Validation

    Reproduce with the real consent flow and third parties enabled, scroll and interact rather than only loading, and inspect late-injected or personalized components, unsized ad and embed slots, and layout changes triggered by interaction. First-party RUM shift attribution, where available, names the element.

ConclusionReport a real-user visual-stability regression that the current lab configuration does not reproduce, and treat the flat lab number as evidence about the lab run rather than evidence against the field. The fix cannot be specified until the shifting element is identified under real-user conditions.

Confidence 60% — Moderate confidence

The field signal is a valid assessment and the lab/field divergence is itself expected for CLS, but no specific shifting element has been identified and the responsible condition — consent, ads, personalisation or interaction — remains open.

Chain 4 — search clicks fall while field Core Web Vitals stay stable

Clicks drop in Search Console while field LCP, INP and CLS hold their bands. Performance is not corroborated as the cause, and the investigation returns to the search layer.

  1. 01

    Search Console clicks fall for the affected pages

    Search Console

    The Search Analytics data for those pages shows a sustained click decline over a defined date range, read at page and query level rather than site total.

  2. 02

    Field p75 LCP, INP and CLS remain in the same bands

    CrUX

    The stored CrUX records for the same URLs and form factors show no band change and no step in the weekly History series across the same interval, with collection windows recorded.

  3. 03

    Click delta against unchanged field bands

    Derived

    The click and impression change per page and per query, set beside the unchanged p75 values and bands. The two series stay in their own namespaces; no performance-to-clicks ratio is computed.

  4. 04

    Something other than page performance moved demand or visibility

    Hypothesis

    With the performance layer stable, the leading hypotheses are search-side: lost impressions, ranking movement, SERP-feature or layout changes, seasonality, or cannibalisation between pages.

  5. 05

    Return to query, page, impression and position evidence

    Validation

    Split impressions from position by query and page, check indexing and canonical state, compare against the same period last year, and only revisit performance if a field band later changes. Note also that Search Console groups similar URLs and samples indexed URLs, so group status is not per-URL truth.

ConclusionPerformance is not corroborated as the cause of the click decline and should be stated as ruled out for now, not as innocent forever. The investigation belongs in the Search Console layer — queries, impressions, positions and indexing.

Confidence 75% — High confidence

The negative finding is well supported because stable field bands across the same interval are directly verifiable. It falls short of certainty because a change too recent or too small to move a 28-day p75, or one confined to a segment CrUX cannot express, cannot be excluded.

Chain 5 — the lab score dropped but the field data did not

A performance score falls in the dashboard while CrUX p75 for all three metrics holds steady, and the drop coincides with the PSI move to Lighthouse 13.0.

  1. 01

    PSI performance score falls sharply for tracked URLs

    PSI

    The lab score drops across several unrelated templates at once, which is unusual for a page-level change.

  2. 02

    CrUX p75 LCP, INP and CLS are unchanged

    CrUX

    The field assessment for the same URLs and form factor stays in the same bands across the period, with no step in the weekly history.

  3. 03

    The drop coincides with a documented tooling change

    PSI release notes

    The PSI release notes record that PSI and the API moved to Lighthouse 13.0 on 20 October 2025, so lab scores either side of that date are not directly comparable.

  4. 04

    Real users are unaffected so far as the field can tell

    Method

    Field data is the assessment layer, and it shows no change. A lab-only movement across a version boundary is a measurement change until field data says otherwise.

ConclusionThis is most likely a measurement change rather than a user-experience change, and it should not be reported as a Core Web Vitals regression. Re-baseline the lab series at the new version and keep watching field data, which lags by its 28-day rolling window.

Confidence 75% — High confidence

The pattern — simultaneous across templates, absent from field data, coincident with a documented version change — is strong, but a real regression too new to surface in a 28-day rolling window cannot be excluded yet.

Chain 6 — a page has no field data at all

A tracked URL returns no CrUX record, and the correct response is a coverage statement plus a lab-only, clearly labeled diagnosis.

  1. 01

    The CrUX query for the URL returns no record

    CrUX API

    The URL-level query yields nothing, while the origin-level query for the same site returns data.

  2. 02

    Eligibility, not performance, is the documented reason

    CrUX methodology

    CrUX methodology requires a page to be publicly discoverable and sufficiently popular, with enough eligible users. A missing record says the page did not meet those criteria.

  3. 03

    Origin data cannot substitute for the page

    Method

    An origin aggregate describes the site, not this template. Reporting it as the page's experience would silently change the question being answered.

  4. 04

    Lab evidence is available and must be labeled as lab

    Lighthouse

    A median of three pinned Lighthouse runs can still identify concrete opportunities, and INP simply cannot be assessed for this page.

ConclusionReport the page as having no field assessment available, give the lab findings explicitly as lab-only diagnosis, and state that responsiveness cannot be assessed for it. Do not present origin data as the page's experience.

Confidence 90% — Very high confidence

The absence of a record and the documented eligibility criteria are both verifiable directly, and the conclusion is a statement about coverage rather than about cause.

Common diagnostic patterns

Connector Scout editorial guidance — recurring performance shapes, the explanation each usually supports, and the check that settles it

  • LCP regression from the largest element itself

    Confidence 70% — Moderate confidence
    • CrUX: p75 LCP (mobile) increased
    • CrUX: LCP resource load duration increased
    • CrUX: experimental TTFB unchanged
    Usually means
    The largest above-the-fold element changed, grew, or lost its priority hint or preload, so fetching it now dominates LCP.
    Rule out first
    A server or CDN slowdown (TTFB would move), a change in which element is largest, and a device-mix shift toward slower hardware.
    Next check
    Compare the LCP element and its bytes in a pinned lab run today against the release history for the candidate interval the weekly History series narrows to — overlapping weekly windows narrow an interval, they do not date a release.
  • Delivery-side LCP regression

    Confidence 65% — Moderate confidence
    • CrUX: p75 LCP increased
    • CrUX: experimental TTFB increased
    • CrUX: p75 FCP increased
    Usually means
    Server response or network delivery slowed, pushing every downstream paint later regardless of page weight.
    Rule out first
    A page-weight change (subparts other than TTFB would dominate) and a geographic traffic shift that changes the network profile of the audience.
    Next check
    Confirm with server-side response-time monitoring and CDN logs for the same window; the field data cannot separate origin from edge.
  • Responsiveness problem confined to one template

    Confidence 65% — Moderate confidence
    • CrUX: p75 INP (mobile) increased
    • Lighthouse: Total Blocking Time increased
    • CrUX: p75 LCP unchanged
    Usually means
    Main-thread work introduced by a script or an interaction handler on that template is delaying the paint after user input.
    Rule out first
    A third-party script rolled out site-wide (other templates would move too) and a device-mix change toward lower-end hardware.
    Next check
    Reproduce the interaction by hand on the affected device class and profile the main thread; TBT localises the work but is not the INP value.
  • CLS driven by late or conditional content

    Confidence 60% — Moderate confidence
    • CrUX: p75 CLS increased
    • Lighthouse: CLS (lab) unchanged
    • CrUX: p75 LCP unchanged
    Usually means
    Content that a synthetic run does not receive — a consent banner, a personalized block, a late ad or an unsized embed — is shifting layout for real users inside one session window.
    Rule out first
    A lab configuration that suppresses the offending content, and a change confined to one geography where a consent flow differs.
    Next check
    Reproduce with the real consent flow and third parties enabled, then attribute shifts to the specific burst rather than to the page as a whole.
  • Lab-only movement across templates

    Confidence 70% — Moderate confidence
    • PSI: Performance score decreased
    • CrUX: p75 LCP, INP, CLS unchanged
    • CrUX History: Weekly trend unchanged
    Usually means
    A tooling or environment change — such as the 20 October 2025 move to Lighthouse 13.0, a runner change, or throttling variance — rather than a change to the pages.
    Rule out first
    A genuine regression too recent to appear in a 28-day rolling window, and a site-wide deploy that field data has not yet absorbed.
    Next check
    Re-run the lab check three times at a pinned Lighthouse version and re-baseline, then re-read field data after a full collection period has passed.

Core Web Vitals analyst checklist (Connector Scout editorial guidance)

  1. 01Decide which question you are asking before you pull anything

    Field data assesses experience; lab data diagnoses and verifies. Choosing the wrong one is the most common failure in this layer.

    • Write the question as either 'how did eligible users experience this?' or 'what is slow in this run?'.
    • Name the URL or origin and the form factor before querying — the answer differs for each.
    • Decide up front what result would change the recommendation, including a null result.
  2. 02Set up access and quota handling before the first scheduled pull

    • Take scheduled field data from the CrUX and CrUX History APIs, not from the PSI field half, which Google documents as planned for discontinuation.
    • Restrict each API key to the single API it is used for, and monitor quota use against the documented 150 CrUX queries per minute per Google Cloud project.
    • Treat the PSI API key as recommended for frequent automated querying rather than required, and still use one for any scheduled job.
    • Read field INP from INTERACTION_TO_NEXT_PAINT; the earlier EXPERIMENTAL_INTERACTION_TO_NEXT_PAINT key no longer exists in the response.
  3. 03Pull field data with its context attached

    • Query the CrUX API per tracked URL or origin and per form factor, and store the exact collection window — firstDate and lastDate — with every value.
    • Store the requested URL, the returned normalized URL and any URL-normalization details, so a 'missing' page can be distinguished from a normalization mismatch.
    • Record whether the record is URL-level or origin-level and never attach origin data to a URL row.
    • Keep PHONE and DESKTOP as separate assessment series and carry TABLET as its own labeled series or state that it was excluded — never fold it silently into another class.
    • Pull the History API weekly, not daily, and set collectionPeriodCount deliberately — the default returns 25 of the available 40 periods.
    • Record p75 values and the good / needs-improvement / poor bands, never a mean.
    • Retain the raw API response alongside the parsed values so a past brief can be reconstructed and re-audited.
    • When no record, no metric or too few eligible samples are returned, store 'unavailable' as a distinct state from zero, good or unchanged.
  4. 04Run lab checks reproducibly

    • Pin the Lighthouse version and store it with every result, together with the environment settings — strategy, screen emulation, throttling method and benchmark index; PSI moved to Lighthouse 13.0 on 20 October 2025.
    • Run at least three times and report the median, treating a single run as a sample.
    • Store the requested URL and the final URL for each run, plus any run warnings or runtime error.
    • Keep lab metrics in their own namespace — TBT and the performance score never sit in a Core Web Vitals table.
    • Note that INP has no lab equivalent, and say so rather than substituting a proxy.
  5. 05Compare like with like

    • Never compare a lab number with a field number, or a field value from one form factor with another.
    • Check whether URL-level or origin-level data was returned before reading a template-level conclusion.
    • Treat adjacent daily windows as highly overlapping — consecutive 28-day windows share 27 days — and weekly History points as overlapping windows sharing three weeks; use them to narrow a candidate interval, never to date a release.
    • Corroborate across sources before naming a cause, and state plainly when a second source does not corroborate the first.
    • Treat single-page-app route data as structurally incomplete, per CrUX methodology.
  6. 06Report performance as one layer of evidence

    • State the field assessment first, then the lab diagnosis, clearly labeled as separate namespaces.
    • Label every step as a verified fact, a calculated metric, a hypothesis or a required validation, and never let a hypothesis travel without its validation step.
    • Do not claim a ranking effect: Google says Core Web Vitals are used by its ranking systems but that good scores do not guarantee rankings and relevance remains primary.
    • Pair a performance claim with the search and analytics layers before implying business impact.
    • Name the reproduction step and the release-history check that would confirm or kill the hypothesis.
    • Put the finished brief through human review before it reaches a stakeholder or a backlog.

Normalize Your Data#

Every source in this guide describes performance differently. Normalization builds one consistent analytical layer across them — a shared record envelope, source-specific dimensions and metrics, a canonical page-identity table, and explicit comparison records — without pretending the sources measure the same thing.

Search Console organises rows around search dimensions such as date, query, page, country and device. GA4 reports combinations of dimensions and metrics. Clarity contributes aggregated behavioral signals. Ahrefs and Semrush provide vendor-defined search and link estimates. CrUX reports field performance over a rolling collection period.

If raw responses go straight to an AI model, two failures follow almost immediately: identical concepts arrive under different names, and incompatible periods or grains get compared as though they were equivalent. Normalization removes both failure modes by giving every record the same envelope, the same identifiers and the same explicit statement of what it covers.

The instinct to force all providers into one flat table is the mistake to avoid. Instead, normalize in four layers: a shared record envelope carrying provenance, identity, period and quality; source-specific dimensions and metrics kept in their own namespaces; a canonical page-identity table used for page joins; and comparison records calculated after ingestion rather than inferred at read time. Records must not be joined until their grains are compatible.

The schema, naming rules, baselines and validation steps in this chapter are Connector Scout implementation recommendations, not provider requirements. The behavior of each source — its row shapes, time models and documented limits — comes from the primary documentation linked at the end of the chapter.

Preserve each record’s grain

A record’s grain is the exact level one row represents. Write it down before anything else, because every join, comparison and aggregation downstream depends on it.

  • Search Console: property × date × page × query × country × device.
  • Google Analytics 4: property × date × landing page × device category.
  • Microsoft Clarity: project × requested date range × URL.
  • Ahrefs and Semrush domain metrics: domain × observation date.
  • CrUX: URL or origin × form factor × collection period.

A Search Console page-and-query row must be aggregated to page level before it is joined to a page-level GA4 row. Skip that step and GA4 metrics are duplicated once per query. Storing the grain on the record makes the requirement explicit: "grain": ["date", "page", "query", "country", "device"].

Source-grain matrix. Row shapes and time models are documented by each provider; the join cautions are Connector Scout editorial guidance.

Google Search Console

Example grain
Property × date × page × query × country × device
Time model
Calendar date, or hour, depending on the request
Join caution
Top-row limits and omitted no-data dates mean missing is not necessarily zero.

Google Analytics 4

Example grain
Property × date × requested dimensions
Time model
Property reporting time zone
Join caution
Adding dimensions changes the grain; do not repeat session-scoped metrics across lower-level rows.

Ahrefs

Example grain
Target × observation date × endpoint dimensions
Time model
Snapshot, or an endpoint-defined historical interval
Join caution
Keep values attributed to Ahrefs and preserve the mode, country and endpoint they came from.

Semrush

Example grain
Database × target or keyword × display date × device
Time model
Daily or monthly depending on the report
Join caution
Preserve database, device and display-date semantics on every row.

Microsoft Clarity

Example grain
Project × requested date range × dimensions
Time model
Requested dashboard interval
Join caution
Do not treat aggregated dashboard exports as GA4 event rows.

CrUX

Example grain
URL or origin × form factor × collection period
Time model
Rolling collection period
Join caution
Do not compare a rolling collection period as if it were a single-day measurement.

Use a shared record envelope

The envelope answers the provenance questions an analyst has to be able to ask of any number: where did this come from, what does it identify, what period does it describe, how complete is it, and when was it retrieved? Those answers live in the same place for every source. Only the dimensions, metrics, entity_key and quality contents vary by source.

normalized-record.json
{  "schema_version": "1.0.0",  "record_id": "gsc:sc-domain:example.com:2026-07-27:sha256…",  "source": "google_search_console",  "source_report": "search_analytics",  "property_id": "sc-domain:example.com",  "entity_type": "page_query",  "entity_key": {    "page": "https://example.com/guides/ai-seo/",    "query": "ai seo workflow"  },  "grain": ["date", "page", "query", "country", "device"],  "period": {    "start": "2026-07-27",    "end": "2026-07-27",    "timezone": "America/Chicago",

The example above is an illustrative Connector Scout design, not a provider schema. Note the quality block: Google’s Search Analytics documentation states that the API does not guarantee every matching row, that responses may be limited to top rows, and that dates with no data are omitted when results are grouped by date. Your records therefore have to distinguish a reported zero from an absent row.

Standardize identifiers and names

Naming and formatting rules for the normalized layer. These are Connector Scout implementation recommendations, not provider requirements.

Source

Rule
Lowercase snake_case, e.g. google_search_console.

Metric

Rule
Lowercase snake_case, e.g. engagement_rate.

Date

Rule
ISO 8601 date, e.g. 2026-07-27.

Timestamp

Rule
ISO 8601 in UTC, e.g. 2026-07-30T11:05:00Z.

Country

Rule
ISO 3166-1 alpha-2 where the source allows it.

Device

Rule
Controlled vocabulary: desktop, mobile, tablet, unknown.

Page

Rule
Absolute canonical URL.

Property

Rule
Preserve the provider's own identifier verbatim.

Ratio

Rule
Decimal between 0 and 1, never a pre-formatted percentage string.

Duration

Rule
Integer milliseconds.

Bytes

Rule
Integer bytes.

Pair the naming rules with a metric dictionary, so every normalized metric records the provider field it came from, its type and unit, and how it must be aggregated.

metric-dictionary.json
{  "engagement_rate": {    "source": "google_analytics_4",    "source_field": "engagementRate",    "type": "ratio",    "unit": "decimal",    "aggregation": "weighted_recalculation",    "definition_owner": "provider",    "notes": "Recalculate from engaged_sessions / sessions when aggregating; never average across rows."  }}

Build a canonical page-identity table

Page-level joins should reference a page identifier, never a raw URL string. One row per page holds the canonical URL, the variants observed in the wild, and the grouping attributes your analysis needs.

page-identity.json
{  "page_id": "pg_7f3c1a",  "canonical_url": "https://example.com/guides/ai-seo/",  "observed_urls": [    "https://example.com/guides/ai-seo/",    "https://example.com/guides/ai-seo",    "https://www.example.com/guides/ai-seo/?utm_source=newsletter"  ],  "path": "/guides/ai-seo/",  "host": "example.com",  "page_group": "guides",  "locale": "en-US",  "status": "active"}
  1. Parse the URL rather than editing it as a string.
  2. Lowercase the scheme and hostname only.
  3. Remove the fragment.
  4. Remove only the tracking parameters on your documented list.
  5. Apply your own documented host and trailing-slash rules consistently.
  6. Resolve redirects and canonical relationships through a separate mapping step, not inside the parser.
  7. Store both the observed URL and the normalized URL on every record.

Separate event dates, observation dates and retrieval times

period.start and period.end

The window the measurement describes. For a single calendar day, start and end are the same date; for a rolling window, they are the first and last day the aggregate covers.

observed_at

When the provider states the observation was taken, for snapshot-style metrics such as third-party domain or backlink figures.

retrieved_at

When your pipeline fetched the response, in UTC. This is a pipeline fact, never a measurement date.

data_through

The last date the source itself claims to be complete through, which is often earlier than the requested end date.

period_type

One of calendar, rolling, snapshot or realtime. It tells every downstream comparison whether two windows are even the same kind of thing.

timezone

The time zone the period is expressed in — the property reporting time zone for analytics data. Keep it on the record instead of assuming UTC.

Chrome documents the CrUX API as returning a rolling 28-day collection period, so a CrUX value normally represents that window rather than a measurement taken on the retrieval date, and a new page may have fewer underlying days inside it. A rolling 28-day CrUX value and a single-day GA4 value are not equivalent quantities and must not be compared as though they were.

Retain raw data and provenance

Keep three distinct stages, each traceable to the one before it: the raw response exactly as received, the normalized record derived from it, and the calculated finding derived from the normalized record. Retain the following with every record.

  • Source and endpoint or report name.
  • Request parameters, with credentials and authorization headers excluded.
  • Retrieval timestamp in UTC.
  • A hash of the raw payload, so a stored record can be tied to the exact response it came from.
  • Schema version and transformation version.
  • Pagination state, including whether all pages were retrieved.
  • Filters, segments and sampling or thresholding notes applied to the request.
  • Any API warnings and the quality flags derived from them.

Normalize values without changing their meaning

  • Parse numeric strings into numbers; never store a formatted string as a metric.
  • Store ratios as decimals between 0 and 1.
  • Store durations in the unit you declare in the metric dictionary, consistently.
  • Store timestamps in UTC while retaining the report time zone on the record.
  • Store unavailable values as null, never as zero.
  • Preserve an explicit zero the source actually reported as a zero.
  • Keep rankings and positions numeric, and record that lower is better.
  • Label provider estimates as estimates, attributed to the provider that produced them.
  • Reject NaN and infinity at validation rather than storing them.
  • Store currency values with their ISO currency code.
  • Retain the original value whenever a conversion would be lossy.
  • Never sum CTR, engagement rate or average position; recalculate CTR as total clicks divided by total impressions, and engagement rate as engaged sessions divided by sessions.

Create explicit comparison windows

Comparisons are records the pipeline calculates after ingestion, not something the model works out while writing the brief. Use complete periods only.

Comparison windows worth defining explicitly. These baselines are Connector Scout editorial recommendations, not provider definitions.

Day over day

Definition
The last complete day against the previous complete day.

Week over week

Definition
The last complete day against the same weekday in the prior week.

Rolling 7

Definition
The latest 7 complete days against the previous 7 complete days.

Rolling 28

Definition
The latest 28 complete days against the previous 28 complete days.

Year over year

Definition
The same complete period in the prior year, with the weekday offset stated.

Same-weekday baseline

Definition
The latest complete day against the median of prior comparable weekdays, with the number of observations recorded.
comparison-record.json
{  "metric": "clicks",  "current_value": 842,  "comparison_value": 1018,  "absolute_change": -176,  "percent_change": -0.1729,  "baseline_method": "same_weekday_median",  "baseline_observations": 8}

When the comparison value is zero or missing, store percent_change as null with a stated reason rather than emitting an infinite or misleading percentage.

Record data-quality conditions

complete

Every requested page of data was retrieved and the source raised no warnings.

partial

Some of the requested data was returned, and the record says so explicitly.

delayed

The source has not yet finalised the requested period.

truncated

A row or result limit applied, so the response may not contain every matching row.

thresholded

The source withheld or aggregated low-volume detail.

missing

No data was returned. This is distinct from a reported zero.

stale

The newest available data is older than the run expected.

incompatible

The record cannot be compared or joined as requested, because its grain, period type or dimensions do not match.
quality-status.json
{  "status": "partial",  "is_partial": true,  "is_sampled": false,  "is_thresholded": false,  "is_top_rows_limited": true,  "issues": [    {      "code": "SOURCE_ROW_LIMIT",      "severity": "warning",      "message": "The source may not have returned every matching row."    }  ]}

Two source-specific conditions are worth encoding directly. Microsoft Clarity’s Data Export API returns aggregated dashboard data, so those records are not universal event rows and must not be treated as GA4-style events. Semrush reports can be monthly or daily depending on the report, so retain the database, device and display-date semantics on every Semrush record.

Validate before analysis

Normalization validation checklist (Connector Scout editorial guidance) — a reference list for display, not a saved run state

  1. 01Structure and required fields

    Connector Scout editorial guidance. This is a reference list for display, not a saved run state.

    • Every required envelope field is present: schema_version, source, property_id, entity_type, grain, period, quality and retrieved_at.
    • Every date and timestamp parses, and period.start is less than or equal to period.end.
    • URLs parse as absolute URLs.
    • The declared grain matches the dimensions actually present on the record.
  2. 02Values and ranges

    • Ratios fall between 0 and 1.
    • Counts are non-negative, and NaN and infinity are rejected rather than stored.
    • Derived metrics reconcile with their components within a stated tolerance.
  3. 03Integrity and comparability

    • Records are unique at their declared grain.
    • Pagination is complete, or the record is flagged partial.
    • Compared periods have matching lengths and compatible dimensions before any comparison is written.
  4. 04Safety and failure handling

    • No API keys, tokens or authorization headers appear anywhere in stored records or logs.
    • Invalid records are quarantined rather than repaired in place.
    • Every validation failure is logged, and malformed values are never silently coerced to zero.

Quarantine invalid records and log every validation failure. Malformed values must never be silently coerced to zero.

Minimum viable normalized layer

  1. Immutable raw responses, stored exactly as received.
  2. A shared record envelope for provenance, identity, period and quality.
  3. Source-specific transformation mappings, one per report you consume.
  4. A canonical page-identity table used for every page-level join.
  5. A validation report produced on every run.

Schemas#

Normalization makes records comparable. Schemas make the entire workflow auditable. Define the contracts before you automate the brief so every source, calculation and finding has a predictable shape.

The schemas below are Connector Scout implementation recommendations, not provider requirements. What each source can supply — its grain, fields, limits and freshness — comes from the primary documentation consolidated at the end of the guide.

The analyst needs five schemas

  1. Page registry: the stable identity and business context for each canonical page.
  2. Source record: one normalized observation at its original grain.
  3. Comparison record: the deterministic calculation between two complete periods.
  4. Finding: the evidence, interpretation, confidence and next step for one material change.
  5. Run manifest: the health, coverage and tool history for one analyst run.
finding.example.json
{  "finding_id": "2026-08-03-product-mobile-ctr",  "status": "verified_change",  "title": "Mobile CTR declined on the primary product page",  "scope": {    "page_id": "product-main",    "canonical_url": "https://www.example.com/product/",    "country": "USA",    "device": "MOBILE",    "search_type": "web"  },  "comparison": {
run-manifest.example.json
{  "run_id": "daily-seo-2026-08-03T12:00:00Z",  "site": "example.com",  "timezone": "America/Chicago",  "started_at": "2026-08-03T12:00:00Z",  "completed_at": "2026-08-03T12:07:42Z",  "latest_complete_date": "2026-07-31",  "status": "completed_with_warning",  "sources": [    {"name": "google_search_console", "status": "complete", "rows": 18240},    {"name": "google_analytics_4", "status": "complete", "rows": 824},    {"name": "ahrefs", "status": "complete", "rows": 250},

Alert Thresholds#

There is no universal SEO threshold that separates signal from noise. The thresholds below are starting recommendations, not platform rules. Calibrate them against your own historical variance, seasonality, business model and page volumes.

Use an absolute rule with every relative rule. A rise from one click to two clicks is 100%, but it is not a material business event.

Do not use the incomplete current day in primary alert logic. Google says Search Console performance data is typically available after two to three days and exposes metadata for incomplete recent data. Select the latest complete date from the source rather than assuming yesterday is complete.

An alert should pass four gates

  1. Completeness: both comparison periods are complete and comparable.
  2. Volume: the affected scope has enough data to interpret.
  3. Magnitude: both the relative and absolute change are meaningful.
  4. Relevance: the change affects a priority page, query group or business outcome — or is corroborated by another source.

Starting minimum-volume gates (Connector Scout recommendations, not platform rules). Calibrate against your own variance.

GSC impressions

Suggested minimum in the comparison window
200

GSC clicks

Suggested minimum in the comparison window
25

GA4 organic sessions

Suggested minimum in the comparison window
50

Key events in the longer baseline

Suggested minimum in the comparison window
10

Tracked keywords in a page or topic group

Suggested minimum in the comparison window
5

Clarity sessions

Suggested minimum in the comparison window
30

CrUX

Suggested minimum in the comparison window
Eligible data at the same URL/origin and form-factor scope

Starting change thresholds (Connector Scout recommendations). Every relative test is paired with an absolute one.

GSC clicks

Watch
±15%
Material
±25%
Critical
±40%

GSC impressions

Watch
±20%
Material
±30%
Critical
±50%

GSC CTR

Watch
±15% relative and ≥0.5 percentage points
Material
±25% and ≥1 point
Critical
±40% and ≥2 points

GSC average position

Watch
≥1.0 positions
Material
≥2.0
Critical
≥4.0 or loss of a top-three/page-one group

GA4 organic sessions

Watch
±15%
Material
±25%
Critical
±40%

Organic key events

Watch
±20%, with sufficient volume
Material
±30%
Critical
±50%

Tracked keyword position

Watch
≥3 places
Material
≥5
Critical
Loss of top three or page one

Clarity friction-session rate

Watch
+20%
Material
+35%
Critical
+60%

JavaScript-error session rate

Watch
+25%
Material
+50%
Critical
+100%
thresholds.yaml
# Connector Scout starting recommendations — calibrate before automating.thresholds:  minimum_volume:    gsc_impressions: 200    gsc_clicks: 25    ga4_organic_sessions: 50    key_events_long_baseline: 10    tracked_keywords: 5    clarity_sessions: 30  material_change:    gsc_clicks_relative: 0.25    gsc_impressions_relative: 0.30    gsc_ctr_relative: 0.25    gsc_ctr_absolute_points: 1.0    average_position_absolute: 2.0    ga4_organic_sessions_relative: 0.25    organic_key_events_relative: 0.30  rules:    require_complete_periods: true    require_absolute_and_relative_tests: true    require_second_source_for_high_confidence: true    suppress_incomplete_current_day: true    maximum_daily_findings: 5
priority-score
priority_score =  magnitude  × volume_confidence  × business_priority  × corroboration  × urgency

Diagnostic Workflow#

Every alert should follow the same diagnostic sequence. The order is deliberate: do not generate a cause before verifying that the change is real.

1. Validate the data

Confirm extraction success, complete dates, property and project IDs, time zones, filters, sampling or thresholding warnings, deployment annotations and sitewide tracking discontinuities. Stop the investigation when the evidence layer is unhealthy.

2. Localize the change

Segment by page, section, query, topic, country, device, search appearance and branded versus non-branded intent. Determine whether the pattern is sitewide, template-wide or isolated.

3. Classify the pattern

Match the observed shape of the change to the pattern table below, then retrieve the next evidence it points to. These are investigation paths, not conclusions.

4. Generate competing hypotheses

Create at least two plausible explanations. For each one, list evidence for it, evidence against it and the cheapest validation step. If the evidence supports only one narrative because alternatives were never considered, confidence is overstated.

5. Corroborate

Use a second independent evidence layer when possible. Search Console plus GA4 can confirm whether a search decline reached the site. GA4 plus Clarity can show whether a conversion decline coincided with behavioral friction. A rank provider can add context, but its estimates remain provider-attributed.

6. Prioritize the next validation step

Recommend the smallest reversible action that reduces uncertainty: inspect the URL, review the SERP, compare a deployment, watch recordings, run a crawl or draft a test. Do not jump directly from anomaly to production change.

Pattern classification (Connector Scout editorial guidance). These are investigation paths, not conclusions.

Impressions down and positions down

Stronger first hypothesis
Visibility or demand loss
Next evidence to retrieve
Query groups, competitors, indexation and release history

Impressions stable, CTR down, position stable

Stronger first hypothesis
SERP or snippet issue
Next evidence to retrieve
Current SERP, search features, query intent and device mix

GSC clicks stable, GA4 sessions down

Stronger first hypothesis
Measurement or landing experience issue
Next evidence to retrieve
Tagging, consent, channel grouping and server logs

Rankings stable, key events down

Stronger first hypothesis
Conversion or UX issue
Next evidence to retrieve
GA4 events, Clarity friction and deployment history

Traffic down and friction up

Stronger first hypothesis
Page experience may be contributing
Next evidence to retrieve
Clarity recordings, GA4 device segments and recent releases

CrUX trend worsens gradually

Stronger first hypothesis
Field-performance regression
Next evidence to retrieve
CrUX History and targeted Lighthouse diagnostics

System Prompt#

The system prompt is the standing contract for every run. It fixes the analyst as read-only, forces evidence labeling, and defines the output the brief must satisfy.

This prompt is Connector Scout editorial guidance. Adapt the property names, thresholds and owners to your own setup, but keep the read-only rules, the evidence separation and the human-review requirement intact.

System prompt
You are a read-only Daily AI SEO Analyst.Your job is to identify material organic-search changes, validate the underlying data, investigate likely causes, and recommend the smallest useful next validation step for a human reviewer.OPERATING RULES1. Use only connected tools and supplied data.2. For every material claim, state the source, property or project, date range, dimensions, filters, and retrieval time.3. Separate four evidence types:   - VERIFIED FACT: stated directly by retrieved data.   - CALCULATION: derived transparently from retrieved data.   - HYPOTHESIS: a plausible explanation that still requires validation.   - RECOMMENDED CHECK: the next step that would reduce uncertainty.4. Never state correlation as causation.

Daily Prompt#

The daily prompt supplies the run inputs: the site, the priority scopes, the configured minimums and the comparison windows. Everything else is inherited from the system prompt.

Replace each bracketed placeholder with your own configuration before the first run. The data-health step runs first by design: an unhealthy evidence layer invalidates every finding that follows it.

Daily prompt
Prepare today's Daily SEO Brief for [SITE].Use the most recent complete data available. Determine the latest complete date from each source before comparing performance.Compare:1. The latest seven complete days with the previous seven complete days.2. The latest seven complete days with the same weekdays four weeks earlier.3. The latest 28 complete days with the previous 28 complete days only when needed to confirm a trend.Prioritize:- Sections: [PRIORITY SECTIONS]- Primary conversions or key events: [PRIMARY OUTCOMES]- Countries: [TARGET COUNTRIES]- Devices: [TARGET DEVICES]

Prompt Library#

Five reusable investigation prompts for the situations a daily brief raises most often. Each one keeps the read-only boundary and the facts-versus-hypotheses separation of the system prompt.

Investigate a traffic decline
Investigate the organic decline for [PAGE OR SECTION].Validate complete dates and confirm that the change passes both the minimum-volume and materiality rules.Decompose the change into impressions, CTR, average position, query groups, devices, countries, GA4 organic sessions, key events, tracked keyword movement, competitor or backlink context, Clarity friction, and technical or Web Vitals signals where available.
Investigate a CTR decline
Find priority pages where Search Console CTR declined materially while average position remained within ±0.5 positions.Require at least [MINIMUM IMPRESSIONS] impressions. Segment branded and non-branded queries where possible, identify device and country concentration, and review current SERP composition and search features with the connected provider.Do not recommend a title or description change until the dominant query intent and current competing results have been reviewed.
Find sustained content decay
Find previously successful pages with a sustained decline across at least 28 complete days.Exclude seasonal pages, discontinued offerings, intentional redirects or noindex directives, and new pages without a valid baseline.Use Search Console, GA4 and the connected rank provider. Classify each case as demand decline, ranking decline, CTR decline, conversion decline, possible cannibalization, technical issue or insufficient evidence. Preserve provider attribution for all third-party metrics.
Investigate landing-page friction
For the listed priority organic landing pages, identify material increases in Clarity friction signals.Do not infer causation. For each page report session volume, friction-rate change, device concentration, change date, related GA4 engagement or key-event movement, and the exact recording or manual-review task a human should perform. Do not transfer raw recording or personal data into the brief.
Write the executive update
Convert the verified Daily SEO Brief into an executive update with three short paragraphs:1. What happened.2. Why it matters to the business.3. What the team is validating next.Use plain language. Retain confidence qualifiers. Exclude unverified technical speculation and do not imply that a hypothesis has been proven.

Example Daily Brief#

A worked brief showing the structure, the evidence labeling and the level of restraint the workflow is designed to produce. The values are illustrative and do not describe a real site.

Section A

Data health — Good with one coverage warning

  • Search Console and GA4 contain complete data through July 31.
  • The Ahrefs request completed successfully for the United States database.
  • Clarity was not queried during the initial scan; its limited daily request budget is reserved for targeted investigations.
  • CrUX returned eligible mobile URL-level data for 12 of 18 priority pages and origin-level data for the remaining six.
  • No sitewide analytics discontinuity was detected.

Section B

Overall status — Stable with one high-impact CTR risk

Organic visibility was broadly stable. The only material click decline is concentrated on the primary product page on mobile.

Section C — verified change

Finding 1 — Product-page mobile CTR declined

  • Scope: /product/, United States, mobile, non-branded queries.
  • Recent period: July 25–31.
  • Baseline: July 18–24.
  • Verified facts: Impressions increased 4%; average position changed from 4.1 to 4.2; CTR declined from 4.3% to 3.1%.
  • Calculation: CTR fell 1.2 percentage points, or 27.9% relative.
  • GA4 corroboration: Organic landing-page sessions declined 18% over the same period.
  • Impact: High.
  • Confidence that the change is real: High.

Hypothesis 1: Changed SERP composition or a less competitive snippet reduced click-through.

Evidence for: Impressions and position were stable.

Evidence against: The current mobile SERP has not yet been reviewed.

Confidence: Moderate

Hypothesis 2: A shift toward lower-intent queries reduced aggregate CTR.

Evidence for: Non-branded queries account for most of the decline.

Evidence against: Query-mix contribution has not yet been calculated.

Confidence: Low

Automation#

A scheduled analyst should automate extraction, validation, calculation and delivery — not production changes.

Google says Search Console performance data is typically available after two to three days. Build the run around the latest complete date rather than a fixed “yesterday” assumption. CrUX is updated daily but represents a rolling 28-day window, so use it as trend evidence, not an overnight alert.

Recommended daily sequence

  1. Query each source for its latest complete date.
  2. Extract and upsert the latest day at the source's native grain.
  3. Re-extract the previous seven days to capture late processing or revisions.
  4. Validate schemas, completeness, row counts and quality flags.
  5. Calculate comparisons and threshold tests deterministically.
  6. Send only candidate anomalies and the minimum supporting context to the model.
  7. Permit targeted read-only calls for corroboration.
  8. Validate the structured findings against the finding schema.
  9. Save the manifest, evidence references and final brief.
  10. Deliver the brief to the reviewer and stop.
Recommended daily run window
05:45  Determine latest complete dates and available quotas06:00  Extract and backfill read-only source data06:15  Validate and normalize06:20  Calculate comparisons and candidate anomalies06:25  Run targeted AI investigation06:35  Validate finding schema and save the run manifest06:40  Deliver the brief for human review

Security#

Read-only is a design boundary, not a complete security strategy.

OpenAI's official security guidance recommends least privilege, explicit consent, server-side input validation, audit logs and human confirmation for irreversible actions. It also warns that prompt injection remains relevant when models can access MCP servers and third-party data.

Security checklist

0/5 done

Troubleshooting#

The failure modes this workflow actually produces, and the documented check that resolves each one.

Minimum Viable Build#

Start with the smallest system that can produce a brief you trust.

Build in this order

  1. Search Console page-level daily data.
  2. GA4 organic landing-page daily data and one primary key event.
  3. A canonical page registry with business priority.
  4. Latest-seven, previous-seven and 28-day comparison records.
  5. Completeness checks and minimum-volume gates.
  6. The finding schema, system prompt and daily prompt.
  7. Manual execution and review for two weeks.
  8. One competitive provider only after the first-party brief is useful.
  9. Clarity and CrUX for targeted corroboration.
  10. Scheduled delivery only after thresholds produce consistently useful findings.

Calibration

Days 1–3

Run manually. Record missing fields, bad joins and misleading comparisons.

Calibration

Days 4–7

Tune volume and magnitude gates. Track every false positive and missed issue.

Calibration

Days 8–10

Add one corroborating source and require evidence against hypotheses.

Calibration

Days 11–14

Freeze the schema, document the runbook and test failure states.

Calibration

After day 14

Automate delivery if the reviewer consistently trusts the brief. Keep production actions outside the workflow.

FAQ#

The questions readers ask most often about building and trusting this workflow.

Official Sources#

The consolidated primary-source list for the complete guide. Every vendor capability, endpoint, limit, quota and threshold definition above is taken from one of these pages; thresholds, schemas, prompts and cadences are Connector Scout editorial recommendations.

Next Steps#

Start with the minimum viable build. Run the analyst manually for two weeks, calibrate thresholds against real false positives, then automate delivery only after reviewers trust the brief. These pages cover the connector and permission groundwork the workflow depends on.

PDF download

Get the PDF version of this guide

Get the full Daily AI SEO Analyst guide as a PDF: the architecture, the connector classifications and the official sources, for SEO leads building a read-only AI workflow.

The download is available immediately after you submit. You may also receive occasional updates when new parts of the guide are published. No list sharing, unsubscribe any time.

See this workflow alongside 14 other practical connector workflows

Browse all Connector Scout guides