Converta Cookie Banner self-updates
GDPR cookie consent banner for WordPress with Google Consent Mode v2, cookie scanner, stats dashboard, and 6-language translations
by Converta · github.com/tudorhoriadaniel/converta-cookie-banner · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/tudorhoriadaniel/converta-cookie-banner/archive/refs/heads/main.zipShips its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.
GDPR/ePrivacy cookie consent banner for WordPress with Google Consent Mode v2, a built-in cookie scanner, consent statistics dashboard, full design customizer, and translations in 6 languages.
Version: 1.9.0 · License: GPL v2 or later · Author: Converta
Features
- Google Consent Mode v2 — pushes
consent default(all denied exceptsecurity_storage) and, for returning visitors,consent updatebefore Google Tag Manager loads, no matter how GTM is installed (themeheader.php, another plugin,wp_head, hardcoded snippet). The script is injected as the very first script after<head>via output buffering, with an earlywp_headfallback. - Consent categories — Necessary (always on), Analytics/Statistics, Marketing — with per-category cookie tables in the preferences panel.
- Cookie scanner — crawls up to 100 pages of your site, detects cookies and known tracking scripts, plus a one-click "Quick Add" library for common platforms. Fully editable cookie list.
- Statistics dashboard — accept/reject/custom rates, unique visitors, daily trend charts (Chart.js), selectable period (7/30/90/365 days). Consent actions are logged with a salted SHA-256 visitor hash (no raw IPs stored).
- Design customizer — every color, corner radius, and font size, with live preview.
- Translations — English, French, German, Italian, Romanian, Spanish. Language detection via URL subfolder (
/fr/,/de/…) or the<html lang>attribute (WPML, Polylang, TranslatePress compatible), with a configurable fallback. - Reopen consent (GDPR requirement) — choose how visitors change their mind later:
- Floating icon — small round button fixed bottom-left (default)
- Footer link — a discreet translated text link ("Cookie Settings" / "Paramètres des cookies" / "Cookie-Einstellungen" / …) at the bottom of every page
- Both
- Plus a shortcode
[pcc_consent_link](optionaltext="…"attribute) and support for adding the CSS classpcc-plinkto any link or menu item (the oldpcc-consent-linkclass keeps working) — these work with every option above.
- dataLayer events — fires
cookie_necessary,cookie_analytics,cookie_marketing,cookie_functionalevents for GTM triggers based on the granted categories, on every page load for returning visitors.
Installation
- Download this repository as a ZIP (or grab a release ZIP).
- In WordPress admin go to Plugins → Add New → Upload Plugin and upload the ZIP.
- Activate. The banner appears immediately for visitors without a consent cookie.
- Configure under the Cookie Consent admin menu:
- Statistics — consent analytics dashboard
- Cookie Scanner — scan your site and manage the cookie list
- Banner Design — colors, sizes, and the Reopen Consent method
- Translations — language detection and all banner texts
Updates — no more zip uploads
Once installed, the plugin updates itself directly from this GitHub repository (main branch) using WordPress's native update mechanism: when a newer version is pushed here, a standard "Update available" notice appears on the site's Plugins page. While the repository is private, paste a GitHub personal access token (read access to this repo) in Banner Design → Plugin Updates from GitHub; a public repository needs no token.
Google Tag Manager setup
The plugin handles the consent side; in GTM you can use these dataLayer events as triggers for tags that must wait for consent:
| Event | Fired when |
|---|---|
cookie_necessary |
every page load |
cookie_analytics |
Statistics consent granted |
cookie_marketing |
Marketing consent granted |
cookie_functional |
every consent save (always granted) |
Consent Mode mapping: Marketing → ad_storage, ad_user_data, ad_personalization, personalization_storage; Statistics → analytics_storage; security_storage is always granted.
Verify with Google Tag Assistant: Consent Default must appear before GTM's Consent Initialization event.
Data & privacy
- Consent choices are stored in a first-party cookie
procab_cookie_consent(365 days,SameSite=Lax; Secure). - Consent actions are logged to a custom table (
wp_pcc_consent_log) with a salted hash — no raw IP addresses. - Uninstalling the plugin drops the log table and deletes all plugin options.
Changelog
1.9.0
- Self-updates from GitHub: the plugin now uses WordPress's native
Update URImechanism to check this repository's main branch for new versions and offers them as normal one-click updates on the Plugins page — no manual zip uploads. New "Plugin Updates from GitHub" section on the Banner Design page shows the update status and accepts an optional GitHub token for private-repo access.
1.8.0
- New Google Tag Manager blocking mode option (Banner Design page):
- Advanced Consent Mode (default) — GTM loads immediately on every page; Consent Mode signals keep Google tags cookieless until consent (best data quality, enables GA4 behavioral modeling). This is the plugin's existing behavior, now explicit.
- Basic Consent Mode (hard block) — every script referencing
googletagmanager.comis neutralized (type="text/plain") server-side and only executed after the visitor grants Statistics or Marketing consent (immediately on later visits for visitors who already granted).
1.7.0
- Ad-blocker hardening (Brave, uBlock Origin, AdGuard): the banner was invisible for visitors with cookie-notice-blocking filters enabled, because (a) the plugin's asset URLs contain "cookie-banner" and were blocked by network filters, and (b) its element ids/classes (
pcc-cookie-banner,pcc-consent-link, …) matched cosmetic hiding filters. Fixes:- Frontend CSS and JS are now inlined into the page — no external plugin asset URLs to block
- All frontend ids/classes renamed to neutral names with no "cookie"/"consent"/"banner" words (
pcc-ui-card,pcc-ui-overlay,pcc-plink, …) - AJAX action renamed
pcc_get_banner→pcc_load_ui(old name kept as alias) - Neutral
aria-label/titleattributes - Manually placed links with the old
pcc-consent-linkclass are automatically migrated topcc-plinkat runtime — existing menu items keep working
1.6.1
- Corrected plugin/author URLs to converta.ro
1.6.0
- SEO: zero banner markup in the page HTML. The banner's texts (headings, category descriptions, buttons) are no longer rendered server-side on every page — they were appearing as duplicate content in the source of every URL. The markup is now fetched via AJAX (
pcc_get_banner) and injected client-side by banner.js. Language detection still works: the page's path and<html lang>are passed along with the request. - All banner containers carry
data-nosnippet, so search engines never use banner text in snippets. - Consent Mode default/update in
<head>and the dataLayer events are unchanged — GTM behavior is identical.
1.5.4
- Universal footer detection for custom/hand-coded footers: when no WordPress footer menu or copyright row is found, the consent link is inserted right after the last link inside the page's
<footer>element, inheriting its styling — works with any theme or custom-built page
1.5.3
- If a consent link is placed manually (menu item with the
pcc-consent-linkclass, shortcode, or widget), the automatic footer link steps aside — no duplicates
1.5.2
- Footer link is now theme-aware: it automatically inserts itself into the theme's own footer links area — the footer menu (last menu in the footer, e.g. next to "Contact · Blog") or, failing that, the copyright/site-info row — inheriting the theme's link styling. The standalone bottom bar remains only as a fallback for themes with no footer links area.
1.5.1
- Floating icon now shows a cookie symbol and is hardened against theme button styles (
!importanton size, padding, andborder-radius: 50%), so it stays perfectly round in any theme - Footer consent link now has a solid background bar (banner background color), so it is legible over theme background images and no longer exposes a strip of the body background below the footer
1.5.0
- New Reopen Consent option (Banner Design page): floating icon, translated footer link, or both
- New
[pcc_consent_link]shortcode andpcc-consent-linkCSS class for placing a consent link anywhere (footer menu, widget, privacy page) - New translatable string "Consent Reopen Link Text" in all 6 languages
1.4.0
- Consent Mode default + update now injected as the first script in
<head>via output buffering, guaranteeing it runs before GTM regardless of how the container snippet is installed - JS guard against double injection; skips feeds, REST, AJAX, embeds, and non-HTML output
1.3.1
- Cookie scanner, statistics dashboard, design customizer, 6-language translations, Consent Mode v2 baseline