About

Privacy & Data Transmission

Caching Out is a performance plugin. It does not need your content, your visitors, or your identity to do its job — and it is designed not to collect them. This document lists every time the plugin sends data off your server, what is in that data, and how to stop it.

  • Covers Caching Out 1.25.0
  • Last reviewed 2026-10-30

Which edition sends what

From 1.21.0 Caching Out is two plugins, and they are very different on this page.

The free plugin (WordPress.org, slug cachingout) sends nothing. It needs no licence, has no telemetry sender, and makes no outbound HTTP request of its own. The only requests it makes at all are loopback requests to your own site: the Page Audit fetches the pages you have asked it to track, the way a visitor would, and issues one HEAD request for the first local stylesheet on the page it fetched. Both go to your own hostname, both are triggered by you (the audit button, or the tracked-page schedule you left on), and nothing about them leaves your server. There is no fingerprint, no licence check and no assistant in the free plugin.

Caching Out Pro is where every outward transmission lives. Everything described in the numbered sections below belongs to Pro. With Pro not installed, none of it can happen.

Pro contacts these, and only these:

WhatWhenWhat it receives
The licence server at cachingout.comYou activate, validate or deactivate a licence, and once a day for the validation checkSite URL, licence key, plugin version (section 4)
The rules endpoint on the same serverYou click Run scan on the wizard's Smart Config stepThe fingerprint summary (section 1)
The assistant endpoint on the same serverYou submit a question in the assistantYour question, plus the fingerprint summary, and – only while those settings are on – the Filesystem Check results and a recent-changes summary (sections 1 and 5)
The telemetry endpoint on the same serverOnly when you have opted inAggregate figures only (sections 2 and 3)
Google PageSpeed InsightsYou run an audit or a scheduled re-testThe page URL being tested, under your own API key
Cloudflare and SucuriA purge, and only when you have switched that add-on on and entered its credentialsThe zone or site identifier and the paths to purge
Google FontsOnce, when you switch self-hosting onThe font families your theme requested
Your own siteThe preloader fetches your own pagesNothing leaves your server

Pro's outward transmissions in detail:

  1. Site fingerprint – sent only when you run Smart Config or use the assistant.
  2. Insights telemetry – sent only when you explicitly opt in (same control as AI telemetry).
  3. AI telemetry. Same opt-in and kill switch as Insights telemetry.
  4. Licence activation/validation – sent only when you enter a licence key.

None of these transmissions ever contain page URLs, page content, post data, visitor data, your email address, or your user database. The sections below are exhaustive.

Images are never sent anywhere. Neither edition sends your images, or anything derived from them, to any service, AI or otherwise. WebP and AVIF serving (Pro) only reads image files that are already on your server; it creates none, and it never generates alt text, captions or other image data. Image compression (Pro) works on your server only, with the image library PHP already has: the compressed files, their WebP / AVIF copies and the backups of the originals stay in your uploads and in wp-content/cachingout-images/. The before / after preview goes only to your own browser, inside the admin screen, and is not stored; the list of images you picked for compression is an ordinary option in your database.

The plugin also keeps one local record that is not a transmission: the change record shown on the Activity page (section 5). It stays on your server; the only way any of it leaves is inside a chat question you type, under the chat consent, and only while the "Let the AI Assistant see recent changes" setting is on.


1. Site fingerprint (configuration service)

When it is sent

The fingerprint is built and sent on two explicit, user-initiated actions only:

  • The Smart Config step of the Setup Wizard, only after you click its Run scan button (nothing is transmitted on merely opening the step); and
  • Each question you submit in the AI Diagnostic Chat.

Nothing is fingerprinted on activation, in the background, or on a cron schedule. If you never run Smart Config and never use the chat, no fingerprint ever leaves your server.

What it contains

FieldValueExample
pluginsThe full list of installed plugin slugs, each with its major version only[ { "slug": "woocommerce", "version_bucket": "9.x" }, ... ]
themeThe active theme's template slugtwentytwentyfour
phpPHP version, major.minor only8.3
serverServer typeapache, nginx, litespeed, iis, or unknown
categoriesDerived tags for a small fixed map of known plugins[ "ecommerce", "caching" ]
hashSHA-256 dedup/cache token derived from the abovea1b2... (64 hex chars)

The plugin list is the complete set of installed plugin slugs returned by WordPress core's get_plugins() — active and inactive — sorted alphabetically, with Caching Out itself excluded. Versions are bucketed to the major release only (for example 9.4.2 becomes 9.x) so minor updates do not change the fingerprint.

Theme is the template slug only, not the display name. Category tags come from a small fixed KNOWN_CATEGORIES map inside the plugin (ecommerce, page builder, membership, forms, caching, multilingual, security, SEO) — only tags for plugins actually present are included.

What it does NOT contain

  • The site URL or any page URL
  • Page, post, or media content
  • User names, emails, roles, or any user data
  • Visitor or session data
  • Your license key is attached to the request body by the API client, but is covered separately in section 4 below.

Where it goes

POST /v1/rules/match (Smart Config) and POST /v1/chat (Diagnostic Chat) on the configuration/licence server, the same server that handles licence validation.

How it is used

To match your site against the rules engine and recommend the safest, highest-confidence compatibility settings, and (for chat) to scope answers to your actual plugin stack.

For chat, the server also keeps an anonymous gap log: the text of the question (first 300 characters), whether the knowledge base had an answer, how good the best match was, and the time. It holds no licence key, site address, fingerprint or answer, so it cannot be tied back to you. It exists so the knowledge base can be extended where questions go unanswered, and rows are deleted after 90 days.

How to stop it

Do not run Smart Config and do not use the Diagnostic Chat. There is no background fingerprint sender to disable.


2. Insights telemetry (existing)

When it is sent

Only after you tick "I agree to share anonymous performance data" on the Setup Wizard Privacy step or the Insights tab. The setting is off by default (checkbox pre-unchecked). One setting (insights.optin) covers both Insights and AI telemetry.

When opted in, Insights payloads may include:

  • A PageSpeed audit result (scores only) after each audit run; and
  • A settings snapshot (feature on/off state).

What it contains

Every payload starts from a common base:

FieldValue
site_idSHA-256 hash of the site URL — the URL itself is never sent
plugin_versionThe Caching Out version string
timestampISO 8601 time of send
wp_versionWordPress core version
php_versionFull PHP version string
themeActive theme display name
plugin_countCount of active plugins (a number, not names)

On top of the base:

  • Audit results add scores — the PageSpeed score numbers only, never the URL or the audit detail.
  • Settings snapshots add settings — boolean on/off toggles for each feature. Exclusion lists, API keys, credentials, and any user-entered value are never included.

What it does NOT contain

URLs, page content, user emails, visitor data, API keys, exclusion lists, or any user-supplied values.

Where it goes

Routing (shared with AI telemetry):

  1. If CACHINGOUT_TELEMETRY_ENDPOINT is defined in wp-config.php, payloads are POSTed as JSON to that full URL (self-hosted / escape hatch).
  2. Else, when the site has an active licence and per-licence client secret, payloads go to POST /v1/telemetry on the configuration/licence server (HMAC-authenticated, same client as Smart Config).
  3. Else (opted in but unlicensed and no endpoint override) — nothing is sent. Beta telemetry expects a licensed install.

How to stop it

Untick the opt-in on the Insights tab (or leave it unchecked in the wizard). The CACHINGOUT_DISABLE_TELEMETRY constant, when set to true in wp-config.php, disables all telemetry sending for every user regardless of the checkbox.


3. AI telemetry

Sent through the same Insights channel and covered by the same opt-in (insights.optin). No second checkbox. No analysis or feedback loop runs on this data.

When it is sent

Only when opted in and not blocked by CACHINGOUT_DISABLE_TELEMETRY, and only when a send path exists (licence + client secret, or CACHINGOUT_TELEMETRY_ENDPOINT):

Event typeTrigger
rules_appliedAfter Smart Config successfully applies Tier 1 rules
rule_overrideAfter an admin settings save diverges from a previously applied Smart Config rule (debounced 24h per rule)
cwv_snapshotAfter a PageSpeed audit when scores are available (no URL)

What it contains

Common envelope fields:

FieldValue
typerules_applied, rule_override, or cwv_snapshot
site_idSHA-256 of home_url() — never the URL itself
plugin_versionCaching Out version
timestampISO 8601
wp_version / php_versionEnvironment versions
themeActive theme stylesheet slug (AI events)
plugin_countCount of active plugins
schema_versionInteger envelope version (currently 1)

rules_applied adds ruleset_version, source (api or baseline), and rules[] with rule_id, setting, action, optional severity / source_tier, and either a plain scalar value (booleans, numbers, short enums) or value_hash (SHA-256 of canonical JSON) for arrays and path-like strings. Exclusion path lists never leave the site in clear text.

rule_override adds rule_id, setting, action_applied, direction (reverted or modified), and applied_at. No before/after raw list values.

cwv_snapshot adds phase (before / after / ad_hoc), strategy (mobile / desktop), scores, and optional vitals (e.g. LCP/CLS/INP). No URL field.

When the authenticated licence path is used, license_key may travel in the request body (existing AI client pattern) and is stripped before storage on the server.

What it does NOT contain

Page URLs, page content, emails, visitor data, exclusion-list free text, CDN hosts, API keys, or other secrets.

Where it goes

Same routing as section 2 (endpoint override, else licence-server POST /v1/telemetry). Server-side: insert-only into telemetry_events; rate limit 60 requests/hour per licence; body size cap 64KB.

How to stop it

Same controls as Insights telemetry (section 2).


4. Licence activation & validation (separate flow)

When you enter a licence key, the plugin sends the licence server exactly:

  • the site URL,
  • the licence key, and
  • the plugin version.

This is licence management, not telemetry, and is necessary for the key to be bound to your site. It is not covered by the telemetry opt-in or kill switch.


5. Change record (Activity page) – local, not telemetry

What it is

Caching Out keeps a record of the changes it makes or is asked to make to your site: settings saves, Smart Config runs, Setup Wizard steps, settings imports, WP-CLI commands, .htaccess and advanced-cache.php writes, the WP_CACHE constant, cache purges, and per-page asset rules. Each entry holds who made the change (a WordPress user id, or system, cron, cli, wizard, auto-config, import, activation), the surface it came from, the setting or file affected, the value before and after, the result, and the time. It exists so you (and the AI Assistant, when you allow it) can see what changed and undo it.

It records this plugin's own changes only. Theme updates, other plugins' settings and FTP edits are not seen. It is not a security log, is not tamper-proof and satisfies no compliance requirement.

Where it is stored

In a table in your own WordPress database ({prefix}cachingout_audit), or, on a host that refuses to create tables, in a WordPress option holding the most recent 100 entries. It is kept to the limits you set on the Cache tab (500 entries or 90 days by default; the newest entries are always kept) and deleted entirely when the plugin is deleted.

What is never stored

Page content, post content, HTML, visitor IP addresses, user agents, session or cart cookies, request bodies, or any URL a visitor requested. A purge by URL records the page path only, with the query string dropped. Credentials and personal data in settings – the Cloudflare email address, API keys, zone id, Sucuri keys, the Insights key and every licence field – are stored as [redacted]; the record still shows that the key changed, when and by whom, but never its value, and such an entry cannot be reverted.

When any of it leaves your server

Never on its own. The record has no sender, is not part of Insights or AI telemetry (insights.optin does not cover it), never appears in a POST /v1/telemetry payload, and CACHINGOUT_DISABLE_TELEMETRY does not affect it because it does not send.

The one outward path is the AI Diagnostic Chat: while "Let the AI Assistant see recent changes" (Cache tab, audit_ai_digest) is on, each question you submit carries a short text summary of your most recent changes (about 2 KB: the last 24 hours, any refused or failed changes, and the most recent 20), alongside the fingerprint and filesystem summaries section 1 describes. It travels only inside a question you typed, under the chat consent. Untick the setting to send questions without it.

The Export for support button on the Activity page writes the same entries, secrets still [redacted], to a JSON file that opens with a line naming the site. Nothing is exported unless you click it, and the file goes where you send it.

How to stop it

Untick "Record changes" on the Cache tab (existing entries stay until you clear them or they age out), or set CACHINGOUT_DISABLE_AUDIT to true in wp-config.php to stop every write. Clear activity log on the Activity page removes every entry and leaves one marker entry saying the log was cleared, by whom and when.


Cookies

Caching Out sets no cookies of its own, in either edition. A search of the free plugin's source for setcookie returns nothing outside the bundled development stubs, and the Pro add-on sets none either. The one exception under consideration is a cache-variation cookie should role-segmented caching ever be built; no such cookie is currently set.

Caching Out does read cookie names on the request, because it must: a visitor carrying a session, authentication or cart cookie – WordPress's own login cookies, WooCommerce's cart cookies, PHPSESSID and the rest of the built-in list – is never served a cached page, and a response that sets one is never stored. Those names are compared and discarded. No cookie value is stored, logged or transmitted.

The page cache itself is served to anonymous visitors only: a logged-in visitor, or one with a cart, session or login cookie, always gets a live page.


Constants

Two constants in wp-config.php override every setting on this page.

ConstantEffectEdition
define( 'CACHINGOUT_DISABLE_TELEMETRY', true );Disables all telemetry sending for every user, regardless of the opt-in checkbox. Sections 2 and 3 stop. It does not affect licence validation (section 4), the fingerprint that travels with a question you type (section 1), or the local change record (section 5).Pro (the free plugin has no telemetry sender to disable)
define( 'CACHINGOUT_DISABLE_CACHE', true );Disables all cache reading and writing, in every version. No page is stored and no page is served from the cache, so no rendered page is written to disk at all. It is the documented mitigation for a bad release.Both

define( 'CACHINGOUT_DISABLE_AUDIT', true ); additionally stops every write to the local change record (section 5, Pro).


Your rights (GDPR)

  • Opt-in is explicit and pre-unchecked for every telemetry flow.
  • You may withdraw consent at any time from the relevant settings screen.
  • The plugin stores no personal data of your visitors. Cache files contain rendered pages for anonymous visitors only.
  • Licensing and telemetry records held on our servers are subject to the standard access, rectification, erasure, and portability rights under the GDPR/UK GDPR. Contact support@cachingout.com with any request.

Sub-processors (AI features)

When you use the AI features, the licence server passes parts of your request to external AI providers to compute an answer. No provider ever receives your page content, visitor data, or user database — only what the sections above describe (the question text, the fingerprint summary, and, when you have enabled them, the filesystem check results and the recent-changes summary from section 5).

FunctionProvider
Retrieval embeddings (matching your question against our knowledge base)OpenAI (text-embedding-3-small)
Answer generation (composing the chat reply)Anthropic, PBC (Claude Haiku 4.5, via the Anthropic Messages API; data processed in the United States)

Where each disclosure appears in the UI

  • Smart Config — a privacy notice on the wizard step (sends the fingerprint). Separate from telemetry consent.
  • Setup Wizard → Privacy — explicit telemetry opt-in (unchecked by default); saves insights.optin.
  • AI Diagnostic Chat — a privacy line in the chat footer (sends the question, the fingerprint summary and, when each is switched on or available, the filesystem check summary, the page-audit findings and the recent-changes digest; the footer lists all of them since 1.21.11).
  • Insights — the same opt-in checkbox and copy (scores, feature state, Smart Config rules applied, later overrides).

This document is the authoritative record; the UI copy is kept aligned with it.

Free edition · WordPress.org

Get Caching Out for free

Good call. Page caching is the biggest single speed win, and it is on the moment you activate. Two ways to install the free edition:

Option 2

Upload the zip

Download the plugin zip, then go to Plugins → Add New Plugin → Upload Plugin and choose the file.

Download free plugin (.zip)

After you activate, caching is already running. Open Caching Out → Setup Wizard to see what is on and why.

Want every feature from day one? Pro from $59/yr