Your monthly report got a solid update this month. Rather than list it like a release note, here is what changed and why it matters — including a comparison we had quietly wrong for longer than I would like.
The thread running through nearly all of it is one idea: the hardest job a report has is not showing you numbers. It is being straight with you about the numbers it has not got.
Every figure in a marketing report has an edge somewhere. A period that had not finished. A source still catching up. A sample that covers less than it looks like it does. Most reporting tools print the number and move on, and you have no way to tell a solid figure from a shaky one — so you trust all of it the same, until one turns out to be wrong, and then you trust none of it.
Where your traffic actually came from
Here is one almost nobody points at. The session count on your report is not your local session count.
Run the city breakdown on just about any small-business account and a real slice of it is arriving from places your business could not serve if it wanted to — often from cities that are mostly data centres rather than people.
Nobody hides this. The overview counts every session, the city table is eight rows your eye slides straight past, and that is that. Your report now splits home-market traffic from everywhere else and names where the rest came from.
Three things it deliberately will not do. It never calls anything a bot — a data centre is where automated traffic usually comes from, but usually is not certainly, a real customer can be sitting in Virginia, and if I told you your traffic was fake you would believe me. It will not re-state your other numbers as though the overseas traffic were gone, because your bounce rate and conversion rate would each need their own filtered query to be honest at that scope, and working them out from a ratio would be making numbers up. And it tells you where to look instead: if you are worried about scanning or attack traffic, Analytics genuinely cannot help, because it only counts a visit that ran its tracking script and a scanner making plain requests never does. That question gets answered from your server log, and the report says so.
The work you do not see
The month your numbers go sideways is the month you most want to know what we actually did. There is now a Work performed section that says so plainly.
Alongside it sits a standing note for the work that happens every single period and never makes it into a log: security updates, patching, keeping the thing current. That work is invisible precisely because nothing went wrong — which is the worst possible reason for you not to know it is happening.
Sites get probed constantly. Not by people who have singled you out, just by automated scanners working through every site they can reach. The updates are what keeps that uneventful. If you are on a care plan or a marketing retainer, that is a large part of what it is buying, and now it shows up in writing instead of being something I would mention if you asked. What managed hosting and care covers →
One rule shapes that whole section: the AI may never write it. Everything else in your report comes from something a machine measured. This is a claim about human work, and an invented-but-plausible task could end up on an invoice. It can quote what we wrote and is flatly barred from adding to it, inferring work from your numbers moving, or dressing it up.
Paid social that arrives with nothing attached
Paid social has always been one row in a channel table. Conversions have always been a number elsewhere on the page. The two never met.
Now they sit together, and the result is uncomfortable in a useful way. When paid social sends real traffic and nothing is recorded against it, the report says so — and says it is one of two things. Either the campaigns are not producing enquiries, or nothing is set up to record the enquiries they produce.
Those need opposite responses, and the data honestly cannot tell them apart. So it names both and judges neither. The AI writing your summary is specifically barred from telling you to cut or pause campaigns on this basis. The one safe recommendation is to check the tracking first, and that is what it says.
A few more
Multi-location businesses get one view of the whole network. The network total only appears when the locations’ reporting periods actually line up — otherwise it says why and shows each location on its own, because adding May to October gives you a total that spans five months and looks like one.
Brand versus non-brand search splits the people who searched your business name from the people who found you some other way. Where Google reports too few of the period’s clicks to mean anything, the split is withheld entirely rather than drawn confidently over a twelfth of the data. Why average position misleads you →
Goals now work across Analytics, Search Console and Google Ads, and each one shows your own run rate from previous reports — so a target set far above anything the site has ever done gets flagged as worth revisiting instead of reading as permanent failure.
Spreadsheet export gives you any report’s tables as CSV, plus a notes file carrying every caveat the report stated. A figure lifted into a spreadsheet otherwise loses the sentence that qualified it, which is how a hedged number becomes a confident one on somebody’s slide.
And the thing we had wrong
Your report has been fetching last year’s figures for ten metrics and only actually comparing four of them. So for a while, most of your metrics showed no year-on-year change — not because there was not one, but because the report was reading the wrong field. That is fixed, and every metric that has a comparison now carries both a previous-period and a year-on-year change.
Related, and worth knowing because it changes how you read things: rates now move in percentage points. "Bounce rate up 15%" could mean 40% became 46%, or that 40% became 55%. Those are very different months and you would reasonably assume the worse one. "Up 6.2 points, 40.1% to 46.3%" cannot be misread.
I would rather tell you about that than quietly fix it.
For the agencies
If you are reselling reports under your own brand: section layout is now yours to control, per client, and there is a read-only MCP server so you can query your own reporting data from Claude with an API key. Every tool hands back the fact table — including the list of things the data does not support — so an assistant working with your numbers inherits the same limits the report does. If a Claude-side dashboard over your client data would be useful, tell me what you would want from it. White-label versus reselling →
None of this makes your report longer. Most of it makes it shorter, because a figure we cannot stand behind is now simply absent with a line saying why. That turns out to be the part people notice.
Want the invisible half — the patching and updates — handled for you?
Managed hosting and care →