The XML data format of the daily statistics files
The statistics are ordinary XML files, so you can read them with any programming language or text editor.
File layout
One file per day, named with the date in your website's time zone: data/<random>/visits/2026-10-25.xml. Every record is on its own line inside a <log> element, so the files are valid XML and can be read line by line.
<?xml version="1.0" encoding="UTF-8"?> <log> <v id="6adb1b2ec541a9" t="1792744238" ip="8.8.4.4" vh="d200e706ae5d" u="/?page=pricing" r="https://www.google.com/" cc="US" br="Chrome" bv="130" os="Windows" ov="10/11" dv="desktop" .../> <e id="6adb1b2ec541a9" tp="42000" sp="80" sw="1920" sh="1080" .../> </log>
Page view record <v>
| Attribute | Meaning |
|---|---|
| id | Unique id of the page view (time in hex + random) |
| t | Unix timestamp |
| ip | IP address (shortened if anonymization is on) |
| vh | Visitor hash (12 hex characters) |
| u | Page address: path and query string, without ignored tracking parameters |
| r | Referrer, full address |
| cc | Country code (ISO 3166), ?? if unknown |
| br, bv | Browser and major version |
| os, ov | Operating system and version |
| dv | Device type: desktop, mobile, tablet, tv, console |
| md | Phone or tablet model |
| lg, al | Primary browser language and the full Accept-Language value |
| ua | User agent string |
| ht | Host name that was requested |
| pr | Protocol: http or https |
| sf | Sec-Fetch-Site: none, same-origin, same-site, cross-site |
| dn | Do Not Track header |
| us, um, uc, ut, ux | utm_source, medium, campaign, term, content |
| ck | Name of the click ID found in the address (gclid, fbclid...) |
| cu | Sec-CH-UA client hint (brands) |
| sc | Bot score (0–100) when it was above zero but below the threshold |
| st | 404 for page-not-found records |
Beacon event <e>
Extra data for the page view with the same id, written by beacon.php:
| Attribute | Meaning |
|---|---|
| tp | Active time on the page in milliseconds |
| sp | Scroll depth in percent |
| hu | 1 = the visitor interacted with the page |
| sw, sh | Screen width and height |
| iw, ih | Browser window width and height |
| dp, cd | Pixel ratio and colour depth |
| tz, to | Time zone name and offset in minutes |
| bl | Browser language |
| tc, mm, cp, cn | Touch points, device memory, CPU cores, connection type |
| ti | Page title |
| wd, hl | 1 = webdriver / headless browser detected |
| dk | 1 = dark mode preferred |
Bot record <b>
In bots/<date>.xml: t time, ip, ua, u page, r referrer, cc country, sc score, rs comma-separated reasons, ty type.
Reading the files yourself
foreach (file('2026-10-25.xml') as $line) {
if (substr($line, 0, 3) !== '<v ') continue;
preg_match_all('/([a-z]+)="([^"]*)"/', $line, $m, PREG_SET_ORDER);
// $m now holds the attribute names and values of one page view
}
Do not edit the files while the website is running, and keep the closing </log> line. See also Your data: where statistics are stored, backup and deleting data.
Last updated