Rebuilding client reporting for an age of signal loss
Signal loss is making marketing data harder to trust. Here’s how we rebuilt our client reporting to read several sources together.
Our clients want more proof than ever that their marketing is working. The data they need to prove it is getting harder to trust. That's the tension behind this quarter's edition, Signal Loss: consent banners hide visitors from analytics, AI answers questions before anyone clicks, and bots inflate the numbers that are left.
As Paul put it in Welcome to the big signal loss, the evidence is getting thinner while the demand for it stays the same.
So we've rebuilt how we report to clients. In Making monthly reports smarter, not just faster, Mayna explained the foundation: Apps Script pulling every source into one Google Sheet, so the monthly copy-and-paste disappears. This is the next chapter. It covers what we build on top of that Sheet, how we decide what goes in it, and why putting several imperfect sources side by side is our best answer to signal loss.
Reporting starts with a conversation, not a data feed
The temptation with any dashboard is to open the tools, pull as much data as you can find and work out the story later. We do the opposite. Every report we build starts with a conversation about what the client needs to decide each month.
That conversation shapes the tabs. One client's focus is on organic search and AI visibility, so Search and AI search sit near the front. Another runs a busy email campaign schedule and a growing Instagram account, so those get their own space. A third cares most about whether paid LinkedIn activity is reaching the right audience. We'll often start from the dashboard or report they already have, list every metric on it, and then talk through what to keep, what to drop and what's missing.
We agree the structure before anything is built:
An Overview first, with a headline, the handful of KPIs that matter most and progress against their goals
One tab per channel, each with a short "what changed this month" summary at the top
A Notes tab at the end that explains where every number comes from and any known quirks in the data
This is where most of the value is. A report shaped with the client gets read. One shaped around whatever the tools export gets skimmed. It also surfaces problems early. Walking through an old dashboard page by page has more than once turned up stale date ranges or figures that were quietly being double-counted, which is signal loss of a different kind.
Then the plumbing: one Sheet, many sources
Once the structure is agreed, the work turns technical. No two clients use the same stack, so there's no single template to drop in. What stays the same is the approach Mayna described: a Google Sheet as the data layer, fed by Google Apps Script.
For each platform the client uses, we set up a script that calls that platform's API and writes the month's figures into its own tab. Depending on the client, that might include:
Google Search Console and Bing Webmaster Tools for website clicks, impressions, search queries and landing pages
GA4 or Plausible for website traffic, channels and key events, depending on which analytics the client runs
Instagram, through Meta's Graph API, for reach, followers and post performance
Mailchimp for email campaigns, open and click rates, and audience growth
SEOmonitor and Ahrefs for search visibility, authority and competitor benchmarks
Each script runs on a monthly trigger, so by the first week of the month the Sheet is up to date without anyone copying and pasting. A Config tab lets us switch sources on or off per client, so adding Mailchimp for one client doesn't mean rebuilding anything for another.
The range of sources matters more than it used to. When GA4 only sees visitors who accept cookies, one dashboard can't tell you the whole story. Put GA4 next to Search Console and Ahrefs, and you can tell a tracking gap from a real drop in demand. That's the data triangulation Russell wrote about, built into the report itself.
And the bits that won't automate
Not every platform plays nicely. LinkedIn is the obvious example: there's no straightforward API for company page analytics or Campaign Manager data that suits a reporting setup like ours, so those figures still come from manual exports. Bing Webmaster Tools' newer AI citation data is another we export by hand for now.
The trick is to make the manual step small and predictable. Each month there's a short checklist of exports, named consistently and dropped into the same place, and the report knows what to look for. If something's missing, it says so rather than quietly showing a gap.
Good reporting isn't about automating everything. It's about being clear on where each number comes from, and honest when a source has a quirk. In a world of signal loss, that honesty is part of the product. Every report has a Notes tab that spells out the caveats: GA4 only counting consenting visitors, Apple inflating email open rates, LinkedIn using a rolling 90-day window. A client who knows what a number can and can't tell them makes better decisions with it.
What the client actually sees
The end result is a single link per client that updates itself each month. It's branded, works on a phone or tablet, and has a month picker, so clients can step back through the last 13 months. Every KPI shows the change on last month and last year, and each tab opens with a summary of what moved and why.
We use Claude to help build and refresh the reports. It reads the Sheet, pulls the live sources, rebuilds each tab and drafts the commentary from the real numbers, which our team then checks. That takes the mechanical work out of the monthly reporting process and gives us more time for the part clients value most: the interpretation and the "so what".
The Overview does the heavy lifting. It leads with a headline, then wins and watch-outs, then a simple status for each channel: on track, watch, or action needed. A busy marketing director or manager can read it in two minutes and know where to look next.
We've built a demo version with sample data, so you can click around and see how it works. View the demo report
What we've learned
A few things have stuck with us since rebuilding the process:
Reporting is a relationship, not a deliverable. The structure conversation at the start does more for trust than any chart.
Every client's stack is different, and that's fine. A flexible setup beats a rigid template that only fits one kind of business.
Be honest about the data. Clients respect a report that says "this number has a caveat" far more than one that looks polished and hides it.
No single source tells the whole story. Reading sources together is how you separate a tracking gap from a real change in performance.
Signal loss isn't going away. Consent rules, privacy-first browsers and AI search will keep thinning the data. Reporting that's honest about its limits, and reads several sources together, is how we keep giving clients evidence they can act on.
If you're rethinking how you report on your marketing performance, or you're curious about the setup behind it, get in touch.