Someone on your team opens cpanel" class="auto-link">wordpress-missing-a-temporary-folder-upload-error" class="auto-link">cPanel, clicks into Metrics, and finds AWStats or Webalizer showing 0 visitors for a site that's clearly getting traffic — or worse, numbers that are wildly higher than what Google Analytics reports. Neither situation means your site is broken. It usually means the stats tool is looking at different data than you think it is, or the raw logs it depends on got rotated away before it had a chance to read them. Here's how to read these numbers correctly and fix the common causes of "wrong" stats.

Symptom

A few variations of the same complaint show up in support tickets:

  • AWStats shows 0 (or near-zero) visits for a domain you know is receiving traffic.
  • Webalizer's numbers are 5-10x higher than Google Analytics for the same day.
  • Stats stop updating after a certain date and just show a flat line.
  • A domain you added as an addon domain a week ago has no history at all before today.

Cause: they're not measuring the same thing GA measures

This is the root of most confusion, so it's worth explaining before you touch any settings. Google Analytics is JavaScript-based — it only counts a "visit" when a real browser executes the tracking script. AWStats and Webalizer are log-based — they parse your server's raw access log and count every HTTP request that hit Apache or Nginx, full stop. That includes:

  • Search engine crawlers (Googlebot, Bingbot)
  • AI scrapers (GPTBot, ClaudeBot, Bytespider, and friends)
  • Uptime monitors and security scanners
  • Broken image/CSS/JS requests that never reach a "real" pageview
  • API calls, WordPress heartbeat pings, wp-cron hits

So a 10x gap between AWStats and GA isn't a bug — it's the difference between "everything that touched the server" and "humans with JavaScript enabled." If you want marketing numbers, use GA. Use AWStats/Webalizer for server-side diagnostics: bandwidth spikes, which files are getting hammered, and which bots are eating your CPU.

Cause: raw logs got rotated or archiving is off

AWStats builds its report by reading your domain's raw access log. In cPanel, this is controlled under Metrics → Raw Access, where there's an "Archive Logs" toggle. If that's off, logs get rotated (usually nightly, by the cpanellogd service) and the old data is gone before AWStats or Webalizer ever processes it. Once a log is deleted, that day's traffic is unrecoverable — there's no way to regenerate stats retroactively for it.

To check and fix it:

  1. cPanel → Metrics → Raw Access
  2. Confirm Archive logs in your home directory at the end of each stats processing run is checked, for every domain you care about
  3. Give it 24-48 hours and confirm archived .gz log files start appearing under ~/logs/

Cause: Cloudflare is hiding real visitor IPs

If your domain is proxied through Cloudflare (orange cloud), your server's access log records Cloudflare's edge IP for every request, not the visitor's real IP — unless something restores it. AWStats and Webalizer both do IP-based visit counting and geolocation, so when every hit looks like it came from a handful of Cloudflare IPs, you get skewed "unique visitor" counts and useless country breakdowns.

The fix is to install Cloudflare's official mod for restoring the real visitor IP in your server logs (available as a WHM plugin, or via mod_remoteip on Apache / ngx_http_realip_module on Nginx). Once that's configured, new log entries will show the actual client IP going forward — it won't retroactively fix already-rotated logs, so the sooner you set it up after moving behind Cloudflare, the better your stats will look.

Cause: stats haven't caught up yet

AWStats and Webalizer are not real-time. cPanel processes stats in a batch job — usually once every 24 hours, timed around log rotation — so a spike in traffic this morning won't show up until the next processing run. If you added a domain (or an addon domain) today, don't expect to see history before today; the stats config only starts tracking from the point it was created.

If you don't want to wait for the scheduled run, you can trigger it manually:

ssh user@yourserver
/usr/local/cpanel/3rdparty/bin/perl /usr/local/cpanel/3rdparty/awstats/wwwroot/cgi-bin/awstats.pl \
  -config=yourdomain.com -update

On a shared hosting account without SSH, you can usually get the same effect from cPanel by opening AWStats for the domain and clicking Update Now — it re-parses whatever raw log data is currently available.

Cause: log file points at the wrong domain after a change

If you recently switched a subdomain to an addon domain, moved a site between accounts, or changed the primary domain on the account, the stats configuration can end up looking at the wrong log path. Check the domain list under Metrics → AWStats — if the domain you expect isn't listed, or if a different domain's log is being read, it usually means the DNS/document root change hasn't fully propagated through cPanel's internal config yet. Give it one full stats cycle before assuming it's broken.

Prevention

What to doWhy it matters
Turn on raw log archiving for every domain on day oneOnce a log rotates without archiving, that traffic data is gone for good
Restore real visitor IPs if you're behind CloudflareFixes unique-visitor counts and country stats going forward
Use GA for marketing, AWStats/Webalizer for server diagnosticsThey answer different questions — don't compare them directly
Check stats a day after any DNS/domain structure changeConfigs need a full cycle to catch up, not seconds

Frequently Asked Questions

Why does AWStats show way more visits than Google Analytics?

AWStats counts every request that hits your server — bots, crawlers, monitors, broken asset requests included. GA only counts JavaScript-executed pageviews from real browsers. A large gap between the two is normal, not a sign of a hacked or misconfigured site.

How often does cPanel update AWStats and Webalizer?

Stats are processed in a batch job tied to log rotation, typically once every 24 hours. They're not live dashboards — expect roughly a day's delay before new traffic shows up.

Can I force AWStats to update right now?

Yes. Open AWStats for the domain in cPanel and use the Update Now option, or if you have SSH access, run the awstats.pl script directly with -update against your domain's config.

Why does a domain I just added show zero historical traffic?

The stats config only starts tracking from the moment it's created for that domain. There's no retroactive data — if the domain had traffic before you added it to this account, it won't appear in AWStats.

Does using Cloudflare break my traffic stats?

It skews them rather than breaking them outright. Without a real-IP restoration module, your logs record Cloudflare's edge IPs instead of visitors' actual IPs, which throws off unique-visitor counts and geolocation. Installing Cloudflare's IP-restoration mod fixes this for all new log entries.