I run four blogs and an official site. Checking on them used to mean opening GA4, then AdSense, then Search Console, then the affiliate dashboards, every morning.
Every one of those screens shows you numbers. None of them tells you what to do next. You finish the circuit knowing yesterday’s pageviews and still not knowing which article to fix.
Originally published in Japanese on May 21, 2026. This English version was written in September 2026.
So the numbers now land in a Google Sheet, and at 8am Codex reads it and reports what happened yesterday. The output I want is not a traffic summary. It is: what should I look at, which article should I edit, which path should I develop — or should I leave it alone today. That last one turned out to be the most valuable thing the setup produces.
Touring dashboards does not get you to a decision
I had the habit of looking. Yesterday’s pageviews, users, ad revenue, search clicks, conversions — all visible, each in its own place.
And then I would stall. Which article do I revise? Which site deserves the time? Is the revenue path working? Has the redesign had an effect?
Answering any of those means putting the numbers side by side. GA4 alone will not tell you. AdSense alone will not tell you. Touring the dashboards separately produces the sensation of monitoring without the substance of it — and it is tiring.
The tiredness matters more than it sounds. Running a business alone, the time to look at numbers, write articles, and build things all comes out of the same budget. Making the looking cheaper was the actual goal.
Google APIs into a spreadsheet
This did not start as a BI project. It started as an Apps Script that pulled AdSense and GA4 numbers and emailed them to me. From there, the daily figures started being written to a Sheet instead of only being mailed.
What is in there now:
- GA4 users, views, and per-site trend
- AdSense daily earnings and month-to-date
- Search Console clicks, impressions, and queries
- GA4 click events
- Affiliate earnings — recorded and approved — from the Japanese networks I use
- Traffic from AI services. GA4 now has a dedicated AI Assistant default channel: a recognized AI referrer gets
medium = ai-assistant, and Google’s own AI Overviews and AI Mode are explicitly excluded. Google’s two pages name different examples — the channel definition lists ChatGPT, Gemini, Deepseek, Copilot and Grok, while the release note announcing the channel names ChatGPT, Gemini and Claude — so treat the published lists as illustrative and check your own source/medium for whichever service you care about - A log of what I changed: redesigns, new posts, rewrites, CTA edits
That last row is the one people skip, and it is what turns a metrics table into something you can reason about. A number without a record of what you did to cause it is just weather.
It is not fully automated, and I stopped trying to make it so. Some affiliate data still comes in by CSV. Search Console lags. Some click events are capturable and some are not. Collecting enough to decide with turned out to beat collecting everything.
The morning report
Collecting numbers only gets you a spreadsheet, and a spreadsheet is another thing you have to go and open. So at 8am Codex reads it and summarizes the previous day.
Not a list. The questions I want addressed:
- What happened yesterday, overall
- Which site moved
- Did anything change in the revenue path
- Is demand showing up in the search queries
- Was there traffic from AI services
- Does this change relate to something I did
- Should I touch anything today, or wait
Pageviews being up means different things depending on whether it is a spike, the start of search demand, or the effect of an update. Pageviews being down might be Search Console not having caught up, or affiliate data not yet imported. Read raw, numbers are misleading. So the AI’s job is to surface the questions worth asking, not to arrange the figures more attractively.
Threads do work; documents hold decisions
The other half of this is how Codex itself is organized. Everything used to go into one thread. Now it does not.
Separate threads for writing, implementation, QA, reviewing the business numbers, and reading the morning report. Context goes into documents instead: each site’s redesign date, each site’s role, how to read the dashboard, Search Console’s delay, the state of affiliate imports, how to handle the GA4 measurement gap on one of the sites, and what the 7-, 14-, and 28-day windows are each for.
Threads are where work happens. Documents are where decisions live. Codex gets the relevant document and the relevant numbers, so it reasons from the current source of truth rather than half-remembering a conversation.
Reading a redesign at 7, 14, and 28 days
In May 2026 I redesigned four blogs in sequence, a few days apart each. Results do not show up the next morning: search moves late, clicks are noisy day to day, and revenue takes longer still.
So each redesign gets read at three checkpoints, with a different question at each:
| Window | Purpose | What I look for |
|---|---|---|
| 7 days | Anomaly detection | Has measurement stopped? Is anything visually broken? Are click paths completely dead? |
| 14 days | Early tendency | Which articles are being read? Have search queries shifted? Is the new path being used at all? |
| 28 days | Initial evaluation | Search, internal navigation, revenue path, AI referrals — and where the time goes next |
The point of the 7-day window is not to evaluate anything. It is to catch the case where you are about to spend three weeks interpreting broken data.
Each site also gets read against its own role. On the product review site: search demand and affiliate clicks. On the outdoor site: article performance, product clicks, and referrals through to the official site. On the travel site: the travel and food series, search traffic, and internal navigation. Here on the tech blog: how the AI, Apps Script, WordPress, and working-environment posts get read. Identical pageview counts mean different things on different sites.
The most useful thing it caught was a broken tag
After this site’s redesign, users and pageviews came back absurdly low. Straight after a redesign, that is a frightening number.
The important move was not concluding “nobody is reading it.” It was suspecting measurement first. And that was correct: the GA4 tag was missing from the production HTML, because the custom template I had built did not route through the theme’s standard analytics output.
Nothing about this was visible from the outside. Layout was fine. Social previews were fine. Posts published normally. GA4 was simply recording nothing.
Having the AI say “this is a measurement check, not a performance result” before I started interpreting was worth the whole setup. Watching numbers is not only about noticing growth and decline. It is about noticing measurement failures, broken paths, and days that must not be compared with each other.
Search queries and clicks point at the next edit
I treat Search Console less as a click counter and more as a demand signal. What words are people searching. Which articles are being shown. Are they being clicked. Is there a theme where impressions are climbing but clicks have not started yet — because that last one is usually the next article to revise.
Affiliate clicks read the same way. Clicks concentrating on review articles. Product links being followed from how-to articles. Clicks arriving but conversions weak. Referrals to the official site starting to appear.
From those signals the next action follows: write something new, add a comparison piece, add internal links, revisit the product links, or tidy a service path.
And having the numbers makes it easier to choose not to act. Leave it today. Wait a bit. Look after Search Console catches up. Deciding to do nothing, with a reason, is a real decision, and it is much harder to make from a vague feeling.
AI referrals as an observable LLMO metric
I also watch traffic arriving from ChatGPT, Perplexity, Claude, Gemini, and Copilot.
Be clear about what this is not: it does not tell you how often you were cited inside an AI answer. Someone has to actually click through. But if a link from an AI service produces a visit, you know at minimum that some article is being found through that channel.
Pages with AI referrals then get read alongside their search queries and content. Is it grounded in actual experience? Does it answer the reader’s question? Is it structured so a specific answer can be lifted out of it? Can the reader continue somewhere via internal links? Is there room to connect it to a product or service path?
“LLMO” as a term is vague. Daily AI referral traffic is at least a thing you can observe. For now that is enough.
The AI supplies the questions, not the answers
Nothing here delegates the decision. Which article to write, which path to fix, which number to weight, whether to do nothing today — mine.
What changed is the work that happens before deciding. Is this worth touching now, or is waiting fine? Which site takes priority? Which article is the improvement candidate? Which figures should be read as delayed rather than as low? Getting that framing delivered every morning is the difference.
The AI is not going to grow the business on its own. But compared with holding all of it in my own head, it is far easier to see the whole thing at once — and running a one-person business feels a little less like doing it alone.
The dashboard exists to decide with, not to look at
GA4, AdSense, Search Console, affiliate data, clicks, AI referrals — individually, each is just a number. Connected to a record of what you changed and to article-level improvements, they become material for the next move.
It is not finished. Affiliate imports need work. The weekly and monthly views need sharpening. AI referrals and Search Console both need longer observation before I trust my reading of them.
But compared with touring five dashboards every morning, it is much clearer what to look at next. What I am building with an AI team is not article volume. It is a way of seeing the business — and the dashboard is the instrument for it.
References
The collection side of this is ordinary API work. These are the endpoints the spreadsheet is filled from.
- properties.runReport | Google Analytics Data API v1beta
- accounts.reports.generate | AdSense Management API v2
- searchanalytics.query | Search Console API — queries, impressions, and clicks
- Default channel group | Analytics Help — the AI Assistant channel, and how AI sources are attributed