Grain.

Content reporting for communications teams

Your traffic report is wrong. Here is where.

Power BI reporting built on GA4, Search Console and crawl data, with the counting bugs already found and fixed. See what yours is doing first — drop in an export and read the damage, or watch a live demo correct itself.

Built by Will Alston · Alston Analytics LLC, Washington DC · independent work, no client data.

Sessions · last 30 daysreported
1,847,392
 
Cause: sessions joined to a page-section table before aggregation. Every session counted once per section it touched.
Effect: a 1.567× inflation, stable enough month to month that nobody questioned it.
Found: week six.

Three things that go wrong, and stay wrong for years

These are not exotic. They are the default outcome of connecting GA4 to a dashboard without a model in between. They are quiet because the numbers still look plausible.

Counting

Sessions inflate at the join

Traffic gets joined to a page or section table at a finer grain than it was measured at. Totals rise by a fixed multiple. Trends still look right, so the error survives every review.

Volume

One page becomes ten thousand rows

Query strings, tracking parameters and case differences split a single page into thousands of URLs. The dataset balloons, refreshes crawl, and per-page numbers scatter across near-duplicate rows.

Trust

Two people, two answers

Someone exports to Excel and fixes it by hand. Now there are two versions of last quarter and no way to say which is right. This is what actually kills a reporting program.

See it · no upload · one toggle

The same month, counted two ways

A demo content report on synthetic data with the three bugs baked in. Flip the switch and watch the numbers correct themselves. Then run it on your own export →

Content performance · Julysynthetic demo data
Sessions by section (thousands)
Top page
Want the corrected model on your data?

The $400 Count Audit finds which of these are live in your numbers, and by how much. Or take the one-page counting-bugs cheatsheet.

Check your data
Thanks — here's the cheatsheet: Open it →

Three ways in

Start free. Pay $400 to find out precisely what is miscounted and by how much. Only commit to the pilot once you have seen the work — the audit fee credits against it.

Count Check

Free
runs in your browser
  • Upload a GA4 or Search Console export
  • Automated scan for row explosion and URL fragmentation
  • Zero-traffic pages and a banded verdict, in about a minute
  • Your file never leaves your machine — no upload, no account
  • The same first look the paid audit starts from
Run the Count Check

Count Audit

$400
one week · read-only
  • I verify your live reporting against GA4, by hand
  • A written finding: what is miscounted, and by how much
  • Read-only access only — clears a security review easily
  • No implementation, no commitment beyond the week
  • Credited in full against a pilot if you go ahead
Book the audit

Pilot

$1,500
fixed fee · then $6,000 · 3 seats
  • Everything in the audit, then the fix
  • A corrected Power BI model built on your data
  • Written documentation, so you are not tied to me
  • One 60-minute working session with your team
  • Two weeks, fixed scope, half up front
Ask about a pilot

$1,500 is an introductory rate, capped at the first three clients, then $6,000. The audit fee comes off the pilot, so the free check and the $400 audit are the only decisions you make before seeing real work on your own numbers.

Whether this fits

Built for

  • Communications and digital teams reporting on a large content site
  • Government, health and nonprofit sites with thousands of pages
  • Teams already in Power BI, or moving there from spreadsheets
  • Anyone who has quietly wondered whether the traffic number is real

Not built for

  • Ecommerce and revenue attribution
  • Sites under a few hundred pages, where a spreadsheet is genuinely fine
  • Teams standardized on Tableau or Looker
  • Anyone wanting a live dashboard with no data model underneath