HARNESS: ANALYTICS READ

How did buyers find you this quarter?

The board asks whether marketing is working. Part of the answer sits in two Google tools, Analytics and Search Console. This page shows the answer a read-only agent would prepare from them, tied to the letters of FOUND and DRONICS, with every gap shown as a gap.

Sketch of visits by channel · shape only, no figures
  • Search and AI answers
  • Paid and email
  • Partners and reviews
  • No clear letter

DemonstrationThe read-only rules, the audit log, the Google Analytics 4 and Search Console request builders and mappers, the channel-to-letter rules and the analytics story calculator are written and tested in this repository. They run here only on example data for a company that does not exist. Not connected to Google.

Not built yetNot built. There is no sign-in, no MCP client and no API call to either system, and it has never run against a real account. Google has not reviewed, approved or partnered with us.

What changes for the CMO

What marketing used to do

Someone exports channel reports from Google Analytics and search terms from Search Console, then joins them in a spreadsheet. Each month the rules change a little. Searches for your own name are counted as if search brought new buyers, and the board hears a number nobody can trace.

What changes with agents

An agent can read both tools every week with the same written rules. The rules are agreed once, before anyone sees the result. Visits are tied to a letter only where the rule is clear, and searches for your name are kept apart from the rest. A gap stays a gap, with its reason.

What the agent will do

  • Read visits and key events by channel from Google Analytics, and clicks by search term from Search Console, with read-only permission.
  • Tie each channel to a letter of FOUND and DRONICS, in code, the same way every time.
  • List the searches where you appear but sit below the top three results, as a brief for the Findable and Owned content agents.
  • Never change a setting, tag a page or send anything. The CMO decides what goes to the board.

THE EXAMPLE STORY

Example Company, 1 July to 30 September 2026

Example data, not a real company. Example Company is the same made-up software firm in Pune as on the CRM page. It sells payroll and attendance software. Every website named below ends in “.example”, so none is a real site.

  • Google’s own total is 27,690 visits; 420 of them sit in rows we set aside and are not counted.
  • The search terms below account for 68% of the site’s clicks from Google Search. Google keeps some searches private and may drop rows when grouping by search term, so the rest cannot be split.
Visits counted
27,270
Key events
388
Visits tied to a letter
74%
Visits from AI assistants
840

What the CMO could say to the board

  • 27,270 visits reached the site in the period, and 388 key events were recorded.
  • 41% of visits and 46% of key events came through Findable (FOUND-F): buyers who found us in search or in an AI answer. 840 of those visits came from AI assistants.
  • The next largest was Digital demand (DRONICS-D), with 26% of visits and 25% of key events.
  • 26% of visits have no clear letter, mostly direct visits and links from sites not on our agreed list. We show them as they are rather than guess.
  • In Google Search, 43% of clicks came from people who did not type our name. For 5 searches seen often, we sit below the top three results; they are the first list for Owned content.

A key event is an action the company marks as key in Google Analytics, such as a demo request or a contact form. Each company sets its own.

By letter of FOUND and DRONICS (Example data, not a real company.)
LetterVisitsShare of visitsKey eventsChannels counted
FOUND-F: Findable11,24041%179AI Assistant, Organic Search
FOUND-O: Opinions5402%14Referral: reviews-site.example (review site)
FOUND-N: Nods3801%3Referral: news-site.example (press or analyst)
DRONICS-D: Digital demand7,22026%96Email, Paid Search, Paid Social
DRONICS-R: Referrals and resellers4202%16Referral: partner-one.example (partner)
DRONICS-N: Networks and alliances1901%7Referral: cloud-marketplace.example (marketplace)
DRONICS-C: Community1501%2Referral: hr-community.example (community)

Seven of the twelve letters can show up in analytics, and four of those only through sites the CMO has listed. The others, such as Underdog Moves or Sales enablement, shape visits that arrive under other channels. They are measured in other ways.

By channel, as Google Analytics records it

Google sorts every visit into a channel group by its own published rules. We tie a channel to a letter only where the rule is clear. Where it is not, the row says why and has no letter.

By channel (Example data, not a real company.)
ChannelLetterVisitsKey eventsWhy this letter
Organic SearchFOUND-F10,400154The buyer found you through search. Google counts its AI Overviews and AI Mode here too. That is the Findable letter.
DirectNone5,18061Someone typed your address or used a saved link. Why they knew it is not recorded.
Paid SearchDRONICS-D3,86058Paid media brought the visit: Digital demand.
Paid SocialDRONICS-D2,24021Paid media brought the visit: Digital demand.
Organic SocialNone1,3509Could be your own posts, an influencer or a community. No single letter is clear.
EmailDRONICS-D1,12017A link in an email brought the visit. Email campaigns sit in Digital demand.
AI AssistantFOUND-F84025An AI assistant such as ChatGPT or Gemini named you and linked to you. Being in the answer is the Findable letter.
Referral: reviews-site.example (review site)FOUND-O54014A review site sent the buyer: Opinions.
Referral: partner-one.example (partner)DRONICS-R42016A referral partner or reseller sent the buyer: Referrals and resellers.
Referral: news-site.example (press or analyst)FOUND-N3803Press or an analyst sent the buyer: Nods.
Referral, other sitesNone3101A link on another website. It may be press, a review site or a partner, so only sites on the list the CMO agreed get a letter.
UnassignedNone2900Google could not match any channel rule. This is usually a tagging gap worth fixing.
Referral: cloud-marketplace.example (marketplace)DRONICS-N1907A cloud or software marketplace sent the buyer: Networks and alliances.
Referral: hr-community.example (community)DRONICS-C1502A community forum or member site sent the buyer: Community.

Two notes. Google counts visits from its own AI Overviews and AI Mode as Organic Search, not as AI Assistant, so the AI assistant figure covers tools such as ChatGPT and Gemini only. And a referral gets a letter only when the CMO has put that site on the agreed list: a review site for Opinions, press or an analyst for Nods, a partner for Referrals and resellers, a marketplace for Networks and alliances, a community for Community.

FINDABLE, FROM SEARCH CONSOLE

What buyers typed in Google Search

Searches for your own name show that people already know you. Searches without it show whether new buyers can find you. The harness keeps the two apart, using the names the CMO gives it.

Clicks from Google Search
8,940
Clicks from searches without your name
43%
Clicks the search terms account for
68%
Searches below the top three
5
Seen often, sitting below the top three results (Example data, not a real company.)
Search termTimes seenClicksClick rateAverage position
payroll software india38,2006101.6%7.4
attendance management system21,5004202.0%5.8
how to calculate pf and esi17,6003401.9%11.8
leave management software12,8002602.0%9.1
payroll compliance checklist9,4003804.0%4.2

This list is the brief for two agents. The Findable agent checks whether AI answers name the company for the same questions. The Owned content agent drafts a clearer answer page for each. A person approves and publishes. Nothing here says a page will move up; search results are Google’s to decide.

Search Console reads dates in Pacific Time, about twelve and a half hours behind India, so its quarter starts and ends a little later than the one in Google Analytics. Google also keeps some searches private, which is why the search terms do not add up to the site’s total.

Set aside, with the reason

These rows were not counted. Each needs a person to check it in the Google tool. The agent does not fix or estimate it.

Not counted (Example data, not a real company.)
RowToolReason
row-17Google AnalyticsA value for "Paid Search" is not a usable number. Not counted; we do not estimate it.
row-18Google Analytics"Email" shows more engaged sessions (180) than sessions (120). A person must check the report.
row-19Google AnalyticsThe row does not have one value for each column, so it cannot be read safely.
row-12Search Console"payroll outsourcing pune" shows more clicks (90) than impressions (60). A person must check it.
row-14Search Console"salary slip format" has a click-through rate of 1.4; Google's range is 0 to 1.
row-15Search ConsoleThe row's keys do not match the 1 dimensions asked for, so it cannot be traced.

What the agent was allowed to do

Every request goes through a permission check written in code, and every request is recorded, allowed or not. The record cannot be edited. In this example we added 3 requests that the rules must refuse, so you can see them refused.

Record of requests (Example data, not a real company.)
When (IST)WhoAsked forResult
1 October 2026, 10:00Reader agentgoogle-analytics:read:reportsAllowed
1 October 2026, 10:01Reader agentsearch-console:read:search-analyticsAllowed
1 October 2026, 10:02Reader agentsearch-console:read:search-analyticsAllowed
1 October 2026, 10:03Reader agentsearch-console:write:sitemapsRefused: Write is never granted to a read harness. A person makes changes in their own tool.
1 October 2026, 10:04Reader agentgoogle-analytics:read:user-dataRefused: "google-analytics:read:user-data" was not granted. Granted: google-analytics:read:reports.
1 October 2026, 10:05Reader agenthubspot:read:dealsRefused: Google Analytics 4 (read only) cannot be used to reach hubspot.
For your analytics team: the exact requests

The bodies the harness would send, built in code with Google’s own field names. They have not been sent to Google.

Google Analytics Data API, runReport:

{
  "dateRanges": [
    {
      "startDate": "2026-07-01",
      "endDate": "2026-09-30"
    }
  ],
  "dimensions": [
    {
      "name": "sessionDefaultChannelGroup"
    },
    {
      "name": "sessionSource"
    }
  ],
  "metrics": [
    {
      "name": "sessions"
    },
    {
      "name": "engagedSessions"
    },
    {
      "name": "keyEvents"
    }
  ],
  "metricAggregations": [
    "TOTAL"
  ],
  "orderBys": [
    {
      "metric": {
        "metricName": "sessions"
      },
      "desc": true
    }
  ],
  "limit": "10000"
}

Search Console API, searchAnalytics.query, site total and by search term:

{
  "startDate": "2026-07-01",
  "endDate": "2026-09-30",
  "dimensions": [],
  "type": "web",
  "rowLimit": 25000,
  "startRow": 0,
  "dataState": "final"
}
{
  "startDate": "2026-07-01",
  "endDate": "2026-09-30",
  "dimensions": [
    "query"
  ],
  "type": "web",
  "rowLimit": 25000,
  "startRow": 0,
  "dataState": "final"
}

What is built, and what is not

Built in this repository, tested on example data

The read-only permission rules, the record of requests, the request builders and the mapping of Google Analytics and Search Console responses, the channel-to-letter rules and the calculator behind this page. The field names come from Google’s own developer pages, which we read on 20 October 2026.

Not built yet

No live connection to Google Analytics or Search Console, no sign-in and no approval queue. It has never read a real company’s data. Google has not reviewed, approved or partnered with Foundronics; the names describe the tools a marketer is likely to use. Which sites count as a review site, a partner or a marketplace is agreed with each CMO before the first run.

Answer “is marketing working?” with a story you can trace.

The analytics harness is not built yet. Start with the free FOUND Score, or talk to us about your own systems.