12 ms·
GoatCounter – Simple web statistics, with no tracking of personal data
- WinonaRyder 7y agoSource code: https://github.com/zgoat/goatcounter https://github.com/zgoat/goatcounter. The author also gives a rationale for choosing the EUPL (EUROPEAN UNION PUBLIC LICENCE) here: https://www.arp242.net/license.html https://www.arp242.net/license.html. EDIT: ksec posted this link: https://github.com/zgoat/goatcounter https://github.com/zgoat/goatcounter, but, at the time of writing, my comment is higher... It provides rationale for why GoatCounter exists and comments about _why not_ other solutions like Fathom, Open Web Analytics, KISSS, Ackee, Countly, Analysing log files, Google Analytics, statcounter, Simple Analytics, getinsights.io, statcounter.com. plausible.io/.
- paul7986 7y agoWait your advertising a product that doesn't track you/steal your data yet your screenname here is Winona Ryder who was caught shoplifting.... hmmmmm
- WinonaRyder 7y agoArghh... too late to edit my comment... ksec's link is: https://github.com/zgoat/goatcounter/blob/master/docs/rationale.markdown https://github.com/zgoat/goatcounter/blob/master/docs/ration...
- ksec 7y agoThanks. BTW I love your website's design!
- WinonaRyder 7y ago> BTW I love your website's design! Thanks! :)
- pavon 7y agoI can't say that I agree with that rationale. One of his major requirements is: > Have a “strong” copyleft, including the so-called “network protection”, which mandates that people submit changes even if they operate the code as a service (rather than sending people binaries). However the EUPL allows you redistribute under other "compatible" licenses[1] most of which don't provide that "network protection". Effectively, the EUPL is only as strong as the weakest "compatible" license listed in the appendix. [1] These "compatible" licenses wouldn't otherwise be compatible, except that the EUPL explicitly allows re-licensing to them instead.
- zaarn 7y agoThe EUPL only allows relicensing if the covered work is part of a larger work, so you can't simply take EUPL code and distribute it as LGPL just like that. It has to be some part of a larger work.
- gurgus 7y agoI just tested this out on my website and it worked exactly as instructed which is always a plus. Super easy to set up and a clear set of analytics :)
- seancork 7y agoWill test this out tonight on my site, want to move away from google analytics.
- ksec 7y agoThis document [1] describes the rationale for developing GoatCounter, its goals, and a comparison with existing solutions. [1]https://github.com/zgoat/goatcounter/blob/master/docs/rationale.markdown https://github.com/zgoat/goatcounter/blob/master/docs/ration...
- astuyvenberg 7y agoThis seems like a perfect solution for a portfolio, blog, or new project. I like that it's open-source, lightweight, and has a self-hosted option! Elevator pitch from `rational.markdown` GoatCounter aims to give meaningful privacy-friendly web analytics for business purposes, while still staying usable for non-technical users to use on personal websites. The choices that currently exist are between freely hosted but with problematic privacy (Google Analytics), hosting your own complex software or paying $19/month (Matomo), or extremely simplistic "vanity statistics" (Fathom). GoatCounter attempts to strike a good balance between various interests. Major features include a free hosted version so people can easily add analytics to their personal website, an easy to run hosted option, an intuitive user interface, and meaningful statistics that go beyond "vanity stats" but still respect your users' privacy.
- kareemm 7y agoLooks nice. I’m somewhat surprised we haven’t seen an obvious alternative to Google Analytics yet. It’s got a wide and deep surface area. But feels like for the majority of eg B2B SaaS apps there’s a much simpler solution to be built. Something that conves mainline scenarios like: - what channels / sites / campaigns is my traffic coming from? - what pages are people landing on? - what pages are driving conversions? - what do my conversion goals look like (percentage and total conversions)
- kuzimoto 7y agoWhat about Matomo[0]? [0]https://matomo.org/ https://matomo.org/
- Carpetsmoker 7y agoI used it for a while, and found the UX really hard. YMMV, but I wasn't happy with it. Also, the hosted version isn't free, and self-hosting is also comparative expensive (vs. free) and time-consuming. IMHO any serious GA alternative should have a free hosted option. I wrote about that a bit more in-depth yesterday over here: https://lobste.rs/s/ooag4u/goatcounter_1_0_release#c_o76csv https://lobste.rs/s/ooag4u/goatcounter_1_0_release#c_o76csv
- monkin 7y agoIn past many companies wanted to do "free analytics for people", and we don't see them anymore, you can't compete with Google offering having just free option. Google runs on scale and they can keep it free, and sell or use data from it. If you want to build analytics software on moral grounds for privacy and stuff you will just bleed out or just run very niche or indie business. It's great for nomadic makers, but not for serious business. Look on Matomo, Simple Analytics or Fathom. They are all great(besides Matomo) but they can't compete on other market than small business. And yes, I know that Matomo has enterprise clients, but they are also small comparing to GA. :) Want to compete with them? Have a great plan and support from major search engine like DDG. If not, then you can make another Mixpanel(which is great!).
- 7y ago
- mrgreenfur 7y agoHow do you know it doesn't need a consent notice? Anything that tracks people uniquely, via a personal identifier, is in-scope and counts as personal data. Is the assumption here that it counts as 'legitimate interest'?
- mumblemumble 7y agoIt would appear that that's how it avoids needing a consent notice. The page says it doesn't track users.
- zachrose 7y agoI'm not sure that GoatCounter tracks people uniquely.
- smartmic 7y agoMore on this can be found on the Privacy page: https://www.goatcounter.com/privacy https://www.goatcounter.com/privacy
- Carpetsmoker 7y agoThere is no "unique personal identifier"; I have some ideas on how to track recurring visits without such an ID, but that's something for the future. Perhaps I should clarify the README on this a little bit.
- mrgreenfur 7y agoAhh, cool! Someone else linked to your privacy policy where it's super clear "Visitors are not tracked by using e.g. persistent cookies". Might be worth clarifying by bringing this line up especially as there are tons of "gdpr compliant" products that get fuzzy on the details pretty quickly.
- pat-leahy 7y agoThe referrer header which is stored may contain a unique personal identifier.
- masonwear 7y agoThis reminds me of https://usefathom.com/ https://usefathom.com/! Both solving an important problem in my eyes.
- Carpetsmoker 7y agoIt was actually written as an alternative to Fathom! My original plan was to contribute to Fathom until it suited my needs, but the Open Source version of Fathom is on indefinite hiatus and the maintainers are working on a (closed) rewrite. I decided that starting from scratch would be better, as there were some things I would have preferred to do fundamentally different. What I really wanted was to add analytics to another idea I was working on, and while it's a cool idea that everyone I pitched it to seems to like, it doesn't have any good monetisation options, so I decided to work on this first.
- nathancahill 7y agoOh no! What's the source on the indefinite hiatus? I use Fathom for all of my sites. Haven't heard about any of this. Can you point me to anything?
- Carpetsmoker 7y agoSee this issue: https://github.com/usefathom/fathom/issues/268 https://github.com/usefathom/fathom/issues/268
- nathancahill 7y agoThanks
- deleted 7y ago[deleted]
- geddy 7y agoJust set this up on my little side-project site, as I was curious if anyone was actually finding / using it. Wish I found this a month ago when I launched it! For anyone interested, the site is https://www.videogamesbyyear.com https://www.videogamesbyyear.com, and if you want to see the statistics screen, I made them public here: https://videogamesbyyear.goatcounter.com/ https://videogamesbyyear.goatcounter.com/
- ASlave2Gravity 7y agoTook about 3 mins to get working with my jekyll github pages site. Very simple, informative backend panel too. Thank you very much. Shall be donating!
- make_install 7y agoFinally a simple counter with no tracking. Most companies use Google Analytics, because the current alternatives are lacking. Piwik is a good alternative but harder to configure.
- brainlessdev 7y agoJust set this up for my blog https://fnune.com/ https://fnune.com/ Thank you!
- m3adow 7y agoThis looks really nice. My blog is rather small and Matomo always seemed to be too big for it. I'll test this one as an alternative.
- saikiran91 7y agoWhat is so special about this?
- Carpetsmoker 7y agoAll the servers run on goats. True story.
- AndrewStephens 7y agoI applaud anyone one makes an effort to avoid thirdparty analytics products. Analytics in general does nothing to help the users of your site while pushing additional work onto the client and leaking information. But looking at data is fun so I ended up creating my own super light counter that I run on my site so I can see hits. My goal was to store as little information as possible - only hit counts as stored, and no cookies are used at all. https://sheep.horse/2019/11/visitlog_-_sheep.horse_analytics.html https://sheep.horse/2019/11/visitlog_-_sheep.horse_analytics... I don't have any fancy graphs but the numbers are interesting https://sheep.horse/visitor_statistics.html https://sheep.horse/visitor_statistics.html EDIT: all I discovered is that my blog gets pathetically few hits.
- wastedhours 7y ago> Analytics in general does nothing to help the users of your site I find this really interesting, and am amazed that more sites and services don't surface some of their analytics data to users. Look at the success of yearly "wrap up" campaigns (disclosure: I work for a company with one of the most famous versions of that mechanic, but don't work on it). You'll get users opting into some data and tracking if there's some tangible benefit to them on the other end. It seems like people love learning about their usage of products, and there's a lot of data that people would be happy to share if they got some benefit too. For example, I know Google tracks when I click a link in a SERP - but now that they surface the "you've visited this X times, last time on Y", I'd happily opt into that data collection because of the pseudo-utility/interest factor of it.
- AndrewStephens 7y agoI like seeing general analytics about a site because I am nosy so I enjoy seeing "This blog post was visited 300 times" type information. But I would hate to start seeing "You, personally, have visited this site 14 times" start cropping up because it would remind me how much information on me is available. Intellectually I know this data exists in Google Analytics, but actually seeing it would creep me out.
- 7y ago
- radiKal07 7y agoI don't like the UI. Does this also provide a REST API so I can make my own UI and just use this as a backend?
- Carpetsmoker 7y agoThere is no API, and unless a lot of people ask for it I'm not planning to build it any time soon either. Making an API isn't too hard, but providing a stable API would slow down development quite a bit as this project is really still in its early days. I don't think it's worth it right now. Sorry :-( Better data export facilities is something that I intend to do soon-ish, and you could build your own UI with that, but it'll be based on data/DB sync rather than querying an API, which is quite a different workflow.
- dbrgn 7y agoCan it also run in "server log parsing" mode so that no JS scripts are required? This makes it even easier to avoid processing personally identifiable information (if you don't collect the full IP) and it works even if people have JS disabled (or if the clients are automated scripts). Matomo is quite good at this.
- Carpetsmoker 7y agoNo, but this wouldn't be too hard to add. I'm not planning to work on it soon, but I'll be happy to review PRs/provide guidance on how to build it. I will add docs on how to run it in "server mode", where instead of using a JS script you add a HTTP request in your apps middleware. This is an idea I had the other day and I did some research on it, and it should work quite well (haven't started work on it yet though).
- dbrgn 7y agoNice idea! Won't work for static pages though. Regarding log analysis, it can be tricky to get right due to logrotate edge cases.
- doomrobo 7y agoNice work! Off-topic but remember that you can get a surprising amount of analytics using just your web server logs and no JavaScript at all https://goaccess.io/ https://goaccess.io/
- city41 7y agoIt's becoming more common to not have access to the logs. But I agree if you can access them, they can be a better approach.
- ripexz 7y agoIndeed, I've been using goaccess for a while now (https://stats.logpasta.com/ https://stats.logpasta.com/) and it suits my basic needs at least seeing what CLI version the few actual visitors I have use. I haven't had much luck with their "live" report though so I have a Cron job running every few minutes to regenerate it.
- yodon 7y agoThanks for the goaccess.io suggestion. GoatCounter looked really cool but their crazy decision to go with a GPL-style license for code you run on your website is a pretty serious deal-breaker for me. GoAccess looks much more usable.
- Carpetsmoker 7y agoWhy is it "crazy"? The reason it uses copyleft is to prevent people from taking my work and operating a competing SaaS with it; I don't think that's very "crazy" IMHO.
- yodon 7y agoIt's crazy because the use of the EUPL license forces all your customers to copyleft their website code, which almost no business wants to do, blocking any potential customers from adopting your product. No adoption means no usage, no pull requests, and no revenue. You are free to license your code however you want, but I think you'll find the tremendous effort you put into developing this great project will end up being essentially unused by others simply because of your licensing choice. Monetizing open source projects is incredibly difficult, and simply pasting a GPL or EUPL license text into the project doesn't make them easier to monetize, it makes them harder to monetize.
- galfarragem 7y agoThe only thing that stops me from switching from Google is pricing. I have 2 niche blogs (does that count as commercial?) as a side project that barely makes any money and paying $180/year is completely unrealistic. I would switch without blinking with a more friendly pricing.
- Carpetsmoker 7y agoI'm not too fussy about it; if you have a small side project with a reasonable amount of traffic that earns you a little bit of pocket money then that's just "personal" as far as I'm concerned. It's really hard to codify these kind of things, so I just made it "commercial/non-commercial" which is simple and clear. Hit me up on email and we can arrange something: support@goatcounter.com
- arendtio 7y agoSounds great. I like privacy-aware analytic tools. So far I have been using https://www.privalytics.io https://www.privalytics.io Similar functionality-wise from what I can tell, but different in style.
- intrepidhero 7y agoCan someone explain the attraction of embedded JS for analytics, what exactly does it buy you versus log parsing? Log parsing seems like the logical choice for the static site crowd but it seems like there's little interest there. I must be missing something.
- WinonaRyder 7y agoThe most obvious one I miss (I don't currently only use server-side analytics) is something like screen size. You can do user-agent sniffing to _guess_ what the size of a mobile device is, but it doesn't tell you whether or not you can stop wasting time making your content responsive on a tiny screen that no-one uses anymore.
- Carpetsmoker 7y agoYou can probably use UA Client Hints to do this; but it requires some custom-fu and doesn't work in all browsers.
- RL_Quine 7y agoYou can do this with only media queries in CSS, most likely.
- bransonf 7y agoThe disadvantage there is that sometimes you want to give the user a totally different site if their client is mobile. CSS queries are indiscriminate in that a smaller browser window may trigger the “mobile” css. Likewise, many tablets have similar screen sizes to some laptops, yet often you don’t want to present the same UI to a tablet and laptop.
- makapuf 7y agoAre you talking about mobile ? Sure there are less pixels but the size if my phone (i.e. the size of my pocket) is between 15 (laptop) and 25 times (desktop screen) smaller in area. My pocket will be smaller than my arms or my desk. So a different site presentation will be in order.
- michaelbuckbee 7y agoThere's no definitive answer to this as it would take a court ruling (that hasn't happened), but my own I am not a lawyer but deal with GDPR/CCPA professionally understanding does not match the "You don't need to deal with GDPR" pitch of these services. Say you run a SAAS and install this on your marketing site. You're still sending IP address and potentially identifiable information to a third party processor. We (on HN) don't consider IP addresses as PII, but from a purely practical standpoint ad data brokers are selling/bidding on IP addresses all the time which makes them more than nothing. You (as the controller) also need to validate that processors (services that you are using) are in fact doing what they're saying. You'd still need a Data Processing Agreement in place with GoatCounter because otherwise Goat could start collecting additional information without your knowledge, start generating more metadata (GeoIP/Company) from the IP, etc. I'm just saying it's not only about not collecting data, but the processes that surround it and safeguarding users and their privacy.
- agacini 7y agoThank you for the service. I have just added my website here. Hopefully it will be longlasting for all us.
- jlelse 7y agoI should have waited a few more months before coding my own statistics tool (KISSS [1]) (which is also mentioned in GoatCounter's rationale document [2]). :D GoatCounter seems really promising, I especially like the simple web interface, the selected programming language (Go) and that it should work with a simple SQLite database. Keep up the great work! If you need some ideas for features that are currently implemented into KISSS but not into GoatCounter (AFAIK): - Request stats from multiple domains (e.g. see the number of page views for all domains combined) - Request stats by different criteria (e.g. only show stats with referrer of Hacker News or Browser Firefox) - Reports: Daily email or Telegram message with stats - Telegram bot: Request stats via Telegram There's definitely a need of privacy-respecting analytics services that don't collect personal data. I hope you can succeed with your project! [1]: https://kis3.dev/ https://kis3.dev/ [2]: https://github.com/zgoat/goatcounter/blob/master/docs/rationale.markdown https://github.com/zgoat/goatcounter/blob/master/docs/ration...
- giansegato 7y agoGreat job! I love the TG integration! It's so often about Slack and not about TG :-(
- rawrmaan 7y agoLooks like the first direct competitor for https://simpleanalytics.com https://simpleanalytics.com, which I’ve been using and enjoying.
- muchbetterguy 7y agoNice work. I'm currently in the process of building something similar to this and Fathom - mostly out of curiosity - I will ping a link up here when it's ready for a test-drive. The current setup is similar to Fathom in that I temporarily track a user session by generating a unique hash for the user, then, if that hash has already been seen in the past 30 mins, we move hash to the latest page view instance and can increment a pages viewed counter for the session. We can't tell which pages you've been on in the past, only that you started a session at X time, and viewed N pages, with the last view at Y time. Incidentally, I had a PoC for the data ingest running as a Cloudflare Worker using their KV storage. What could be interesting about that is that there'd be zero third-party widget code to inject into a webpage: You'd log the pageview in the worker and pass on the request. But the market for those Wordpress users who want to paste a few lines of JS snippet into their site would be lost. And it would add a few 100ms to each request you want to log.
- mad182 7y agoTop tier "Business Plus" with up to 1M pageviews/month seems kinda low. I currently have 3 separate personal side projects with more views than that :D
- Carpetsmoker 7y agoThe numbers are more or less similar to various competitors, but it's not a problem if you need pageviews, just need to get in touch.
- chadlavi 7y agoIf this tool could also show you anonymized aggregates of click trails through your site, I'd be down in a heartbeat. Raw visitor counts and some metrics on where they came from are sometimes useful, but for a web app the much more useful info comes from the pathways people take through the app.
- Carpetsmoker 7y agoYup, that's definitely a goal, just need to build it. Check back in a few months :-)
- chadlavi 7y agonice
- sdfjkl 7y agoWhat's wrong with just parsing the webserver logfiles like we used to do (I still do this)? Is that too old-fashioned now or something? Doesn't require any account or paying anything or setting any cookies (and therefore you don't need to have that annoying cookie warning your users hate so much).
- bobx11 7y agoIf I remember correctly, even having the user IP address in your log files means you need to warn the user for some of the regulations.
- Quarrelsome 7y agoYe I did that (also I had to anonymise the ips) but someone decided to run a continuous pen-test against the site over the course of days (I swear they forgot to turn it off or smth) and tragically I had to rework my infrastructure to accommodate much greater traffic than expected (BIG BIG BIIIIIIIG log files) as it made some of my processing fall over. Its nice if someone has just done some of that sort of stuff for you.
- akdas 7y agoI don't have access to the logs when I deploy to Github Pages. Github Pages is really convenient for me for many reasons, but no access to the logs is the main downside when it comes to analytics.
- adnjoo 7y agonice! I just added this to my personal site :) will see if its good :P
- odc 7y agoNice to see we're going back to simple counters like in the 90s.
- ctoth 7y agoFirst time I've ever seen a comment about accessibility on the homepage of a mainstream product like this. As a blind developer this was just awesome, made me really feel like somebody out there is listening. Thank you for making this
- arp242 7y agoCheers. Right now a11y support is a bit like IE11 support: it should work, but it's tested only sporadically since it's rather time-consuming, and as a solo dev time is rather precious. I'm also not blind myself or even a a11y expert so there will probably be some issues I'm just unaware of. I would really appreciate feedback on it, so do get in touch if you have issues. Also, a11y support isn't just for "blind" or "disabled" users; it tends to make the page better for all users. This applies to everything really; for example while being able to tell coins apart by touch is critical for you, it's also pretty convenient for me at times, so this kind of coin design is better for everyone.
- SiVal 7y agoAlso, a11y support isn't just for "blind" or "disabled" users; it tends to make the page better for all users. Yes! Although I'm not "officially" disabled, I'm "blind" to my screen when I'm driving (you'll be happy to know), I'm half-blind to a message that pops on my screen when I'm drying off from a shower (no glasses in the shower is my motto), I'm "mute" when surrounded by strangers on a train, my fingers can't operate a mouse or keyboard when I'm doing dishes, etc., etc. We're ALL disabled, and our circumstances change over very-short to very-long term as well. Having things designed with flexible interface options was one of the original goals of the web. Some of us remember before CSS, the publisher was supposed to specify semantics, and the user was supposed to specify presentation. I don't think we should go to that extreme, but I'd like to see our browsers, tools, and frameworks designed to make multi-UI flexibility easier and more common.
- wnevets 7y agoDoes anyone know of a good resource for this?
- owenshen24 7y agoI've been a happy user since you demoed this here last August or so. Have also been pitching it to some friends for their personal sites. I donated for the free tier. Really appreciated your writeup and rationale for providing a free alternative to GA. Thank you for your efforts!
- mech1234 7y agoWould a site with this be required to give a GPDR disclaimer?