Install Pulse
Pulse records when AI systems access your site. There are two install modes — most people start with Standard and add Server mode when they want to catch raw-HTML crawlers like GPTBot.
Two kinds of AI traffic
ChatGPT browsing, Perplexity, agent sessions. They load your page like a browser → caught by Standard mode.
GPTBot, ClaudeBot, CCBot, Google-Extended, Bytespider. They fetch raw HTML and never run scripts → need Server mode.
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=1Look 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 value | Meaning | What to do |
|---|---|---|
written | Recorded successfully. | Nothing — it works. Refresh your dashboard. |
drop:not-a-bot | The 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-client | This client ID isn't registered to a site. | Re-copy the snippet from your dashboard — the ID is wrong or was removed. |
drop:bad-uuid | The client ID in the URL is malformed. | Re-copy the snippet exactly from your dashboard. |
drop:rate-limited | Too many pings from one source this hour (abuse protection). | Normal. It resets automatically — no action needed. |
drop:db-timeout | Our database was briefly slow, so this one event was dropped. | Rare and safe to ignore — the next hit records normally. |
write-error:CODE | A database write error occurred (the code is shown). | Email founder@aater.ai with the code if it persists. |
error:exception | An 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 Server mode 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 Standard mode catches those.
My site isn't on Cloudflare.
Standard mode still works everywhere and catches rendering agents. Server-side capture for other stacks (WordPress, Next.js, IIS) is rolling out — email founder@aater.ai to be notified for your stack.
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