Blog

Follow-up to "Counting website visitors is hard"

This post is a follow-up to my post the other day, which discussed and speculated on why two website visitor metrics produced wildly different results.

Yesterday, I submitted it to Hacker News to share my thoughts, which had the neat side-effect of producing more and bigger visitor numbers for me to look at.


The submission received 5 votes, one comment, and one email response. A priori based on the 1% rule of internet community participation, I would expect something in the range of 700 human views corresponding here. I actually received about 270 Squarespace visitors and 6,200 Cloudflare visitors - so, it seems like 700 human views is actually quite likely, and is probably on the low end. That's larger than my high school graduating class!

My previous post's suggested 85% adblock rate would predict about 2,200 Cloudflare visitors, but I actually got 6,200. This implies about a 95% adblock rate [footnote 1], which seems a bit high. This post was on the Hacker News new page, which is likely tracked by a lot more bots (compared to the comment-on-a-random-post mentioned in my last post).

Are there really 4,000 bots crawling the Hacker News newest posts? Maybe I could try to measure it by putting up a new post that just says "Test post, please ignore" or something else incredibly uninteresting... but the odds are, real people will still probably click on it. Something to think about more.


Another thing I noticed is that of the 270 Squarespace visitors, about 70 of them were listed as "Direct". In my last post, I thought the direct referrers might have actually navigated directly to my site (that's how I read some blogs myself); but 70 is so high that these must also be driven by Hacker News. Although the HTTP Referer header is optional (and unfun fact, intentionally spelled that way), I have no idea exactly how so many visitors are missing a Referer. All major browsers send the Referer header by default, including in private browsing mode. And we do know these are probably not privacy-conscious users explicitly choosing not to send the header, because they're still tracked by the Javascript-based Squarespace Analytics.

Other interesting referrers: a Hacker News Android app, a Twitter bot that appears to post a random link every 6 minutes, somebody's project management software board, the Chinese search engine Sogou, and most bafflingly, localhost (This one must be a joke, right? The requests are coming from inside the house!).


Time and place:

Most traffic came within the first four hours of posting. That makes sense, since the HN post didn't gain much traction and quickly fell off the newest page.

Most traffic came from the Anglosphere (USA, Canada, UK, Australia). I guess that makes sense between the post time in US daytime, Hacker News as an American-based site, and... my post being written in English, probably. The remaining requests were mostly India, Germany, Brazil, Japan [footnote 2], and Russia, and then a long smattering of other nations.

As a side note, I do appreciate that Cloudflare and Squarespace both offer table views of this data; looking at a map makes it really easy to miss small countries (this means you, Japan) because there's a giant Russia occupying my attention.


The two written responses (comment and email) had a common thread of advice: it's true that analytics numbers vary wildly depending on what service you use, so you should just pick one, be consistent, and track trends over time. I appreciate this perspective. The good news is that I don't have particular goals nor strategy for my personal blog, so these numbers are more like interesting trivia than something for me to target and optimize for [footnote 3].


This should be the last post on this topic for a while. I could share this blog post, and then look at the traffic numbers and write a follow-follow-up-up [footnote 4], which I can share again, creating an eternal flywheel of ~~~ content ~~~ that I can post every day, like your favorite company's content marketing blog but somehow even less sincere. More likely, there will be nothing particularly new and interesting to say, so I promise not to post more, unless something really spicy comes up.


Thanks to those two people who left comments and emailed me about my original post. Thanks United Airlines for delaying my flight by four hours and Chase for providing free-coffee-though-it's-actually-funded-through-the-rewards-program, which gave me the time and energy to write this while sitting around at SFO waiting to go back to my parents' place for Christmas.


Footnotes

[footnote 1] (back to content) Another way to think about this is that we're cutting the non-adblock rate from 15% to 5%. That helps me get a better intuition for why the Cloudflare visitors increase by a factor of 3; it's just 15 divided by 5.

A more real-world application of this idea is success rates or availability. It doesn't sound like a big deal to go from 99% to 99.99% - you're just adding another percent, right? But that actually means moving your failure rate from 1% down to 0.01%, a hundred-fold reduction in failures. That's the difference between 3 days of downtime per year and 1 hour.


[footnote 2] (back to content) Yes, these are in fact the G4 nations. No, I don't know why I know about the existence of the G4 nations either. Thanks, I will not be taking further questions at this time.


[footnote 3] (back to content) If I did actually want to increase traffic here, I think the easy way to juice that metric would be to regularly post links to my blog in various corners of the internet. That sounds like the opposite of fun, so I'm glad I don't need to do it.


[footnote 4] (back to content) I took one (1) linguistics course in college, which qualifies me to say that is definitely the correct, recursive conjugation of follow-up. If you thought this was funny, first, I'm sorry for your taste - it's hard out there for people like us. Second, I'd highly recommend the Facebook group Linguistics Shitposting ['ʃɪt̚.,pʰʌ̈̈ʊ̈̈.stɪ̃̃ŋ].


The space below is left empty so that clicking on footnotes will scroll to the correct location.

codeBobbie Chen