Analytics that lives where the bots live.
Google Analytics fires in the browser, so anything that never runs JavaScript - which is every crawler - is invisible to it. Viz hooks requests inside WordPress itself and classifies each one before your page even finishes loading.
Every request, sorted before the page finishes loading.
Viz identifies each request on arrival - no external calls, no JavaScript, about 2ms of total overhead. More than 60 named bots are recognized out of the box, and the catalog keeps growing as new crawlers appear.
Your stack has four places to count from. They disagree.
A request to your site passes through up to four observation points: the CDN edge, the web server, the application (WordPress), and the visitor's browser. Each sees a different subset of reality. The browser sees only visitors who execute JavaScript - no crawlers at all. The CDN sees everything but understands nothing about your site, and its analytics stay locked in another dashboard with its own bot taxonomy. Raw web-server logs see every request that reaches the origin but leave you to parse and classify them yourself, assuming your host exposes them at all.
Viz measures at the application layer - inside WordPress - which is the deepest point that still sees bots and the only one that knows your site's structure: which URL is a product, which is a post, who is logged in, what should be excluded. That context is what turns raw hits into questions you can actually answer, like “which AI companies read my pricing page this month?”
A full-page cache serving a bot at the edge can answer without WordPress ever running. Viz doesn't pretend otherwise - its blocking probe exists precisely to detect that case and hand you the edge rules to close it. If you want the deeper argument, read why Google Analytics can't see AI bots.
- crawled
- cited
- visited
- converted
What a week of honest data usually reveals.
Day one: the ratio
The first surprise is usually the split itself. Site owners who assumed bots were a rounding error discover automated traffic rivaling their human numbers - and that “direct traffic” they could never explain in GA4 starts making sense as the human-shaped residue of a machine-heavy reality.
Day three: the names
By midweek the leaderboard has structure. A handful of AI crawlers dominate, each with a different rhythm: training bots sweep the archive in long runs, retrieval bots spike on the pages people ask questions about, and uptime monitors tick like clocks. Once traffic has names, it has explanations.
Day seven: the decisions
A week of data is enough to see which sections machines value, whether anything is hitting you at abusive volume, and what a sensible retention window looks like for your traffic. The dashboard stops being a curiosity and starts producing the block, allow, and content decisions the rest of Viz exists to execute.
Everything inside wp-admin. Nothing to log into.
One Dashboard, four rollups
The main page is tabbed - AI Crawlability, AI Readability, AI Visibility, and the AI Readiness Audit - so the whole crawl-to-answer picture lives in one place, with a global date range across all of it.
Your real traffic mix
A donut of how much is human, AI, and search, plus a daily trend - watch AI crawl volume rise and fall, and spot the moment a new model vendor discovers your site.
AI Crawlability, per URL
Every URL ranked by request volume with its AI/human split and an AI-traffic-only filter. Pages your sitemap doesn't advertise are flagged - AI bots found them anyway.
Website Coverage
How much of your published content has been crawled at all in the period, and how much by AI bots specifically. The gap between the two is your invisible archive.
Top AI bots
A leaderboard of the bots hitting you hardest, so you know exactly who is consuming your content - and how often.
Request log
A filterable, paginated log of individual requests: URL, time, user agent, and classification. Audit any visit, human or machine.
The AI Readiness Audit.
One tab of the Dashboard grades your site's AI readiness and tells you what to fix first. Every plan includes the structural audit (Free runs it once per site, Lite can re-run it after a 7-day cooldown). Pro adds the full LLM-powered audit, up to 4 runs a month, with recommendations per AI engine - and its findings feed the AI Content Pipeline's topic research.
An Unknown bucket beats a confident guess.
User agents are self-reported, which means user-agent analytics is a trust exercise. The good news: the operators that matter most - OpenAI, Anthropic, Google, Perplexity, Meta - identify their crawlers plainly and publish documentation, because being identifiable is how they demonstrate robots.txt compliance. The bad news: scrapers with something to hide claim to be Chrome, and no user-agent tool on earth can catch all of them.
Viz's response to that reality is a design choice: never guess silently. A request either gets a precise, named label, or it lands in an explicit Unknown category you can see, trend, and investigate in the request log. A tool that claims a clean 100% classification rate is telling you about its assumptions, not your traffic.
See the humans AI sends you, too.
Viz captures the referral visits ChatGPT, Perplexity, and other assistants send you at the server, and credits the purchases, bookings and leads those visitors make to the assistant that sent them - no Google account needed. That is the ladder Viz reports on: crawl, answer, visit, convert, act. Connect Google Analytics 4 and Search Console (read-only) to fill in the middle with sessions and engagement. Crawl data tells you what the machines read; AI Conversions tells you what that reading earns you.
Local-first by design
Every event lands in your own WordPress database first. Cloud sync is a separate, explicit step - and Google OAuth tokens never touch your WordPress server at all.
Controls that fit your site
Toggle human logging, exclude admins, set proxy trust for accurate IPs behind Cloudflare, and control your retention window.
No bloat, ever
Plain PHP and vanilla JavaScript. No npm, no webpack, no external scripts on your pages. Your visitors never know it's there.
Analytics questions, answered plainly.
How is this different from looking at my server access logs?
Access logs contain the raw material but none of the answers. They are unclassified text lines, often rotated away after days, and on managed WordPress hosting frequently not accessible at all. Viz captures the same request-level truth inside WordPress, classifies it on arrival, and turns it into charts and a searchable log you can actually use.
Can a bot lie about being a browser?
Yes - a client can claim to be anything, and no analytics tool can catch a determined impostor. What matters is how a tool handles the ambiguity: Viz gives precise, named labels to bots that identify themselves, and puts everything else in an explicit Unknown bucket instead of silently guessing. The major AI operators identify themselves honestly, so the picture for the traffic that matters most is accurate.
What about requests my CDN serves from cache?
A full-page cache hit at the edge can be answered without WordPress running, and no WordPress plugin can observe a request that never reaches PHP. In practice, bots crawl broadly and cache hit rates on long-tail pages are low, so crawler activity shows up clearly. For blocking specifically, Viz's probe detects when a cache is serving blocked bots and gives you edge rules to close the gap.
Does Viz slow down my site?
The full pipeline adds roughly 2 milliseconds per request. There are no external calls in the request path and no third-party JavaScript on your pages (two small first-party inline scripts power AI Conversions and agent tools).
Who can see my analytics data?
It lands in your own WordPress database first, and stays there unless you explicitly opt into cloud sync. There is no external script, no ad network, and no third-party beacon on your pages.
Why do my Viz numbers disagree with GA4?
Because they are counting different things at different places, and both are right about what they see. GA4 counts sessions from browsers that ran its tag; Viz counts requests that reached your server, machines included. Expect Viz totals to be much higher and the human subset to track GA4 loosely, not exactly - ad blockers and consent banners remove humans from GA4 that Viz still sees, while cached pages can serve humans Viz never sees.