---
title: I replaced Google Analytics with an analytics system I can talk to
description: "I removed GA from my sites and built my own analytics. No cookie banner, no dashboard safari. I ask Claude questions about my visitors and it answers. It also sees the AI bots GA never could, and on one ordinary day they made more requests to my site than every human combined."
date: 2026-08-07
tags: [ai, analytics, build-in-public, mcp, privacy]
url: "https://mahdif.com/blog/i-replaced-google-analytics-with-an-analytics-system-i-can-talk-to/"
---

# I replaced Google Analytics with an analytics system I can talk to

I removed GA from my sites and built my own analytics. No cookie banner, no dashboard safari. I ask Claude questions about my visitors and it answers. It also sees the AI bots GA never could, and on one ordinary day they made more requests to my site than every human combined.

On August 1 I removed Google Analytics from my website. Nothing replaced it, because the replacement was already running. It had been collecting alongside GA for weeks, and the numbers matched.

I built it myself. It is called Peeko, and it now runs the analytics for five of my sites: this one, [Weirdo](https://youweirdo.com), the iOS game I [put in the App Store this week](/blog/i-had-a-thought-at-the-gym-its-now-in-the-app-store/), and my product pages. One dashboard, a two kilobyte script per site, and a database I own. It holds this site's full history since July 7, more than 2,600 pageviews from about 1,080 visitors, most of them from the US.

This is not a post about why Google Analytics is bad. It is about what analytics looks like when you design it for how you actually work now.

## Why I left

Google Analytics answers questions I never ask, and makes me dig for the ones I do. Every visit to the dashboard was a small archaeology project. Add the cookie banner it forces on your visitors, and the fact that your traffic data lives in someone else's product, and the trade stopped making sense.

The privacy-friendly alternatives are good. But they are still someone else's product, and none of them were built for the thing that changed how I work this year.

## What I built instead

Peeko is cookieless by design. No banner, because there is nothing to consent to. It never stores an IP address. Visitors are counted with a hash that rotates daily, so even I cannot follow a person across days. It collects exactly what I need and nothing more.

<figure data-wide="full" style="margin:2.75rem 0;"><img src="/images/blog/i-replaced-google-analytics-with-an-analytics-system-i-can-talk-to/04-all-sites.jpg" alt="The all-sites view: Peeko, My Portfolio, Sondo, WEIRDO and Cloco, each with its own sparkline and visitor count." style="display:block;width:100%;height:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);"><figcaption style="margin-top:0.85rem;text-align:center;font-size:0.85rem;color:var(--muted-foreground);">Five sites, one dashboard. The game went up two days ago.</figcaption></figure>

Adding a site is a paste. When Weirdo went live on August 4, I created its site in Peeko at 19:11 and the first visit landed at 19:13. The game had analytics before it had a second visitor.

That part is table stakes. The interesting part is what sits on top.

<figure data-wide style="margin:2.75rem 0;"><img src="/images/blog/i-replaced-google-analytics-with-an-analytics-system-i-can-talk-to/01-overview.jpg" alt="The Peeko dashboard showing mahdif.com: 2.6k views, 1.1k visitors, 1.2k sessions, 63.1 percent bounce, a traffic curve from July 7 to August 6 with a spike on July 29, and a world map covering 73 countries." style="display:block;width:100%;height:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);"><figcaption style="margin-top:0.85rem;text-align:center;font-size:0.85rem;color:var(--muted-foreground);">The whole history of this site since July 7, in one screen.</figcaption></figure>

## I stopped opening the dashboard

Peeko has an MCP server. That means Claude Code, Claude Desktop, or any AI tool that speaks the protocol can connect to it and read my analytics directly.

So I do not click through charts anymore. I ask.

"How many visitors this week, and where did they come from?"
"Which pages hold people the longest?"
"Did the post I published yesterday actually drive anyone to the portfolio?"

The answer comes back in seconds, in plain language, with the numbers pulled live. The connection is read-only and scoped to my account. It cannot run SQL, and there is no IP for it to leak because none was ever stored.

Half my questions now get asked mid-session, while I am building something else. Analytics went from a place I visit to a colleague I interrupt. It even taps me on the shoulder: when people are on the site right now, the [little LED screen on my desk](/blog/i-hacked-a-birthday-gift-led-screen-into-an-ai-token-usage-monitor) lights up and tells me.

<figure data-wide style="margin:2.75rem 0;"><video autoplay muted loop playsinline controls preload="auto" poster="/images/blog/i-replaced-google-analytics-with-an-analytics-system-i-can-talk-to/videos/mcp-demo-poster.jpg" style="display:block;width:100%;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);"><source src="/images/blog/i-replaced-google-analytics-with-an-analytics-system-i-can-talk-to/videos/mcp-demo.mp4" type="video/mp4">A screen recording: I ask Claude Code whether humans and AI crawlers read the same pages on mahdif.com. It calls the Peeko MCP server, pulls both rankings, and draws them as one chart. Crawlers dominate robots.txt and sitemap.xml; humans dominate the blog posts.</video><figcaption style="margin-top:0.85rem;text-align:center;font-size:0.85rem;color:var(--muted-foreground);">One question, eight tool calls, seventeen seconds. I never opened the dashboard.</figcaption></figure>

## When I do open it, it shows the visit, not the person

The dashboard still exists, and I gave it the same care I would give a client's product, because the whole point of building your own tools is that nobody makes you settle.

Every human visit reads as a small story: where it came from, the pages it moved through, how long it stayed, on what device, in which country. Every visitor has a profile with a history but no identity. A journey, never a name. No IP was stored, and the hash that counted them expires at midnight.

The machines get the same treatment. Every bot has its own profile: when it first showed up, which pages it reads, what it came back for, how often it returns. Not a log line. A profile, laid out with the same care as the human ones.

Designing an analytics tool where the individual visit is legible but the individual person is unknowable was the most interesting design constraint in the project.

<figure data-wide style="margin:2.75rem 0;"><img src="/images/blog/i-replaced-google-analytics-with-an-analytics-system-i-can-talk-to/02-visitor-profile.jpg" alt="A visitor profile named Obsidian Seal: Canada, mobile, Safari, iOS, first seen August 2, last seen August 5, 4 visits and 4 views, with a journey showing the same blog post opened on four separate days." style="display:block;width:100%;height:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);"><figcaption style="margin-top:0.85rem;text-align:center;font-size:0.85rem;color:var(--muted-foreground);">Somebody in Canada came back to the same post four days running. I know that, and I will never know who they are.</figcaption></figure>

## The visitors Google Analytics has never seen

Here is the part I did not expect. An increasing share of my traffic is not human. Recruiters' assistants, research agents, the crawlers feeding every AI model. JavaScript analytics is structurally blind to all of it, because crawlers do not run JavaScript. GA has never counted a single one.

Peeko tracks them server side. I turned that on for mahdif.com two days ago, and the first full day of data was August 5.

That day, humans made 89 pageviews here. The bots made 232.

<figure data-wide style="margin:2.75rem 0;">
<div style="border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--card);">
<svg viewBox="0 0 1200 630" xmlns="http://www.w3.org/2000/svg" style="display:block;width:100%;height:auto" role="img" aria-label="Line chart of one day on mahdif.com, August 5 2026, by hour. AI bots made 232 hits in a steady stream around the clock, spiking to 40 at 10:00 and 60 at 19:00. Humans made 89 pageviews in bursts, peaking at 30 around 17:00, with long quiet stretches overnight while the bot line never stops.">
<defs>
<linearGradient id="pkline" x1="0" y1="0" x2="1200" y2="0" gradientUnits="userSpaceOnUse"><stop class="pk-s1" offset="0"/><stop class="pk-s2" offset="0.52"/><stop class="pk-s3" offset="1"/></linearGradient>
<linearGradient id="pkarea" x1="0" y1="118" x2="0" y2="556" gradientUnits="userSpaceOnUse"><stop class="pk-fill-a" offset="0"/><stop class="pk-fill-b" offset="1"/></linearGradient>
</defs>
<style>
.pk-teal{fill:#0d9488;stroke:#0d9488}.pk-indigo{fill:#4f46e5;stroke:#4f46e5}.pk-pink{fill:#e11d68;stroke:#e11d68}
.pk-s1{stop-color:#0d9488}.pk-s2{stop-color:#4f46e5}.pk-s3{stop-color:#e11d68}
.pk-fill-a{stop-color:#4f46e5;stop-opacity:0.14}.pk-fill-b{stop-color:#4f46e5;stop-opacity:0}
[data-theme="dark"] .pk-teal{fill:#2dd4bf;stroke:#2dd4bf}
[data-theme="dark"] .pk-indigo{fill:#818cf8;stroke:#818cf8}
[data-theme="dark"] .pk-pink{fill:#ff7591;stroke:#ff7591}
[data-theme="dark"] .pk-s1{stop-color:#2dd4bf}
[data-theme="dark"] .pk-s2{stop-color:#818cf8}
[data-theme="dark"] .pk-s3{stop-color:#ff7591}
[data-theme="dark"] .pk-fill-a{stop-color:#818cf8;stop-opacity:0.18}
[data-theme="dark"] .pk-fill-b{stop-color:#818cf8;stop-opacity:0}
.c1-bg{fill:var(--card)}.c1-eye{fill:var(--muted-foreground);font-family:var(--font-mono);font-size:16px;letter-spacing:3px}.c1-grid{stroke:var(--border);stroke-width:1}.c1-tick{fill:var(--muted-foreground);font-family:var(--font-mono);font-size:15px}.c1-lbl{fill:var(--foreground);font-family:var(--font-heading);font-size:18px;font-weight:500}.c1-sub{fill:var(--muted-foreground);font-family:var(--font-sans);font-size:13px}.c1-ico{fill:var(--foreground);stroke:none}.c1-ico-bot{fill:#e11d68}[data-theme="dark"] .c1-ico-bot{fill:#ff7591}</style>
<rect class="c1-bg" width="1200" height="630"/>
<text class="c1-eye" x="84" y="64">ONE DAY ON MAHDIF.COM &#183; AUGUST 5, 2026 &#183; BY HOUR</text>
<line class="c1-grid" x1="84" y1="556.0" x2="1154" y2="556.0"/><text class="c1-tick" x="70" y="561.0" text-anchor="end">0</text><line class="c1-grid" x1="84" y1="419.1" x2="1154" y2="419.1"/><text class="c1-tick" x="70" y="424.1" text-anchor="end">20</text><line class="c1-grid" x1="84" y1="282.2" x2="1154" y2="282.2"/><text class="c1-tick" x="70" y="287.2" text-anchor="end">40</text><line class="c1-grid" x1="84" y1="145.4" x2="1154" y2="145.4"/><text class="c1-tick" x="70" y="150.4" text-anchor="end">60</text><text class="c1-tick" x="84.0" y="590" text-anchor="middle">00:00</text><text class="c1-tick" x="363.1" y="590" text-anchor="middle">06:00</text><text class="c1-tick" x="642.3" y="590" text-anchor="middle">12:00</text><text class="c1-tick" x="921.4" y="590" text-anchor="middle">18:00</text><text class="c1-tick" x="1154.0" y="590" text-anchor="middle">23:00</text>
<path d="M84.0,556.0 C99.5,546.9 115.0,535.5 130.5,528.6 C146.0,521.8 161.5,514.9 177.0,514.9 C192.6,514.9 208.1,514.9 223.6,514.9 C239.1,514.9 254.6,494.4 270.1,494.4 C285.6,494.4 301.1,521.8 316.6,521.8 C332.1,521.8 347.6,514.9 363.1,514.9 C378.6,514.9 394.1,521.8 409.7,521.8 C425.2,521.8 440.7,509.5 456.2,501.2 C471.7,493.0 487.2,500.2 502.7,467.0 C518.2,433.8 533.7,282.2 549.2,282.2 C564.7,282.2 580.2,501.2 595.7,514.9 C611.2,528.6 626.8,528.6 642.3,528.6 C657.8,528.6 673.3,525.2 688.8,521.8 C704.3,518.4 719.8,508.1 735.3,508.1 C750.8,508.1 766.3,535.5 781.8,535.5 C797.3,535.5 812.8,533.2 828.3,528.6 C843.9,524.1 859.4,508.1 874.9,508.1 C890.4,508.1 905.9,528.6 921.4,528.6 C936.9,528.6 952.4,145.4 967.9,145.4 C983.4,145.4 998.9,467.0 1014.4,494.4 C1029.9,521.8 1045.4,521.8 1061.0,521.8 C1076.5,521.8 1092.0,512.7 1107.5,508.1 C1123.0,503.5 1138.5,499.0 1154.0,494.4 L1154.0,556.0 L84.0,556.0 Z" fill="url(#pkarea)"/>
<path d="M84.0,556.0 C99.5,546.9 115.0,535.5 130.5,528.6 C146.0,521.8 161.5,514.9 177.0,514.9 C192.6,514.9 208.1,514.9 223.6,514.9 C239.1,514.9 254.6,494.4 270.1,494.4 C285.6,494.4 301.1,521.8 316.6,521.8 C332.1,521.8 347.6,514.9 363.1,514.9 C378.6,514.9 394.1,521.8 409.7,521.8 C425.2,521.8 440.7,509.5 456.2,501.2 C471.7,493.0 487.2,500.2 502.7,467.0 C518.2,433.8 533.7,282.2 549.2,282.2 C564.7,282.2 580.2,501.2 595.7,514.9 C611.2,528.6 626.8,528.6 642.3,528.6 C657.8,528.6 673.3,525.2 688.8,521.8 C704.3,518.4 719.8,508.1 735.3,508.1 C750.8,508.1 766.3,535.5 781.8,535.5 C797.3,535.5 812.8,533.2 828.3,528.6 C843.9,524.1 859.4,508.1 874.9,508.1 C890.4,508.1 905.9,528.6 921.4,528.6 C936.9,528.6 952.4,145.4 967.9,145.4 C983.4,145.4 998.9,467.0 1014.4,494.4 C1029.9,521.8 1045.4,521.8 1061.0,521.8 C1076.5,521.8 1092.0,512.7 1107.5,508.1 C1123.0,503.5 1138.5,499.0 1154.0,494.4" fill="none" stroke="url(#pkline)" stroke-width="3" stroke-linecap="round"/>
<path d="M84.0,487.6 C99.5,510.4 115.0,556.0 130.5,556.0 C146.0,556.0 161.5,552.6 177.0,549.2 C192.6,545.7 208.1,544.6 223.6,535.5 C239.1,526.3 254.6,494.4 270.1,494.4 C285.6,494.4 301.1,549.2 316.6,549.2 C332.1,549.2 347.6,542.3 363.1,542.3 C378.6,542.3 394.1,556.0 409.7,556.0 C425.2,556.0 440.7,556.0 456.2,556.0 C471.7,556.0 487.2,556.0 502.7,556.0 C518.2,556.0 533.7,556.0 549.2,556.0 C564.7,556.0 580.2,549.2 595.7,549.2 C611.2,549.2 626.8,549.2 642.3,549.2 C657.8,549.2 673.3,556.0 688.8,556.0 C704.3,556.0 719.8,549.2 735.3,549.2 C750.8,549.2 766.3,549.2 781.8,549.2 C797.3,549.2 812.8,549.2 828.3,549.2 C843.9,549.2 859.4,350.7 874.9,350.7 C890.4,350.7 905.9,475.0 921.4,508.1 C936.9,541.2 952.4,549.2 967.9,549.2 C983.4,549.2 998.9,508.1 1014.4,508.1 C1029.9,508.1 1045.4,508.1 1061.0,508.1 C1076.5,508.1 1092.0,556.0 1107.5,556.0 C1123.0,556.0 1138.5,528.6 1154.0,514.9" fill="none" stroke="var(--foreground)" stroke-width="2.5" stroke-linecap="round"/>
<circle class="pk-pink" cx="967.9" cy="145.4" r="5" stroke="var(--card)" stroke-width="2"/>
<circle cx="874.9" cy="350.7" r="5" fill="var(--foreground)" stroke="var(--card)" stroke-width="2"/>
<g class="c1-ico c1-ico-bot" transform="translate(789.3,107.0) scale(0.06641)"><path d="M200,48H136V16a8,8,0,0,0-16,0V48H56A32,32,0,0,0,24,80V192a32,32,0,0,0,32,32H200a32,32,0,0,0,32-32V80A32,32,0,0,0,200,48ZM172,96a12,12,0,1,1-12,12A12,12,0,0,1,172,96ZM96,184H80a16,16,0,0,1,0-32H96ZM84,120a12,12,0,1,1,12-12A12,12,0,0,1,84,120Zm60,64H112V152h32Zm32,0H160V152h16a16,16,0,0,1,0,32Z"/></g><text class="c1-lbl" x="951.9" y="121.4" text-anchor="end">AI bots &#183; 232 hits</text>
<text class="c1-sub" x="951.9" y="143.4" text-anchor="end">a steady stream, all 24 hours</text>
<g class="c1-ico" transform="translate(642.1,301.8) scale(0.06641)"><path d="M230.93,220a8,8,0,0,1-6.93,4H32a8,8,0,0,1-6.92-12c15.23-26.33,38.7-45.21,66.09-54.16a72,72,0,1,1,73.66,0c27.39,8.95,50.86,27.83,66.09,54.16A8,8,0,0,1,230.93,220Z"/></g><text class="c1-lbl" x="862.9" y="316.7" text-anchor="end">Humans &#183; 89 pageviews</text>
<text class="c1-sub" x="862.9" y="336.7" text-anchor="end">bursts, then sleep</text>
</svg>
</div>
<figcaption style="margin-top:0.85rem;text-align:center;font-size:0.85rem;color:var(--muted-foreground);">August 5, hour by hour. More machine traffic than human, around the clock.</figcaption>
</figure>

More machine than human, on an ordinary Wednesday, and until this week I had no instrument that could see it. Thirteen different crawlers, run by ten companies.

Before that number gets away from me: about a third of those bot hits were robots.txt and sitemap.xml, which is bookkeeping, not reading. Strip those out and it is 151 real page reads against 89 humans. Still more machine than human, on a site I wrote for humans.

<figure data-wide style="margin:2.75rem 0;">
<div style="border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--card);">
<svg viewBox="0 0 1200 684" xmlns="http://www.w3.org/2000/svg" style="display:block;width:100%;height:auto" role="img" aria-label="Ranked bar chart of the 13 AI and search bots that hit mahdif.com on August 5, 2026, colored by purpose. Training crawlers account for 164 hits, search indexers 65, and live answer fetches 3. GoogleOther leads with 88, then Googlebot 44, Anthropic ClaudeBot 40, Bingbot 18, meta-externalagent 12, Bytespider 9, CCBot 8, Amazonbot 3, Applebot 3, OAI-SearchBot 3, ChatGPT-User 2, DuckAssistBot 1, GPTBot 1.">
<style>
.pk-teal{fill:#0d9488;stroke:#0d9488}.pk-indigo{fill:#4f46e5;stroke:#4f46e5}.pk-pink{fill:#e11d68;stroke:#e11d68}
.pk-s1{stop-color:#0d9488}.pk-s2{stop-color:#4f46e5}.pk-s3{stop-color:#e11d68}
.pk-fill-a{stop-color:#4f46e5;stop-opacity:0.14}.pk-fill-b{stop-color:#4f46e5;stop-opacity:0}
[data-theme="dark"] .pk-teal{fill:#2dd4bf;stroke:#2dd4bf}
[data-theme="dark"] .pk-indigo{fill:#818cf8;stroke:#818cf8}
[data-theme="dark"] .pk-pink{fill:#ff7591;stroke:#ff7591}
[data-theme="dark"] .pk-s1{stop-color:#2dd4bf}
[data-theme="dark"] .pk-s2{stop-color:#818cf8}
[data-theme="dark"] .pk-s3{stop-color:#ff7591}
[data-theme="dark"] .pk-fill-a{stop-color:#818cf8;stop-opacity:0.18}
[data-theme="dark"] .pk-fill-b{stop-color:#818cf8;stop-opacity:0}
.c2-bg{fill:var(--card)}.c2-eye{fill:var(--muted-foreground);font-family:var(--font-mono);font-size:16px;letter-spacing:3px}.c2-leg{fill:var(--muted-foreground);font-family:var(--font-sans);font-size:15px}.c2-name{fill:var(--foreground);font-family:var(--font-sans);font-size:18px;font-weight:600}.c2-logo{fill:var(--foreground);opacity:0.82}.c2-mono-b{fill:none;stroke:var(--border);stroke-width:1.2}.c2-mono{fill:var(--muted-foreground);font-family:var(--font-sans);font-size:11px;font-weight:600}.c2-prov{fill:var(--muted-foreground);font-weight:400;font-size:15px}.c2-n{fill:var(--foreground);font-family:var(--font-mono);font-size:16px}</style>
<rect class="c2-bg" width="1200" height="684"/>
<text class="c2-eye" x="84" y="62">WHO READ MAHDIF.COM &#183; AUGUST 5, 2026</text>
<text class="c2-eye" x="1136" y="62" text-anchor="end">232 HITS &#183; 13 BOTS &#183; 10 COMPANIES</text>
<rect class="pk-indigo" x="406" y="86" width="11" height="11" rx="2.5"/><text class="c2-leg" x="425" y="96">training the models &#183; 164</text><rect class="pk-teal" x="629.8" y="86" width="11" height="11" rx="2.5"/><text class="c2-leg" x="648.8" y="96">search index &#183; 65</text><rect class="pk-pink" x="788.1999999999999" y="86" width="11" height="11" rx="2.5"/><text class="c2-leg" x="807.1999999999999" y="96">answering someone live &#183; 3</text><g class="c2-logo" transform="translate(84.0,149.0) scale(0.79167) translate(-0.0,-0.0)"><path d="M23 12.245c0-.905-.075-1.565-.236-2.25h-10.54v4.083h6.186c-.124 1.014-.797 2.542-2.294 3.569l-.021.136 3.332 2.53.23.022C21.779 18.417 23 15.593 23 12.245z" fill-rule="evenodd"/><path d="M12.225 23c3.03 0 5.574-.978 7.433-2.665l-3.542-2.688c-.948.648-2.22 1.1-3.891 1.1a6.745 6.745 0 01-6.386-4.572l-.132.011-3.465 2.628-.045.124C4.043 20.531 7.835 23 12.225 23z" fill-rule="evenodd"/><path d="M5.84 14.175A6.65 6.65 0 015.463 12c0-.758.138-1.491.361-2.175l-.006-.147-3.508-2.67-.115.054A10.831 10.831 0 001 12c0 1.772.436 3.447 1.197 4.938l3.642-2.763z" fill-rule="evenodd"/><path d="M12.225 5.253c2.108 0 3.529.892 4.34 1.638l3.167-3.031C17.787 2.088 15.255 1 12.225 1 7.834 1 4.043 3.469 2.197 7.062l3.63 2.763a6.77 6.77 0 016.398-4.572z" fill-rule="evenodd"/></g><text class="c2-name" x="114" y="165">GoogleOther<tspan class="c2-prov"> &#183; Google</tspan></text><path class="pk-indigo" d="M406,150 h556.0 a4,4 0 0 1 4,4 v10 a4,4 0 0 1 -4,4 h-556.0 Z"/><text class="c2-n" x="980.0" y="165">88</text><g class="c2-logo" transform="translate(84.0,187.0) scale(0.79167) translate(-0.0,-0.0)"><path d="M23 12.245c0-.905-.075-1.565-.236-2.25h-10.54v4.083h6.186c-.124 1.014-.797 2.542-2.294 3.569l-.021.136 3.332 2.53.23.022C21.779 18.417 23 15.593 23 12.245z" fill-rule="evenodd"/><path d="M12.225 23c3.03 0 5.574-.978 7.433-2.665l-3.542-2.688c-.948.648-2.22 1.1-3.891 1.1a6.745 6.745 0 01-6.386-4.572l-.132.011-3.465 2.628-.045.124C4.043 20.531 7.835 23 12.225 23z" fill-rule="evenodd"/><path d="M5.84 14.175A6.65 6.65 0 015.463 12c0-.758.138-1.491.361-2.175l-.006-.147-3.508-2.67-.115.054A10.831 10.831 0 001 12c0 1.772.436 3.447 1.197 4.938l3.642-2.763z" fill-rule="evenodd"/><path d="M12.225 5.253c2.108 0 3.529.892 4.34 1.638l3.167-3.031C17.787 2.088 15.255 1 12.225 1 7.834 1 4.043 3.469 2.197 7.062l3.63 2.763a6.77 6.77 0 016.398-4.572z" fill-rule="evenodd"/></g><text class="c2-name" x="114" y="203">Googlebot<tspan class="c2-prov"> &#183; Google</tspan></text><path class="pk-teal" d="M406,188 h276.0 a4,4 0 0 1 4,4 v10 a4,4 0 0 1 -4,4 h-276.0 Z"/><text class="c2-n" x="700.0" y="203">44</text><g class="c2-logo" transform="translate(84.0,225.0) scale(0.79167) translate(-0.0,-0.0)"><path d="M13.827 3.52h3.603L24 20h-3.603l-6.57-16.48zm-7.258 0h3.767L16.906 20h-3.674l-1.343-3.461H5.017l-1.344 3.46H0L6.57 3.522zm4.132 9.959L8.453 7.687 6.205 13.48H10.7z" fill-rule="evenodd"/></g><text class="c2-name" x="114" y="241">ClaudeBot<tspan class="c2-prov"> &#183; Anthropic</tspan></text><path class="pk-indigo" d="M406,226 h250.5 a4,4 0 0 1 4,4 v10 a4,4 0 0 1 -4,4 h-250.5 Z"/><text class="c2-n" x="674.5" y="241">40</text><g class="c2-logo" transform="translate(84.0,263.0) scale(0.79167) translate(-0.0,-0.0)"><path d="M11.49 2H2v9.492h9.492V2h-.002z" fill-rule="evenodd"/><path d="M22 2h-9.492v9.492H22V2z" fill-rule="evenodd"/><path d="M11.49 12.508H2V22h9.492v-9.492h-.002z" fill-rule="evenodd"/><path d="M22 12.508h-9.492V22H22v-9.492z" fill-rule="evenodd"/></g><text class="c2-name" x="114" y="279">Bingbot<tspan class="c2-prov"> &#183; Microsoft</tspan></text><path class="pk-teal" d="M406,264 h110.5 a4,4 0 0 1 4,4 v10 a4,4 0 0 1 -4,4 h-110.5 Z"/><text class="c2-n" x="534.5" y="279">18</text><g class="c2-logo" transform="translate(84.0,301.0) scale(0.79167) translate(-0.0,-0.0)"><path d="M6.897 4c1.915 0 3.516.932 5.43 3.376l.282-.373c.19-.246.383-.484.58-.71l.313-.35C14.588 4.788 15.792 4 17.225 4c1.273 0 2.469.557 3.491 1.516l.218.213c1.73 1.765 2.917 4.71 3.053 8.026l.011.392.002.25c0 1.501-.28 2.759-.818 3.7l-.14.23-.108.153c-.301.42-.664.758-1.086 1.009l-.265.142-.087.04a3.493 3.493 0 01-.302.118 4.117 4.117 0 01-1.33.208c-.524 0-.996-.067-1.438-.215-.614-.204-1.163-.56-1.726-1.116l-.227-.235c-.753-.812-1.534-1.976-2.493-3.586l-1.43-2.41-.544-.895-1.766 3.13-.343.592C7.597 19.156 6.227 20 4.356 20c-1.21 0-2.205-.42-2.936-1.182l-.168-.184c-.484-.573-.837-1.311-1.043-2.189l-.067-.32a8.69 8.69 0 01-.136-1.288L0 14.468c.002-.745.06-1.49.174-2.23l.1-.573c.298-1.53.828-2.958 1.536-4.157l.209-.34c1.177-1.83 2.789-3.053 4.615-3.16L6.897 4zm-.033 2.615l-.201.01c-.83.083-1.606.673-2.252 1.577l-.138.199-.01.018c-.67 1.017-1.185 2.378-1.456 3.845l-.004.022a12.591 12.591 0 00-.207 2.254l.002.188c.004.18.017.36.04.54l.043.291c.092.503.257.908.486 1.208l.117.137c.303.323.698.492 1.17.492 1.1 0 1.796-.676 3.696-3.641l2.175-3.4.454-.701-.139-.198C9.11 7.3 8.084 6.616 6.864 6.616zm10.196-.552l-.176.007c-.635.048-1.223.359-1.82.933l-.196.198c-.439.462-.887 1.064-1.367 1.807l.266.398c.18.274.362.56.55.858l.293.475 1.396 2.335.695 1.114c.583.926 1.03 1.6 1.408 2.082l.213.262c.282.326.529.54.777.673l.102.05c.227.1.457.138.718.138.176.002.35-.023.518-.073.338-.104.61-.32.813-.637l.095-.163.077-.162c.194-.459.29-1.06.29-1.785l-.006-.449c-.08-2.871-.938-5.372-2.2-6.798l-.176-.189c-.67-.683-1.444-1.074-2.27-1.074z" fill-rule="evenodd"/></g><text class="c2-name" x="114" y="317">meta-externalagent<tspan class="c2-prov"> &#183; Meta</tspan></text><path class="pk-indigo" d="M406,302 h72.4 a4,4 0 0 1 4,4 v10 a4,4 0 0 1 -4,4 h-72.4 Z"/><text class="c2-n" x="496.4" y="317">12</text><g class="c2-logo" transform="translate(84.0,339.0) scale(0.79167) translate(-0.0,-0.0)"><path d="M14.944 18.587l-1.704-.445V10.01l1.824-.462c1-.254 1.84-.461 1.88-.453.032 0 .056 2.235.056 4.972v4.973l-.176-.008c-.104 0-.952-.207-1.88-.446z" fill-rule="evenodd"/><path d="M7 16.542c0-2.736.024-4.98.064-4.98.032-.008.872.2 1.88.454l1.816.461-.016 4.05-.024 4.049-1.632.422c-.896.23-1.736.445-1.856.469L7 21.523v-4.98z" fill-rule="evenodd"/><path d="M19.24 12.477c0-9.03.008-9.515.144-9.475.072.024.784.207 1.576.406.792.207 1.576.405 1.744.445l.296.08-.016 8.56-.024 8.568-1.624.414c-.888.23-1.728.437-1.856.47l-.24.055v-9.523z" fill-rule="evenodd"/><path d="M1 12.509c0-4.678.024-8.505.064-8.505.032 0 .872.207 1.872.454l1.824.461v7.582c0 4.16-.016 7.574-.032 7.574-.024 0-.872.215-1.88.47L1 21.013v-8.505z" fill-rule="evenodd"/></g><text class="c2-name" x="114" y="355">Bytespider<tspan class="c2-prov"> &#183; ByteDance</tspan></text><path class="pk-indigo" d="M406,340 h53.3 a4,4 0 0 1 4,4 v10 a4,4 0 0 1 -4,4 h-53.3 Z"/><text class="c2-n" x="477.3" y="355">9</text><rect class="c2-mono-b" x="84" y="377" width="19" height="19" rx="4.5"/><text class="c2-mono" x="93.5" y="390.7" text-anchor="middle">C</text><text class="c2-name" x="114" y="393">CCBot<tspan class="c2-prov"> &#183; Common Crawl</tspan></text><path class="pk-indigo" d="M406,378 h46.9 a4,4 0 0 1 4,4 v10 a4,4 0 0 1 -4,4 h-46.9 Z"/><text class="c2-n" x="470.9" y="393">8</text><rect class="c2-mono-b" x="84" y="415" width="19" height="19" rx="4.5"/><text class="c2-mono" x="93.5" y="428.7" text-anchor="middle">A</text><text class="c2-name" x="114" y="431">Amazonbot<tspan class="c2-prov"> &#183; Amazon</tspan></text><path class="pk-indigo" d="M406,416 h15.1 a4,4 0 0 1 4,4 v10 a4,4 0 0 1 -4,4 h-15.1 Z"/><text class="c2-n" x="439.1" y="431">3</text><g class="c2-logo" transform="translate(84.0,453.0) scale(0.79167) translate(-0.0,-0.0)"><path d="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"/></g><text class="c2-name" x="114" y="469">Applebot<tspan class="c2-prov"> &#183; Apple</tspan></text><path class="pk-indigo" d="M406,454 h15.1 a4,4 0 0 1 4,4 v10 a4,4 0 0 1 -4,4 h-15.1 Z"/><text class="c2-n" x="439.1" y="469">3</text><g class="c2-logo" transform="translate(84.0,491.0) scale(0.79167) translate(-0.0,-0.0)"><path d="M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z" fill-rule="evenodd"/></g><text class="c2-name" x="114" y="507">OAI-SearchBot<tspan class="c2-prov"> &#183; OpenAI</tspan></text><path class="pk-teal" d="M406,492 h15.1 a4,4 0 0 1 4,4 v10 a4,4 0 0 1 -4,4 h-15.1 Z"/><text class="c2-n" x="439.1" y="507">3</text><g class="c2-logo" transform="translate(84.0,529.0) scale(0.79167) translate(-0.0,-0.0)"><path d="M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z" fill-rule="evenodd"/></g><text class="c2-name" x="114" y="545">ChatGPT-User<tspan class="c2-prov"> &#183; OpenAI</tspan></text><path class="pk-pink" d="M406,530 h8.7 a4,4 0 0 1 4,4 v10 a4,4 0 0 1 -4,4 h-8.7 Z"/><text class="c2-n" x="432.7" y="545">2</text><g class="c2-logo" transform="translate(84.0,567.0) scale(0.79167) translate(-0.0,-0.0)"><path d="M12 0C5.37 0 0 5.37 0 12s5.37 12 12 12 12-5.37 12-12S18.63 0 12 0zm0 .984C18.083.984 23.016 5.916 23.016 12S18.084 23.016 12 23.016.984 18.084.984 12C.984 5.917 5.916.984 12 .984zm0 .938C6.434 1.922 1.922 6.434 1.922 12c0 4.437 2.867 8.205 6.85 9.55-.237-.82-.776-2.753-1.6-6.052-1.184-4.741-2.064-8.606 2.379-9.813.047-.011.064-.064.03-.093-.514-.467-1.382-.548-2.233-.38a.06.06 0 0 1-.07-.058c0-.011 0-.023.011-.035.205-.286.572-.507.822-.64a1.843 1.843 0 0 0-.607-.335c-.059-.022-.059-.12-.006-.144.006-.006.012-.012.024-.012 1.749-.233 3.586.292 4.49 1.448.011.011.023.017.035.023 2.968.635 3.509 4.837 3.328 5.998a9.607 9.607 0 0 0 2.346-.576c.746-.286 1.008-.222 1.101-.053.1.193-.018.513-.28.81-.496.567-1.393 1.01-2.974 1.137-.546.044-1.029.024-1.445.006-.789-.035-1.339-.059-1.633.39-.192.298-.041.998 1.487 1.22 1.09.157 2.078.047 2.798-.034.643-.07 1.073-.118 1.172.069.21.402-.996 1.207-3.066 1.224-.158 0-.315-.006-.467-.011-1.283-.065-2.227-.414-2.816-.735a.094.094 0 0 1-.035-.017c-.105-.059-.31.045-.188.267.07.134.444.478 1.004.776-.058.466.087 1.184.338 2l.088-.016c.041-.009.087-.019.134-.025.507-.082.775.012.926.175.717-.536 1.913-1.294 2.03-1.154.583.694.66 2.332.53 2.99-.004.012-.017.024-.04.035-.274.117-1.783-.296-1.783-.511-.059-1.075-.26-1.173-.493-1.225h-.156c.006.006.012.018.018.03l.052.12c.093.257.24 1.063.13 1.26-.112.199-.835.297-1.284.303-.443.006-.543-.158-.637-.408-.07-.204-.103-.675-.103-.95a.857.857 0 0 1 .012-.216c-.134.058-.333.193-.397.281-.017.262-.017.682.123 1.149.07.221-1.518 1.164-1.74.99-.227-.181-.634-1.952-.459-2.67-.187.017-.338.075-.42.191-.367.508.093 2.933.582 3.248.257.169 1.54-.553 2.176-1.095.105.145.305.158.553.158.326-.012.782-.06 1.103-.158.192.45.423.972.613 1.388 4.47-1.032 7.803-5.037 7.803-9.82 0-5.566-4.512-10.078-10.078-10.078zm1.791 5.646c-.42 0-.678.146-.795.332-.023.047.047.094.094.07.14-.075.357-.161.701-.156.328.006.516.09.67.159l.023.01c.041.017.088-.03.059-.065-.134-.18-.332-.35-.752-.35zm-5.078.198a1.24 1.24 0 0 0-.522.082c-.454.169-.67.526-.67.76 0 .051.112.057.141.011.081-.123.21-.31.617-.478.408-.17.73-.146.951-.094.047.012.083-.041.041-.07a.989.989 0 0 0-.558-.211zm5.434 1.423a.651.651 0 0 0-.655.647.652.652 0 0 0 1.307 0 .646.646 0 0 0-.652-.647zm.283.262h.008a.17.17 0 0 1 .17.17c0 .093-.077.17-.17.17a.17.17 0 0 1-.17-.17c0-.09.072-.165.162-.17zm-5.358.076a.752.752 0 0 0-.758.758c0 .42.338.758.758.758s.758-.337.758-.758a.756.756 0 0 0-.758-.758zm.328.303h.01c.112 0 .2.089.2.2 0 .11-.088.197-.2.197a.195.195 0 0 1-.197-.198c0-.107.082-.194.187-.199z"/></g><text class="c2-name" x="114" y="583">DuckAssistBot<tspan class="c2-prov"> &#183; DuckDuckGo</tspan></text><path class="pk-pink" d="M406,568 h2.4 a4,4 0 0 1 4,4 v10 a4,4 0 0 1 -4,4 h-2.4 Z"/><text class="c2-n" x="426.4" y="583">1</text><g class="c2-logo" transform="translate(84.0,605.0) scale(0.79167) translate(-0.0,-0.0)"><path d="M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z" fill-rule="evenodd"/></g><text class="c2-name" x="114" y="621">GPTBot<tspan class="c2-prov"> &#183; OpenAI</tspan></text><path class="pk-indigo" d="M406,606 h2.4 a4,4 0 0 1 4,4 v10 a4,4 0 0 1 -4,4 h-2.4 Z"/><text class="c2-n" x="426.4" y="621">1</text>
</svg>
</div>
<figcaption style="margin-top:0.85rem;text-align:center;font-size:0.85rem;color:var(--muted-foreground);">One day of server-side bot tracking, counting every request. A third of these never touched a page. Three were an AI reading one to answer somebody in real time.</figcaption>
</figure>

Some details I keep coming back to. Anthropic's ClaudeBot hit the site 40 times, but only ten of those were pages. The other thirty were robots.txt and the sitemap, checked over and over. Bing's crawler, with fewer than half the hits, actually read more of my writing. Twice, someone asked ChatGPT a question and it came to read my homepage to answer them. And the essay I published that morning was picked up by crawlers nine times before the day was out.

I rebuilt this site agent-first a few weeks ago. This is the instrument panel for that bet.

<figure data-wide="full" style="margin:2.75rem 0;"><img src="/images/blog/i-replaced-google-analytics-with-an-analytics-system-i-can-talk-to/03-ai-claudebot.jpg" alt="The AI page listing thirteen crawlers with their company logos, with ClaudeBot selected showing its user agent string and every page it read, including the essay published that morning." style="display:block;width:100%;height:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);"><figcaption style="margin-top:0.85rem;text-align:center;font-size:0.85rem;color:var(--muted-foreground);">Every crawler gets a profile too. This is ClaudeBot's, over a seven day window.</figcaption></figure>

## Where it reads lower, honestly

Peeko shows about ten percent fewer visitors than my old first-party setup did, because ad blockers drop third-party trackers and I have not worked around that yet. I take accurate-but-lower over inflated.

And it does far less than Google Analytics. No attribution modeling, no audiences, no funnels. If your job is ad spend, this is not your tool. It is deliberately small: it answers a builder's questions about real visitors, and now it answers them in conversation.

## The reversal

For fifteen years, analytics meant a dashboard you visit to feel informed. The dashboard was the product.

It is not anymore. The answer is the product. The dashboard is just one way of looking at it, and these days it is not even my main one.
