Plain Cookie Consent is a no-frills GDPR + ePrivacy consent banner for WordPress. It ships a single banner, Google Consent Mode v2 defaults, a server-side audit log with pseudonymised subject hashing, a DSAR lookup helper, and constant-gated Meta Pixel / Microsoft Clarity / LinkedIn Insight Tag helpers — all under GPL v2, with no upsells and no external telemetry.
The plugin is designed to support a GDPR/ePrivacy-compliant consent setup. Final compliance depends on the site owner’s configuration and linked privacy policy.
wp_head priority 1, before any tag manager or gtag snippet.wp_plain_consent_log) with a privacy-preserving SHA-256 subject hash over a daily-rotating salt, and a 730-day default retention purge (filterable via constant).GET /mirror-nonce endpoint (Cache-Control: no-store), so full-page caching does not break nonce validation.CF-IPCountry header when present, with a fail-safe default: if the country cannot be determined, the visitor is treated as in-scope.PLAIN_COOKIE_CONSENT_FACEBOOK_PIXEL_ID in wp-config.php.PLAIN_COOKIE_CONSENT_CLARITY_PROJECT_ID in wp-config.php.PLAIN_COOKIE_CONSENT_LINKEDIN_PARTNER_ID in wp-config.php.window.plainCookieConsent JavaScript API (getCategories, hasConsent, onChange, onGrant, onRevoke) for site-specific vendors.plain_cookie_consent_autoclear_cookies filter).localStorage / sessionStorage cleanup on a real granted-to-revoked transition (plain_cookie_consent_clear_storage_keys filter).wcag2a, wcag2aa, wcag21aa tags) run on every push and pull request via GitHub Actions.Translation catalogs ship for nine languages: English, German, Russian, Spanish, French, Italian, Dutch, Polish, and Portuguese. Banner language auto-resolution covers all nine shipped languages, including regional variants (for example de-AT or pt-BR), with any other locale falling back to English. Any shipped catalog can also be selected explicitly, and translators can override strings the standard WordPress gettext way.
This plugin has no telemetry and never sends data to its own or the author’s servers. Consent records stay in your own WordPress database.
The plugin can optionally load three well-known third-party marketing/analytics tags on your behalf. Each one is OFF by default and only ever loads when BOTH of the following are true:
wp-config.php, andIf you do not define these constants, the plugin makes no third-party requests at all. Once enabled, the tag still loads only after the visitor grants the relevant consent category in the banner.
Optional advertising measurement. Enabled by defining PLAIN_COOKIE_CONSENT_FACEBOOK_PIXEL_ID. When a visitor grants advertising consent, the plugin loads https://connect.facebook.net/en_US/fbevents.js and initialises the Pixel with your Pixel ID. From then on, on each page view, Meta receives standard Pixel data: your Pixel ID, the page URL and referrer, the visitor’s IP address and browser/user-agent, and a PageView event. Nothing is sent before advertising consent.
Provider: Meta Platforms, Inc. Privacy Policy: https://www.facebook.com/privacy/policy/ — Business Tools Terms: https://www.facebook.com/legal/terms/businesstools
Optional session analytics (heatmaps and session insights). Enabled by defining PLAIN_COOKIE_CONSENT_CLARITY_PROJECT_ID. When a visitor grants analytics consent, the plugin loads https://www.clarity.ms/tag/<your-project-id>. From then on, on each page view, Microsoft receives Clarity analytics data: your project ID, the page URL, the visitor’s IP address and browser/user-agent, and interaction events such as clicks and scrolls. Nothing is sent before analytics consent.
Provider: Microsoft Corporation. Privacy Statement: https://www.microsoft.com/privacy/privacystatement — Clarity Terms of Service: https://clarity.microsoft.com/terms
Optional advertising measurement on LinkedIn. Enabled by defining PLAIN_COOKIE_CONSENT_LINKEDIN_PARTNER_ID. When a visitor grants advertising consent, the plugin loads https://snap.licdn.com/li.lms-analytics/insight.min.js with your Partner ID. From then on, on each page view, LinkedIn receives Insight Tag data: your Partner ID, the page URL, and the visitor’s IP address and browser/user-agent. Nothing is sent before advertising consent.
Provider: LinkedIn Corporation. Privacy Policy: https://www.linkedin.com/legal/privacy-policy — LinkedIn Ads Agreement: https://www.linkedin.com/legal/ads-agreement
This plugin is provided “as is”, free of charge, for evaluation and use at
the site operator’s own discretion and risk.