Self-hosted WordPress analytics
Self-hosted analytics keeps your traffic data on your own server instead of sending it to somebody else's. With Honest Analytics that means your existing WordPress database. No second service, no separate server, no account anywhere.
What self-hosted means here
The term gets stretched. Some tools describe themselves as self-hosted but still need you to stand up a separate application, a separate database and a separate domain, then keep all three patched. Others call themselves self-hosted while quietly relaying data to an API for processing.
Honest Analytics is a WordPress plugin. It creates its tables in the database you already have, counts traffic in PHP you already run, and renders reports in the admin you already log into. There is nothing else to install, host or maintain.
It makes no outbound requests
This is the part worth being specific about, because "self-hosted" is often true of the storage and false of everything else.
- No analytics service is contacted, ever.
- No fonts are fetched from a CDN. The admin styling uses what is already there.
- No map tiles are requested for country reporting.
- Even the charting library is committed to the repository with a recorded checksum rather than pulled from a CDN, because a CDN is a third party watching your admin.
- The only network calls it makes are two daily loopbacks to your own site, and a licence check if you are running Pro.
Open source, and readable
Both editions are open source. You can read every line of what runs on your server, and there is no obfuscated, encrypted or minified-beyond-recognition code anywhere in it.
That matters more for analytics than for most plugins, because the whole question is what it does with visitor data. A claim you can check beats a claim you have to trust. The licence page covers what the GPL gives you, including the part most plugin vendors are vague about.
What it costs you in storage
Less than you would expect, because growth is driven by dimensions and time rather than by traffic. It writes one row per hour per dimension, not one row per visit.
The practical consequence is that a site with a hundred thousand views a day and a site with a hundred use roughly the same disk. Around 110,000 events fit in about 15 MB. There is no per-visitor table to grow without bound, because per-visitor rows are never written in the first place.
Retention is yours to set, and the retention notes explain how data ages from raw counts through rollups.
What you take on
Self-hosting is not free of obligations, and it would be a poor argument to pretend it is.
- Backups are yours. If you lose the site you lose the analytics history with it, so it needs to be in whatever backs up the rest of WordPress.
- A real cron helps. On a heavily cached site, WordPress cron barely runs, so counting needs a proper schedule. The scheduling notes cover it in a few lines.
- You are the one who updates it. Through the normal WordPress update screen, like everything else.
Your data, and what leaving looks like
Because everything is in your database, there is no export request and no waiting on anybody. Pro can export it directly, and even without that it is your own tables in your own MySQL.
Uninstalling keeps your data by default. Deactivating keeps everything, and deleting the plugin keeps the tables too unless you explicitly turn that off first. That default is deliberate: losing years of history to a mis-click is not a reasonable outcome.