CLEO by RegenAI

CLEO by RegenAI

0/5 (0 ratings) — active installs Updated Nov 10, 2026

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

Four jobs, from one site key:

  1. 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.

  2. 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. You can switch it off under
    Settings Cleo.

  3. Places CLEO lead forms. The [cleo_form id="..."] shortcode and the
    CLEO form block put a form you built in Cleo on any page.

  4. Serves your llms.txt. When you turn on “Serve llms.txt and llms-full.txt
    from CLEO” under Settings Cleo, the plugin answers /llms.txt and
    /llms-full.txt with the text you publish in CLEO, the same way WordPress
    answers /robots.txt. No file is written to your site. It is off until you
    turn it on, and it steps aside when your site already has an llms.txt: a
    real file, or one from Yoast SEO, Rank Math, All in One SEO or another
    plugin. The plugin only reads whether those plugins have llms.txt turned on;
    it never changes their settings or files. Turning it off, deactivating or
    uninstalling puts /llms.txt back as it was.

Connecting to CLEO

Settings Cleo Connection has a “Connect to CLEO” link. It opens CLEO,
where you approve the connection on WordPress’s own Application Passwords
screen. What that means:

  • CLEO receives a core WordPress Application Password with all the permissions
    of the user who approves it. Sign in as a dedicated administrator account
    first (recommended).
  • The password passes once through your browser’s address bar to CLEO’s server.
    CLEO replaces it at once with a new one and stores the replacement encrypted.
  • To disconnect, use Disconnect in CLEO, or go to Users Profile
    Application Passwords
    and click Revoke. The Connection panel links to the
    right profile.
  • Deactivating or deleting this plugin does not revoke the password.
    WordPress keeps it until you revoke it.
  • On a multisite network one Application Password works on every site where the
    user is a member, with that user’s role on that site.

The plugin adds a read-only route, /wp-json/cleo-wp/v1/capabilities, for
signed-in administrators. It reports the plugin and WordPress versions and which
CLEO features this version supports, and it changes nothing. The Connection
panel also explains what to check when WordPress, a security plugin or your host
blocks Application Passwords.

Remote helpers

Four optional helpers let CLEO make small, reversible changes on your site once
you have connected it. Every one is off until an administrator turns it on
under Settings Cleo Remote helpers, and only that screen can turn one
on. Updating or connecting never switches one on. All of them use the same
connection as above, so a request is made with the Application Password of a
real user and is refused unless that user has the WordPress capability
for the same thing.

  • Look up which page a URL belongs to (/wp-json/cleo-wp/v1/resolve-url).
    Reads only. Given an address on your site, it answers with the matching
    post or page (its ID, type and permalink) when the connected user may edit
    it, or that nothing matches.
  • Edit category and tag descriptions
    (/wp-json/cleo-wp/v1/terms/{taxonomy}/{term_id}/description). Reads a
    description and replaces it, through WordPress’s own term functions and only
    with a fixed list of safe HTML tags. It refuses to save if the description
    changed since CLEO read it.
  • Read and edit Elementor page content
    (/wp-json/cleo-wp/v1/elementor/documents/{post_id}). With this switch on,
    CLEO receives the page’s stored Elementor layout and text, and can save an
    edited layout through Elementor’s own save, so Elementor rebuilds that
    page’s styles itself. It refuses a save that Elementor would make
    destructive, for example when a block’s add-on is no longer installed, when
    your user could not have saved that HTML in WordPress, for the Posts page
    and the shop page, and for a page someone else is editing.
  • Clear page caches (/wp-json/cleo-wp/v1/cache/purge). Asks the cache
    plugins you already run to clear one page, a few URLs or the whole site, each
    through that plugin’s own documented function. It reads nothing and stores
    nothing in a cache plugin’s settings.

Two more routes only report: /wp-json/cleo-wp/v1/capabilities (described
above) and /wp-json/cleo-wp/v1/changes/{id}, which shows one change CLEO made
and works with the helper off.

The CLEO changes screen and undo. Every change is recorded on your own site,
in a table the plugin creates, with the values before and after. They stay on
your site and are not sent anywhere by the plugin. Settings Cleo CLEO
changes
lists them, shows who made each one, and has an Undo button on the
ones that can be undone (descriptions and Elementor content). Undo is refused
if the page has changed since, so it never overwrites someone else’s edit.
A cache purge cannot be undone, because there is nothing to put back. You
can clear the recorded values at any time; CLEO keeps only what it needs to
avoid repeating a change.

If your plan or trial ends. Values CLEO already changed stay as they are.
Nothing is reverted, and you can still open the CLEO changes screen and undo.
Deactivating the plugin changes nothing your visitors see: the pages,
descriptions and styles stay exactly as they were. The helpers simply stop
answering.

Caching plugins. The plugin only calls the cache plugins listed here, and
each only through its documented function:

  • WP Rocket, W3 Total Cache and WP Super Cache: the page, the URL or the whole
    site.
  • WP Fastest Cache: a page is cleared by its address. A whole-site clear may
    also clear Varnish and the Cloudflare zone when you have set those up inside
    WP Fastest Cache.
  • Speed Optimizer (SiteGround): off SiteGround it clears only its own file
    cache.
  • LiteSpeed Cache: only has an effect on a LiteSpeed server or through
    QUIC.cloud.
  • Cloudflare and Hostinger Tools: CLEO does not purge these. They clear their
    own cache when a page is saved.

When no supported cache plugin is active the purge helper reports that, and
does nothing.

No new third party. The helpers add no service, no outgoing request and no
script. They are routes on your own site that CLEO calls, so the hosts in
External services are unchanged. The only thing the helpers add to what
CLEO can see is the content of what you switch on: Elementor layout and text, and
category and tag descriptions.

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.

  1. 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.

  2. A configuration request, by default once a day and never more often than
    once every five minutes, sending your site key, which caching plugin was
    detected on your site, and the state of llms.txt serving: whether you turned
    it on, the SHA-256 fingerprints of the llms.txt and llms-full.txt it is
    serving, whether something else on your site serves llms.txt (a real file,
    a subfolder install, or Yoast SEO, Rank Math, All in One SEO, Website
    LLMs.txt or another plugin, named by a short code), and the plugin version.
    This returns your settings, your visitor tag and the fingerprints and sizes
    of the llms.txt files you published in CLEO, and is how Cleo can pause
    crawler reporting without an update, for example during an incident. That
    pause stops crawler reporting only. The visitor tag keeps loading until you
    switch it off under Settings Cleo. While llms.txt serving is on, this
    request runs every 15 minutes so a change you publish arrives quickly. No
    page or visitor data is included in this request.

  3. llms.txt downloads, only while llms.txt serving is on and only when the
    configuration request shows that the text you published in CLEO changed.
    The plugin fetches https://collect.regenai.digital/c/llms/txt and
    /c/llms/full, sending only your site key, on its scheduled task or when you
    save the settings page, never while a visitor is waiting. It checks each
    file’s size and SHA-256 fingerprint before using it, and keeps serving the
    previous copy if a download fails.

  4. The connect link, only if you click it. “Connect to CLEO” is an ordinary
    link to https://app.regencleo.ai/connect/wordpress with your site address in
    the web address. The plugin sends nothing itself. If you then approve the
    connection, WordPress sends the new Application Password through your
    browser to CLEO’s server, as described under “Connecting to CLEO”. After
    that CLEO calls your site’s REST API with it; those are requests to your
    site, not from it.

Hosts. The app host is app.regencleo.ai (the connect page). The API host is
collect.regenai.digital (crawler reports, the configuration request and the
llms.txt downloads above).
Terms of Service: https://regencleo.ai/terms. Privacy Policy:
https://regencleo.ai/privacy.

What the plugin itself never sends: cookies, form contents, post bodies,
usernames, passwords, email addresses, comment text, or page content. The
remote helpers are different and optional: with the Elementor switch on, CLEO
can ask your site for a page’s stored Elementor layout and text, and with the
description switch on, for a category or tag description. Those are requests to
your site, not from it, and they answer only for a connected user. 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. The plugin takes only the script’s address from that
response, and adds the tag only when the address is on a Cleo domain
(regenai.digital or regencleo.ai) or a subdomain of your own site. 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. You can switch the visitor tag off under
Settings Cleo, and that setting wins over your Cleo account.

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 these forms for visitors whose browser sends Do Not Track or Global
    Privacy Control. You can also switch form capture off under
    Settings Cleo, and that setting wins over your Cleo dashboard.
  • 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.

Leadpipe (optional, off by default). If your Cleo account uses Lead
Profile, the visitor tag can also load a …