---
title: "Dock + Google Search Console: performance ops your agents can act on, with attributed audits"
excerpt: "Google Search Console holds the impressions, clicks, and CTR data. Dock is where the agent's prioritized fix list, page-by-page hypotheses, and reviewer decisions live. Each Dock row points back to the GSC query or page so the source of truth stays in Google."
author: mei
category: Use Cases
date: "2026-05-30"
---

Google Search Console is the system of record for what your site actually does in Google: impressions, clicks, average position, indexing state, Core Web Vitals. It is not, and was never built to be, the place your SEO agent stores its working theory of why a page dropped, what it tried, and who signed off. Dock is. The split is clean: GSC keeps the measurements, Dock keeps the interpretation, the queue, and the audit trail your team and your agents can both work against.

The architectural rule we hold across the [Dock-for-SEO pillar](/blog/dock-for-seo) is the same here. Google Search Console, along with Ahrefs, Semrush, Screaming Frog, and Clearscope, remains the system of record for the raw data: rankings, backlinks, crawl results, the keyword corpus. Dock is the system of record for what the agent interprets from that data: the prioritized fix list, the redirect map, the keyword brief, the outreach call. Each Dock row carries a pointer to the platform record (a `gsc_query_id`, a `gsc_page_url`, an `ahrefs_backlink_id`), plus agent identity, decision, reviewer, and timestamp. The agent re-fetches GSC via fresh API reads whenever it needs current numbers. Dock holds the interpretive layer that survives across sessions.

## The daily-driver surface: a GSC ops queue

| dock_row_id | gsc_query | gsc_page_url | clicks_28d | impressions_28d | avg_position | hypothesis | proposed_fix | agent | reviewer | status |
|---|---|---|---|---|---|---|---|---|---|---|
| gsc-0412 | "agent audit log" | /blog/agent-audit-and-compliance | 184 | 9,212 | 6.4 | Title misses "AI agent" modifier driving 80% of impressions | Rewrite title + H1, add FAQ schema | mei | govind | approved |
| gsc-0418 | "seo agent workflow" | /blog/dock-for-seo | 22 | 4,901 | 18.2 | Page ranks p2, intent mismatch on "workflow" vs "platform" | Add workflow walkthrough section, internal link from 3 cluster posts | ved | pending | in_review |
| gsc-0423 | "agent identity rotation" | /blog/agent-identity-lifecycle | 0 | 612 | 41.0 | Not in index per URL Inspection, sitemap entry stale | Resubmit URL, fix canonical | mei | govind | applied |

The columns matter. `gsc_query` and `gsc_page_url` are pointers, not copies: when a reviewer opens row gsc-0418, the agent re-reads the Search Analytics endpoint and shows current numbers next to the cached snapshot. `hypothesis` and `proposed_fix` are the agent's interpretive output. `reviewer` is the gate.

## A worked example

A scheduled run kicks off Monday at 07:00. The agent pulls the last 28 days from [Search Analytics](https://developers.google.com/webmaster-tools/v1/api_reference_index), groups by query and page, and surfaces queries where impressions are up but CTR is down more than 30%. It writes one Dock row per finding into the GSC ops queue, fills in `hypothesis` and `proposed_fix`, and stops. The SEO lead opens the queue at 09:00, scans the agent column to see who proposed what, approves three rows, rejects one with a comment, and marks one as `escalate`. The approved fixes flow to the [technical SEO ops surface](/blog/seo-technical-ops) where the agent applies title and meta changes. Anything that touches a canonical, a redirect, or a robots.txt rule routes through a [two-key handshake](/blog/two-key-handshakes-irreversible) because the blast radius is irreversible.

## Why this matters

Attribution is the first reason. When a title change tanks a page two weeks later, the row in Dock tells you exactly which agent proposed it, which human approved it, and what the GSC numbers looked like at the moment of the decision. That trail is what the [agent audit and compliance](/blog/agent-audit-and-compliance) workflow runs against.

Daily-driver experience is the second. SEO teams already live in spreadsheets. Dock is a spreadsheet that the agent can write to with identity, that links back to the platform of record, and that the team can filter, sort, and triage during a normal standup. The same shape extends to your [Ahrefs keyword research surface](/blog/dock-ahrefs-keyword-research), so one Monday review covers both.

Identity is the third. Every row is signed by an [agent identity](/blog/agent-identity-lifecycle), not a service account. When the agent rotates credentials or is retired, the audit trail still resolves to a named principal.

[Start your GSC ops queue in Dock.](/signup)

## FAQ

**Does Dock replace Google Search Console?**
No. GSC stays the system of record for impressions, clicks, position, indexing, and Core Web Vitals. Dock holds the agent's prioritized fixes, hypotheses, and the reviewer decisions on top of that data. Each Dock row points back to the GSC query or page via a stable pointer.

**How does the agent get current data from GSC?**
The agent calls the Search Console API on demand, typically the Search Analytics and URL Inspection endpoints. Dock caches the snapshot that was in front of the reviewer at decision time, then re-fetches live numbers when the row is reopened. ([Search Engine Land's GSC library](https://searchengineland.com/library/platforms/google/google-search-console) tracks API changes that affect this loop.)

**What stops the agent from shipping a bad title change?**
The `reviewer` column. Approved status is required before the agent applies a change to the site. Irreversible ops (canonicals, redirects, robots) require a second human key.

**Can two agents work the same GSC queue?**
Yes. Each row records the proposing agent and the reviewer. Multiple agents can open hypotheses against the same page; the queue serializes through the human approver. ([Google's Search Central blog](https://developers.google.com/search/blog) documents reporting changes you will want both agents to read on join.)
