Matomo is $23/mo (Cloud). Headcount is a self-hosted alternative at $1.99/mo. Here's when each makes sense.
| Headcount | Matomo | |
|---|---|---|
| Hosting | Self-hosted, your infra | Self-hostable but requires PHP, MySQL, and a web server |
| Data location | Your server, your disk | Your server (if self-hosted) |
| Free tier | 10,000 events/mo | Paid only |
| Pro pricing | $1.99/mo | $23/mo (Cloud) |
| Dependencies | None (single binary + SQLite) | Docker, Postgres, etc. |
| Setup time | ~30 seconds | 15-30 minutes (self-host) |
| Dashboard | Built-in at /ui | Web UI |
| License | BSL 1.1 | Open source |
Headcount is a single Go binary with embedded SQLite. Install it with one command, and you are running in under a minute. Your data stays on your server.
curl -fsSL https://stockyard.dev/headcount/install.sh | sh
The decision between Headcount and Matomo usually comes down to one question: do you need the breadth of features that Matomo offers, or would a focused tool that stays out of your way be a better fit? Matomo has spent years building an ecosystem around user analytics. Headcount does one thing well and gives you complete control of the underlying data.
Headcount runs as a single static binary with an embedded SQLite database. There is no application server, no cache layer, no background worker. One process handles HTTP requests and reads from and writes to the database file directly. This simplicity is the entire point — fewer moving parts means fewer things that can break at 2 AM.
Both Headcount and Matomo offer self-hosted options, but the operational requirements differ. Self-hostable but requires PHP, MySQL, and a web server Headcount is a single binary with embedded SQLite — no containers, no external databases, no orchestration. The practical difference: Headcount runs on a $5 VPS with no configuration. Self-hosting Matomo typically requires a more substantial infrastructure investment.
Moving from Matomo does not have to be all-or-nothing. Some teams run Headcount for new data while keeping Matomo as a read-only archive of historical records. The API makes it straightforward to build a sync script if you need both systems to reflect the same data during a transition period.
Single binary. Free to start. $1.99/mo for Pro.