Skip to content
New storyWe built Skald to count visitors. It caught an AI-key thief.
SkaldEvery visit, truly told.

Features · counted twice

Analytics data accuracy: every figure counted twice

Analytics data accuracy you do not have to take on trust. A second, independent count checks every figure from the raw log, and a day the two counts disagree on is withheld.

Analytics data accuracy is whether the figures a tool shows match what really happened. Skald checks it the hard way: a separate audit, with its own parser and rules, recounts every figure from the raw log, and the five groups must add up to the log. Part of Skald features.

30-day free trial · no card · we set it up within one working day · free to self-host

two roads · sample · one weekmain · audit
  1. Mon 19 Oct 1,812 · 1,812published
  2. Tue 20 Oct 1,904 · 1,904published
  3. Wed 21 Oct 1,766 · 1,771withheld
  4. Thu 22 Oct 1,848 · 1,848published
  5. Funnel, before it was saved - · -not recorded: blank, never 0

Sample counts. Three days published, one withheld, one figure not recorded.

Sample ledger · requests counted by two roads
DayMain countAudit countVerdict
Mon 19 Oct1,8121,812published
Tue 20 Oct1,9041,904published
Wed 21 Oct1,7661,771withheld
Thu 22 Oct1,8481,848published

[01] two roads

Two independent counts of every figure

The main count and the audit each read the raw log with their own parser and rules. They share only the lists of names, never the code, so one bug cannot make both wrong the same way.

Every new figure gets its second road before it ships: visits, AI fetches, AI answers, crawl health, retention, funnels, leads, Search Console, security. All Skald features

[02] what a day can be

Whole, partial, withheld or not collected

Every day in Skald has one of four states, and the page says how many of each a period holds. Only whole days go into totals. Pick a state.

pick a state

Whole: in every total

Both counts agree, and the log covers the whole day, midnight to midnight in the site's own time zone.

Tue 20 Oct · main 1,904 · audit 1,904 → whole · published

[03] blank, never zero

Not recorded stays blank, never zero

Zero means Skald counted and found nothing. Blank means it does not know. Mixing the two is how dashboards lie, so Skald never does.

A figure not recorded is null in the API and the MCP server, shown as a dash on screen. A country the log did not carry says Not recorded. Something never set up says Not set up, with one line on how.

what you see · samplenever 0
  1. Country · Not recordedthe log had none
  2. Page speed · Not set upnever tested
  3. Events · Not set upthe tag never sent one
  4. Funnel, days before it was saved · Not recordednever 0
  5. Conversions, before they were recorded · Not recordednever 0

[04] it must add up

The five groups must add up to the log

Skald began with a report that was right in its plumbing and wrong in its arithmetic: three visitor groups summing to 51,763 under a stated total of 55,539. One subtraction would have caught it. Now nothing is reported until the sums reconcile.

  1. The groups partition the log

    Every request lands in exactly one of five groups, and the five sum to the log's lines.

  2. Checked before it goes

    A report whose categories do not reconcile is not written. A mail that would include a withheld or partial day is held back.

  3. A check you can run

    skald check counts yesterday again and says whether every category reconciles.

  4. Unsampled

    Every line of the log is counted. Nothing is sampled.

[05] is the log whole?

Data quality: is the log itself whole?

Two counts agreeing proves the arithmetic. It cannot prove the log they read was whole. Site › Data quality shows what can be seen of that, per day and for today so far.

  • lines read
  • unreadable lines
  • duplicate lines
  • silent stretches
  • the audit's verdict
  • the newest line against the server clock
  • when each job last ran

Above the days, the reasons a day is Worth a look or Not trusted are listed, each with how many days it covers. A stretch with no log line counts only when it is long for your site: an hour at least, and longer on a quiet site, where a night's lull is normal.

[06] honest everywhere

The same rule on every screen, mail and alert

The audit is not a page you visit. It decides what every other part of Skald may show.

  1. Real time

    If the live audit disagrees, Real time shows no visitor figures until they match.

  2. Every tab

    When a period holds a withheld, partial or missing day, the page says how many and which.

  3. Mails and reports

    A mail with a withheld or partial day is held back. Client reports count only verified, whole days and list the rest by date.

  4. Alerts

    AI alerts use whole days only, and wait when a day in their window is withheld or missing.

What it does not do

  • Two counts agreeing proves the arithmetic, not that the log was whole. Data quality shows what can be seen of that.
  • Visits are an upper bound on people. Requests are never counted as people.
  • A withheld day leaves a gap that is named. Skald never fills it with a guess.
  • Skald counts what reached the log. A page a CDN served from its cache needs the CDN's own log.
  • Search Console and Bing figures are the engines' own, so Skald cannot recount them from the log. It adds their tables up again by a separate road and says when they disagree.

2,500+ tests against hand-built logs, and a public comparison with a source for every cell.

questions

Analytics data accuracy FAQ

Straight answers, including what Skald does not do.

What does counted twice mean?

Every figure Skald shows is counted by two separate roads: the main count, and an independent audit with its own parser and rules that recounts it from the raw log. The two share only the lists of names, never the code. A day is shown only when both agree.

Why does a day say withheld?

Because the two counts did not agree. Rather than show a figure that may be wrong, Skald withholds the day and lists it. It is never shown as zero and never guessed. The server admin can see why on Site › Data quality.

Why is a figure blank and not zero?

Blank means not known; zero means Skald counted and found nothing. A figure that was not recorded, such as a breakdown from before Skald began collecting it, stays blank, shown as a dash. The same holds in the API and the MCP server: not recorded is null, never 0.

Is Skald's data sampled?

No. Every line of the log is counted, and nothing is sampled. What Skald leaves out of a total is a day that is not whole, and the page names that day.

Can two counts agree and still be wrong?

Yes, if the log itself was not whole: two counts of the same missing lines agree. So Site › Data quality shows what can be seen of the log: lines read, unreadable lines, duplicates, silent stretches, and when each job last ran.

How is Skald itself tested?

With 2,500+ tests against hand-built logs, and a public comparison with other tools that gives a source for every cell.

$ tail -f access.log | skald

See what AI does with your site. Free for 30 days.

No card. We set up hosted Skald for you within one working day, or you self-host it free. Every line of your log, sorted and added up.

Start free trial Live demo