Google Search Console in Claude and ChatGPT: why the numbers don’t add up

You ask Claude for a client’s top Search Console queries, and the clicks come to less than the site total. Don’t blame the assistant: it only sees what Google keeps, and Google leaves rare queries out. Here’s how to check a number before a client sees it, and how to connect Claude or ChatGPT to Search Console with SyncWith’s MCP server and a Google sign-in.

Four ways a Search Console answer comes up short

These four come from how Google stores and reports Search Console data, so switching assistants or MCP servers won’t fix them. You’ll feel them most when a client asks why your number doesn’t match the one they see.

  1. Query rows won’t add up to the total. Google says “Tables in the performance reports omit rare queries to protect user privacy,” so “the chart totals can be higher than the sum of table rows.” The API works the same way. It “does not guarantee to return all data rows but rather top ones,” and it “exposes a maximum of 50K rows of data per day per search type.” On large sites that limit hurts: the rarer queries past the top rows get cut off.
  2. The last few days aren’t done. Google says “collected data should be available in 2-3 days,” and “The newest data can be preliminary, meaning it’s still being collected and might change in the next few hours.” A “last 7 days” answer includes days Google hasn’t finished, so it can look like a drop that isn’t there.
  3. Page totals and site totals are counted differently. In Google’s words, “Data grouped by Queries, Countries, Devices, or Dates is aggregated by property,” while “Data grouped by Pages or Search appearance is aggregated by page.” So a number for a group of pages and a number for the whole site, over the same days, don’t have to match.
  4. Position is an average, not a rank. For the whole site, it’s “the average position of the topmost result from your entire site.” In a table row, it’s “the average position in Search results for the specific URL or grouping dimension shown in the table row.” “Position 3.4” doesn’t mean the client sits at number three.

Here’s what to check before a number goes in a client report:

What you askWhat the answer leaves outHow to check
“Top queries for last month”Rare queries, and on large sites everything past the top rows.Ask for the site total on its own, not a sum of query rows. In Search Console, compare it with the chart total for the same search type.
“Clicks for the last 7 days”The newest two or three days, which are missing or still changing.End the date range three days before today.
“Clicks for the client’s blog”Whether the client means some pages or the whole site. The two are counted differently.Ask which one the client means, then check Search Console grouped the same way.
“Where do we rank for our brand?”Whether it’s the site’s average position or one query’s.In Search Console, see whether the position is the chart’s (whole site) or one row’s.

And GA4 won’t match Search Console either

The client opens GA4, sees fewer organic sessions than your Search Console clicks, and asks which one is right. Both are. Google’s guide to the two tools says “Clicks and sessions are calculated differently,” and lists why they drift apart. Some pages may be missing the Analytics tag. Visitors who opt out of tracking “can skew Google Analytics data.” “You can choose your timezone in Google Analytics, but you can’t customize that in Search Console,” so the days don’t line up. And “Google Analytics automatically excludes traffic from known bots,” while “Search Console doesn’t necessarily filter them out.”

SyncWith’s MCP server reads GA4 too, so you can put both side by side in one chat. Just expect a gap, and tell the client why before they ask.

Sixteen months is all Google keeps

Google’s Analytics help says “Search Console keeps data for the last 16 months.” An assistant reading Search Console live can’t reach past that. Ask today how this October compares with October 2024, and there’s nothing to compare against. Google has already dropped those months.

So we tell agencies to keep their own copy. Our Search Console to Google Sheets integration pulls the data into a sheet on a schedule. Set the report to append new rows instead of replacing them, and the sheet keeps months after Google lets them go.

Your assistant can read that sheet through SyncWith’s MCP server, so the two-years-ago question gets answered from your copy when Search Console has nothing left.

What connecting asks of you and your client

The open-source mcp-gsc server on GitHub “runs locally on your machine” and gives you two ways in:

  • Sign in with your own Google Cloud project. You create or select a project in Google Cloud Console, turn on the Search Console API and set up an OAuth consent screen.
  • Use a service account. The client adds the service account’s email to their property under Settings, then Users and permissions, with Full access. That’s a lot to ask a client for a reporting question.

mcp-gsc’s delete tools are off by default, but sitemap submission isn’t. Check what it can do before you point it at a client’s site. And if you’re waiting for Google’s own server, Search Console isn’t on Google’s list of remote MCP servers for its products, last updated October 26, 2026.

With SyncWith, you sign in with the Google account that already sees the client’s property in Search Console. You don’t create a Cloud project, the client doesn’t add anything, and there’s nothing to install. And it only reads. Nothing in it writes to your sheets, sources or databases.

Connect it in three steps

  1. Add the server to your assistant. Paste this URL into Claude or ChatGPT as a custom connector:

    https://mcp.syncwith.com/mcp

    Which plans can add a custom connector depends on the assistant. Our steps for Claude and ChatGPT cover it.

  2. Sign in with Google. You don’t need a SyncWith account to start. We create a free one for you.
  3. Ask it to connect Search Console. It replies with a sign-in link. Sign in with the Google account that sees your client’s property, then come back to the chat.

Then try it. Start each question with “Using SyncWith,” so the assistant doesn’t answer from another app you’ve connected:

  • “Using SyncWith, list my Search Console properties.” If the client’s property comes back, you’re set, and you have its exact name for every question after this one.
  • “Using SyncWith, list the Search Console fields you can query.” Now you know what you can ask for before you ask.
  • “Using SyncWith, show clicks, impressions and position by query for [client property] over the 28 days ending three days ago.” Your first real question, with Google’s unfinished days left out.

There’s no separate charge for the MCP server today. Each live query uses one refresh from your SyncWith plan, and the free Hobby plan includes 35 refreshes a month. Listing fields and reading reports, your history sheet included, don’t use any.

For a client report that updates itself, start with the Search Console to Google Sheets integration. For tools, data and plans, see the SyncWith MCP docs.