Open sourceIn the free reqad package (GPL-3.0).

Visitor stats & bandwidth

Reqad counts the visitors, page views, requests and bandwidth of every site from its web server log, every hour. You see every account in Accounts & Domains > Bandwidth Usage; with the account panel, each account sees its own sites under Metrics > Visitors and bandwidth. Nothing is added to the sites: no script, no cookie.

What is counted

NumberCounted as
VisitorsDifferent visitors in a day: the same address with the same browser counts once a day. A month adds its days up, so the same person on three days counts three times.
Page viewsPages opened by people: answers 200 or 304 to a GET that is not a file (images, styles, scripts, fonts, media, downloads), not the WordPress admin and not a bot.
RequestsEverything the web server answered, bots included (what some tools call hits).
BandwidthBytes the web server sent, bots included. It is the same number the monthly bandwidth of a hosting package uses. Mail and FTP are not in it.
Server errorsAnswers 500-599, as a share of the requests. A day with more than 1% gets a mark in the chart.

For each site and period there are also the top pages, the sites the visits came from (search engines and AI assistants are marked), the missing pages (404), the bots, the files that use the most bandwidth, countries, browsers, systems, devices and the busiest hours.

Bots and scanners

Bots are counted apart: they are left out of visitors and page views, but their traffic is in the bandwidth. Search engines, SEO tools, AI crawlers (marked AI), link previews and uptime monitors are named; anything else that says it is a bot, crawler, script or library goes under Other bots and scanners. Requests from the server itself are This server.

A browser that asks for addresses only scanners ask for (.env, .git, wp-config, phpMyAdmin...) or for a missing .php file counts as a scanner for the rest of that day, so its page views are not counted. In the missing pages list, those addresses are marked scanner; the others are often old links worth a redirect.

Privacy

  • No visitor's address is stored. Visitors are counted with a hash of the address, the browser and the day, made with a secret that changes every day; the hashes and the secret are deleted after two days, and they cannot be turned back into addresses.
  • Query strings are cut from pages and referrers, so tracking codes, tokens or addresses in links are never kept. Of a referrer only the site's name is kept.
  • The country is looked up from the address while the log line is read, then the address is dropped.
  • The numbers stay on the server, in /var/lib/reqad/stats/stats.db. An account sees only its own sites, and a domain that moves to another account starts empty there.

How it is collected

  • Cron runs reqad stats collect at minute 12 of every hour. It reads each site's log from where it stopped last time, including the part that went into a rotated log.
  • The first time it sees a log it also reads its rotated copies of the last 60 days, so the pages start with history (as far back as the server kept logs, 52 days by default).
  • The numbers per site and day are kept for 25 months. The lists are kept per day for 35 days (the top 100 of each), then per month (the top 200).
  • If the count stops for more than three hours, Needs attention says so.

Countries

Countries come from the free DB-IP Lite country database (IP Geolocation by DB-IP, CC BY 4.0). Reqad downloads it on the first count and then once a month, after DB-IP publishes the new one (about 4 MB, from download.db-ip.com), and only replaces the old file once the new one reads. Turn the monthly update off in Bandwidth Usage > Settings or with reqad stats geoip --monthly=off; without the DB-IP file an older GeoLite2 file in /usr/share/GeoIP is used when the server has one, and without any the Countries card is not shown.

Bandwidth Usage

Accounts & Domains > Bandwidth Usage lists every account with its bandwidth, visitors, page views, requests and server errors in a month, busiest first, with each of its sites under it. With Hosting Pro, the bar shows the account's bandwidth against its package. With the account panel, Stats opens that site's page in the account's panel. Its Settings turn the counting and the monthly country database update on or off; Update now downloads this month's country database.

Turning visitor stats off stops the counting and hides Metrics > Visitors and bandwidth from the accounts; what was counted stays. While a hosting package with a bandwidth limit has accounts, the logs are still counted, because the limit needs the numbers.

Command line, API and AI assistants

reqad stats show    <domain|all> [--period=30d|12m|YYYY-MM] [--account=USER]
reqad stats usage   [--month=YYYY-MM]
reqad stats collect [--domain=DOMAIN]
reqad stats geoip   [--update] [--monthly=on|off]
reqad stats on|off

The REST API has GET /api/v1/stats (every account in a month) and GET /api/v1/stats/{site} (one site, all sites of an account or its main domain, ?period=), and the same as the AI assistant tools stats_usage and site_stats. An account's token sees only its own sites. More on the CLI page.


Need a hand? Create a free account or contact us.