Skip to content

Blog

How to track 404, 410 and other errors in Statable web analytics

Nobody files a ticket when a page breaks. Your users and potential clients try something, it fails, they leave, and the visit looks exactly like a visit that went fine. That is why broken pages survive for months even on popular sites.

The Errors tab in the dashboard, listing one row: 404 Not Found, counted at 184

Statable labels those hits. Your usual reports then show which URLs fail, with which codes, where that traffic came from, and which browsers, devices and operating systems it used.

Every number Statable shows you comes out of ClickHouse

Statable is privacy-first web analytics, hosted in the EU. No cookies, no sampling, and no throwing away raw rows once a chart has been drawn. Every pageview, every session, every goal completion is kept as data you can still query later.

That last part is the whole reason this post exists. Keeping everything is an easy promise to make and an expensive one to keep, and the thing that makes it affordable for us is the database underneath.

ClickHouse is the primary database behind Statable. Not a cache in front of something else, not a reporting sidecar. Every chart in the product is a query against it.

The lazy way to set up a goal

Are you lazy? I am extremely lazy.

So when the task is to set up a goal under some particular set of conditions, that is my idea of boring. I like building things. I do not like configuring something so that it triggers and then somehow fires somewhere. I know how it is supposed to work. Setting all of it up is the thing I keep pushing to next week.

Half the EU sites we measured tracked us before we could answer the banner

On 29 July 2026 we crawled 1,845 European domains and watched what left the browser before we touched anything. A tracker fired before any click, keypress or banner choice on 641 of them. What share that is depends on what you divide by: 48.8% of the 1,314 rows that loaded at all, or 54.0% of the 1,186 rows that produced any detection. Both bases are explained below, and every breakdown in this post is computed on the narrower one. The median site made its first third-party request 419 ms after the scan started (n=1,062), which is quicker than most people can find the cookie dialog, let alone read it.

We measured it with two instruments rather than one: a Playwright crawler for the corpus, and Statable GDPR Checker, our free extension, which runs the same 101 signatures in a real browser on a real tab. They agree on most sites and disagree in ways worth reading, which is the second half of this post.

What happens when your server inherits a pirate site's IP address

One morning a customer opened their dashboard and looked at the Hosts report, which had shown the same single row since the day they installed us. There were two rows now. The first was their domain. The second was a name they had never seen in their life.

They did what anyone would do and opened it.

It was their site. Not similar to their site. Theirs. Same layout, same copy, same photographs, same links, down to the wording of the footer. A different domain name at the top of the browser and nothing else different at all.

They came to us to work out what they were looking at.