The one thing to understand first
That has one consequence, and it decides everything else: a tracking snippet pasted into your page records zero crawler visits. Not fewer, not less accurate - none at all. This is not a limitation we are working around; it is what a crawler is. So tracking has to happen on the server that answers the request. That is why setup means a WordPress plugin, an npm package or a one-line PHP config rather than a tag in your<head>.
What gets recorded
For a request that looks like it came from an AI client, your site sends:
Requests from ordinary browsers are never sent. The check that decides runs before anything else, so a normal page view costs your site nothing measurable.
IP addresses are hashed on arrival and never stored in raw form. They exist only long enough to answer “does this address belong to OpenAI?”
How a crawler gets verified
Anyone can putGPTBot in a User-Agent header. SnowSEO checks three independent things, in order of strength:
1
Signature
Some crawlers now sign their requests with a private key published under a domain they control. This is proof, not a claim, and it survives a crawler egressing through a proxy pool.
2
IP ownership
The address is checked against the CIDR ranges each provider publishes, refreshed daily. For providers that publish no ranges, a reverse-DNS lookup is confirmed in both directions.
3
User-Agent
Matched against documented crawler tokens only, never a vendor name appearing anywhere in the string. On its own this is the weakest signal, which is why an unverifiable request is labelled Unverified rather than trusted.
Setup
WordPress
Our plugin. No code, and the key is fetched for you.
Next.js
Middleware, a few lines.
Astro, Nuxt, SvelteKit
One middleware, plus a couple of lines per framework.
PHP
Laravel, Drupal, Craft or custom. One config line.
Getting the site key
Every install needs a site key, which tells SnowSEO which brand the traffic belongs to. Open Settings → Integrations → Beacon and generate one. It is shown once, so copy it then.On WordPress you can skip this. If the site is already connected to SnowSEO for publishing, the plugin fetches its own key - open SnowSEO → AI Crawlers in wp-admin and click Get site key from SnowSEO.
You do not have to send this to us
Both halves of beacon - the client that installs on your site and the server that receives from it - are MIT-licensed and open source. Point the endpoint at a collector you run and the hits go there instead, classified and verified by the same code this dashboard uses. You give up the dashboard, the maintained crawler dataset and attribution; you keep the data.Self-hosting
Run your own collector, or write one against the frozen wire protocol.

