Umami is $9/mo (Hobby). Headcount is a self-hosted alternative at $1.99/mo. Here's when each makes sense.
| Headcount | Umami | |
|---|---|---|
| Hosting | Self-hosted, your infra | Open source, self-hostable with Node.js and Postgres |
| Data location | Your server, your disk | Your server (if self-hosted) |
| Free tier | 10,000 events/mo | Paid only |
| Pro pricing | $1.99/mo | $9/mo (Hobby) |
| 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
Teams evaluating Umami alongside Headcount tend to split on two axes: feature depth and data residency. Umami wins on feature depth — it is a mature product with integrations, mobile apps, and a dedicated support team. Headcount wins on residency — your user analytics data lives on your server in a SQLite file you can inspect, back up, and migrate without asking anyone for permission.
Architecturally, Headcount and Umami could not be more different. Umami runs on distributed cloud infrastructure with load balancers, managed databases, CDNs, and redundancy across availability zones. Headcount is a single process writing to a single file on a single disk. That sounds fragile until you realize that SQLite handles more concurrent readers than most web applications will ever need, and WAL mode means reads never block writes.
Umami can be self-hosted, but the experience differs significantly from Headcount. Open source, self-hostable with Node.js and Postgres With Headcount, self-hosting means downloading one file and running it. The gap in operational complexity matters most for small teams without dedicated DevOps staff.
The migration path from Umami depends on how much history you need to bring over. If you only need active records, a manual re-entry through Headcount's dashboard might be faster than writing a migration script. If you need full history, export from Umami and use Headcount's POST API to import records. Either way, the process is measured in hours, not weeks.
Single binary. Free to start. $1.99/mo for Pro.