ChatGPT, Claude, Perplexity and Gemini read your website to answer other
people’s questions. None of them run JavaScript, so ordinary analytics never
records those visits. They are invisible in Google Analytics.
Cleo for WordPress records them on the server, where they can be seen, and
reports them to your Cleo dashboard. You find out which AI systems read which of
your pages, and how often.
You need a Cleo account
This plugin is a companion to the Cleo service at https://regencleo.ai/ and
does nothing on its own. It sends nothing anywhere until you paste a site key
from your Cleo dashboard into its settings screen. Pasting that key is what
switches it on. See External services below for exactly what is sent.
What it does
Three jobs, from one site key:
-
Reports AI crawler visits. Each visit is classified as an answer engine
fetching a page for someone waiting on a reply, a search crawler building an
index, or a training crawler collecting text. Those three mean very different
things, so they are counted separately. -
Installs your Cleo visitor tag. No pasting scripts into a theme that a
theme update will overwrite. If you later move tracking onto your own
subdomain, the tag follows automatically. -
Places CLEO lead forms. The
[cleo_form id="..."]shortcode and the
CLEO form block put a form you built in Cleo on any page.
Built not to break your site
- No network request is made while a visitor is waiting. Each visit writes one
row to a local table; everything else happens on a scheduled task. - The local queue is capped, so a Cleo outage cannot grow your database.
- After repeated failures it stops trying for a while, then resumes.
- Every hook is wrapped so that an unexpected error cannot take your site down.
Page caching
If your site serves cached pages, WordPress does not run for those visits and
they cannot be counted. Cleo asks your caching plugin to skip the cache for AI
crawlers specifically, which recovers most of them. Where your host caches above
WordPress, as WP Engine and Kinsta do, that is not possible from inside a
plugin, and your dashboard will say coverage is partial rather than pretend
otherwise.
Excluding crawlers from the cache means your server renders those pages instead
of serving a file. AI crawler traffic is small next to search engines, so this
is normally negligible, but it is your server and you can turn it off.
External services
This plugin connects to Cleo, a web service operated by REGENAI CLEO, part of
Regenerative AI. The connection is what makes the plugin work: without it there
is nowhere to report crawler activity to.
Service: Cleo, operated by REGENAI CLEO, part of Regenerative AI.
Website: https://regencleo.ai/
Terms of Service: https://regencleo.ai/terms
Privacy Policy: https://regencleo.ai/privacy
When data is sent. Nothing is sent until you enter a valid Cleo site key on
the plugin’s settings screen. If the field is empty, the plugin makes no
external requests at all. Removing the key stops it again.
What is sent, and why.
-
Request records, in batches, on a scheduled task (never during a visitor’s
page load). For each request to your site:- date and time
- HTTP method and response status code
- host and page path, with the query string removed
- the visitor’s IP address
- the User-Agent and Referer headers
- how long the page took to generate
This is sent so Cleo can identify which requests came from AI systems and
show you which pages they read. -
A configuration request, by default once a day and never more often than
once every five minutes, sending only your site key and which caching plugin
was detected on your site. This returns your settings and your visitor tag,
and is how Cleo can switch the plugin off remotely without an update. No
page or visitor data is included in this request.
What the plugin itself never sends: cookies, form contents, post bodies,
usernames, passwords, email addresses, comment text, or page content. Forms are
handled by the visitor tag in your visitors’ browsers, described below. Requests to
/wp-admin, /wp-login.php, /wp-json, /wp-cron.php and /xmlrpc.php are excluded
entirely and never leave your server.
About the IP address. It is sent because it is the only way to tell a real
AI crawler from something merely claiming to be one: Cleo checks it against the
IP ranges those vendors publish. It is used for that check while in memory and
is not stored on Cleo’s servers. Only an irreversible keyed hash is kept, so
the original address cannot be recovered from Cleo’s records.
About the visitor tag. When your Cleo account has the visitor tag enabled,
the configuration request also returns a <script> tag which the plugin adds to
your pages. It is served from Cleo’s own domain, or from your own subdomain if
you have configured one. It is delivered this way, rather than bundled into the
plugin, so that the endpoint can change without every site needing a plugin
update. If your account does not use the visitor tag, no script is added.
About forms. Forms are optional and off until you set them up in Cleo.
- CLEO forms. When a page contains a CLEO form (from the shortcode or the
block), the visitor tag loads that form’s fields from Cleo and shows the form.
When a visitor submits it, the details they typed are sent to Cleo and become
a lead in your Cleo dashboard. The plugin only prints an empty placeholder
with the form’s id; it does not read or send the form itself. - Your existing forms. If you turn on “Capture leads from my existing forms”
in your Cleo dashboard, the visitor tag also sends Cleo a copy of what a
visitor submits through forms already on your site (Contact Form 7, Gravity
Forms, HubSpot and similar). Password, card, hidden and file fields are never
read, login, sign-up and search forms are skipped, and nothing is captured
from visitors whose browser sends Do Not Track or Global Privacy Control. - Cookie. After a successful form submission the visitor tag sets a
first-party cookie,_cleo_lid, for one year. It links that visitor’s later
page views to the lead they created. No cookie is set before a submission.
Your visitors. As with any analytics tool, your site’s visitors are not
asked for consent by this plugin. You are responsible for disclosing your use of
Cleo in your own privacy policy and for obtaining any consent your jurisdiction
requires.