=== O2 Cookie Consent Pro ===
Contributors: o2digital
Donate link: https://seo2agency.com/
Tags: cookie consent, gdpr, ccpa, consent mode, privacy
Requires at least: 6.5
Tested up to: 6.9
Requires PHP: 8.1
Stable tag: 5.0.7
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

An international cookie consent banner that follows the law of wherever each
visitor actually is, with Google Consent Mode v2, a scanner that describes
what it finds, and tamper-evident proof of consent.

== Description ==

Most consent plugins implement one country's rules and show the same banner
to everybody. This one decides per visitor.

**The banner follows the visitor's own law.** 32 legal profiles covering 250
territories, the 50 US states and the Canadian provinces. An EU visitor gets
opt-in with a refusal as prominent as acceptance; a Californian gets a notice
with "Do not sell or share"; a Japanese visitor gets the external-transmission
disclosure their law asks for. The banner carries only the controls that
visitor's law requires, and only the control the law insists on is given the
weight of "Accept all" — the rest are links.

**It works behind a page cache.** The HTML is identical for every visitor;
the strictest profile is printed inline, scripts are always blocked in PHP
and unblocked in the browser, and one uncached request narrows the regime.
One cache entry per page, correct in every country.

**The scanner works out the details itself.** Classification, provider,
purpose, and a duration *measured* from the cookie rather than copied from a
list. It sees localStorage, sessionStorage and IndexedDB, reads `Set-Cookie`
headers server-side to catch HttpOnly cookies no front-end scan can see, and
records every third-party host your pages contact. Each row says how it was
decided, and a guess is labelled a guess.

**38 languages**, with automatic detection and WPML, Polylang, TranslatePress
and Weglot integration. Right-to-left included.

**Proof of consent that is worth something.** Each log record is fingerprinted
with SHA-256 chained to the one before it, so an edited record is detectable.
Visitors can download their own receipt.

= Also included =

* Google Consent Mode v2, Global Privacy Control, and IAB GPP US sections
* Gutenberg blocks and shortcodes for the cookie table, the policy, the
  privacy centre, the third-party list and the data request form
* A policy generator that follows the laws you selected, and never
  overwrites a page you already had
* AI transparency: disclosure notices, a register of AI systems, and a
  machine-readable training reservation in robots.txt, /ai.txt and a TDM
  header
* Scheduled monitoring that tells you when something new appears, and a leak
  check that fetches your pages as a visitor who agreed to nothing
* Data requests, answered through WordPress's own export and erase flow

== Frequently Asked Questions ==

= Does it need a GeoIP service? =

No, and it never sends a visitor's IP address anywhere. It reads a country
header from your CDN if there is one, then your server's GeoIP module, then
a MaxMind-format database you can drop in yourself. Failing all of those the
browser narrows it, and failing that the strictest profile applies.

= Is it a Google-certified CMP? =

No. A certified CMP with IAB TCF is required only for AdSense, Ad Manager and
AdMob *publishers* in the EEA, UK and Switzerland. Advertisers using GA4,
Google Ads or Meta need Consent Mode v2, which this provides.

= Will it make my cookie policy for me? =

It will write one, from what is actually on your site, and keep the tables
inside it current. It will not touch a page you already have without being
asked, and it does not rewrite your privacy policy.

= Does it publish my email address? =

No. Policy pages link to your contact page. The contact email in the settings
is only used to write to you.

== Changelog ==

See CHANGELOG.md in the plugin folder for the full history.

= 5.0.7 =
The automatic check no longer reports <link rel="profile"> (gmpg.org) and
similar labels as third-party services; gmpg.org is removed from the policy.

= 5.0.6 =
The cookie policy states the consent cookie's real lifetime, which follows
the law of each visitor (e.g. 6–24 months), instead of a fixed 180 days.

= 5.0.5 =
The page cache is now emptied at the moment the cookie tables change, so
LiteSpeed and the Hostinger CDN serve the updated cookie policy at once.

= 5.0.4 =
The cookie policy now updates itself: every change to the cookie tables
empties the page cache. The automatic check is on by default (weekly), with
a new monthly option. Dashboard: the policy-table check recognises blocks,
and an old full scan is flagged.

= 5.0.3 =
Fixed: the consent cookie's lifetime could read "ys% days" after saving the
register; it is repaired automatically. Editor and dashboard state seen by
the scan (block editor, Rank Math panels, wp-settings) is no longer listed in
the public cookie policy.

= 5.0.2 =
The redundant "Read our Cookie Policy." sentence is removed from saved
wording too, once, in every language.

= 5.0.0 =
Renamed O2 Cookie Consent Pro, by O2 Digital.

= 2.0.0-beta.8 =
Data rights built on the WordPress core request flow; the consent log now
answers export and erase requests. Fixed: consent could go unrecorded between
a plugin update and the next admin page view.

= 2.0.0-beta.7 =
AI transparency, verifiable consent receipts, scheduled monitoring and the
pre-consent leak check.

= 2.0.0-beta.1 =
38 bundled languages with automatic detection and RTL; IAB GPP; GPC
declaration at /.well-known/gpc.json.

= 2.0.0-alpha =
The jurisdiction engine: 32 legal profiles, cache-safe geolocation, brand
colours taken from the theme.

== Upgrade Notice ==

= 5.0.4 =
Turns the weekly automatic check on for sites where it was off; a notice
explains how to switch it off again.

= 5.0.3 =
Repairs the consent cookie lifetime shown in the cookie policy and removes
editor-only entries from it. Visit wp-admin once after updating.

= 2.0.0-beta.8 =
Fixes a window after any update in which consent records could be lost. Worth
taking promptly.
