Documentation · Pulse

Install Pulse

Pulse records when AI systems access your site. There are two install modes — most people start with Pulse Lite (the one-line snippet) and add the server hook to complete Pulse when they want to catch raw-HTML crawlers like GPTBot. What's the difference?

Two kinds of AI traffic

◉ Observed
Rendering agents

ChatGPT browsing, Perplexity, agent sessions. They load your page like a browser → caught by Pulse Lite (Standard mode).

Server-observed
Classic crawlers

GPTBot, ClaudeBot, CCBot, Google-Extended, Bytespider. They fetch raw HTML and never run scripts → need the server hook (completes Pulse).

Which install fits you

All three feed the same dashboard. The only difference is how much AI traffic each can see — and that comes down to one thing: does the install run in the browser (JavaScript) or on the server? Pulse's detection list covers 100+ AI crawler families (from the public ai.robots.txt registry), and only a handful — ChatGPT-User, Claude-User, Perplexity-User — execute JavaScript. The rest (GPTBot, ClaudeBot, CCBot, Bingbot, and dozens more) fetch raw HTML and never run a script, so a browser beacon is structurally blind to them — only a server-side install sees them.

GoodGTM or the 1-line snippet
~60 seconds · any site

Catches: Live-retrieval agents that render the page — ChatGPT-User, Claude-User, Perplexity-User.

Misses every training & indexing crawler (the bulk of AI traffic): they don’t run JavaScript, so a browser beacon — via GTM or a direct paste — can’t fire for them. Honest by design.

BetterWordPress plugin (server-side)
One-click from WP admin

Catches: Every AI HTTP request — including the training/indexing crawlers (GPTBot, ClaudeBot, CCBot, Bingbot) the JavaScript beacon can never see, because PHP runs on the server before any script.

Not on WordPress? The server hook / mu-plugin / Node middleware below do the same server-side capture on any stack.

BestCloudflare Worker (edge)
Deploy once at the edge

Catches: The most complete coverage Pulse offers — all known crawler families, plus MCP agent calls (the agentic-commerce channel) for Shopify and any MCP-fronted store.

What you’ll see

Within 24–72 hours of install (traffic-dependent), your dashboard fills with the AI agents that reached your site:

Claude-Webanswer-time
14 visits
Perplexity-Useranswer-time
6 visits
GPTBottraining
3 visits
ClaudeBottraining
2 visits

Illustrative. Empty for the first few hours is normal — agents arrive on their own schedule.

Sign in to get your install snippet

Your snippet is tied to your account, so activations land in your dashboard and you can watch live AI activity. Sign in to generate it.

Sign in to install Pulse →

Confirm it works (60 seconds)

Open this URL in your browser with DevTools → Network open, then click the request and read the Response Headers:

https://aater.ai/api/pulse/YOUR_CLIENT_ID?aater_verify=1&aater_debug=1

Look for the header x-aater-pulse. You want it to say written. Then refresh your dashboard — the test hit appears within seconds.

Reading the x-aater-pulse header

Add ?aater_debug=1 to any beacon URL and we tell you exactly what happened. This is your self-diagnosis tool — most questions answer themselves here.

Header valueMeaningWhat to do
writtenRecorded successfully.Nothing — it works. Refresh your dashboard.
drop:not-a-botThe user-agent isn't an AI bot (e.g. you opened the URL in a normal browser tab).Expected. Add ?aater_verify=1 to force a test write, or wait for a real crawler.
drop:unknown-clientThis client ID isn't registered to a site.Re-copy the snippet from your dashboard — the ID is wrong or was removed.
drop:bad-uuidThe client ID in the URL is malformed.Re-copy the snippet exactly from your dashboard.
drop:rate-limitedToo many pings from one source this hour (abuse protection).Normal. It resets automatically — no action needed.
drop:db-timeoutOur database was briefly slow, so this one event was dropped.Rare and safe to ignore — the next hit records normally.
write-error:CODEA database write error occurred (the code is shown).Email founder@aater.ai with the code if it persists.
error:exceptionAn unexpected error — the beacon still returned 204 so your page was never affected.Email founder@aater.ai if you see this repeatedly.

FAQ

I installed it but the dashboard is empty.

Most likely no AI bot has visited yet, or you tested from a browser (that returns drop:not-a-bot, by design). Run the verification URL below — if you see x-aater-pulse: written, the pipe works and you are just waiting for real traffic.

Will this slow my site down?

No. The browser snippet is a fire-and-forget image. The Cloudflare Worker reports to us with ctx.waitUntil() AFTER your page is already served. Both are non-blocking, and our endpoint always returns instantly (it even has a 5-second internal cutoff so a slow database can never stall a page).

Why do I need the server hook to catch GPTBot?

Classic crawlers like GPTBot, ClaudeBot and CCBot fetch your raw HTML and never execute JavaScript or load images — so the browser snippet never runs for them. Only a server-side hook (the Worker) sees their request. Rendering agents like ChatGPT browsing and Perplexity DO load the page, so Pulse Lite catches those.

My site isn't on Cloudflare.

You don’t need Cloudflare. On WordPress, drop in the mu-plugin above — it does the same server-side capture on any host (Apache, nginx, IIS, Plesk, shared). Pulse Lite also works everywhere for rendering agents. For Shopify, Next.js or other stacks, email founder@aater.ai.

What data do you collect?

The crawler's user-agent string, the path it requested, and your domain. No visitor names, emails, or personal data.

Still stuck? One human reads every message.

Email founder@aater.ai