{"id":285210,"date":"2026-05-03T15:30:07","date_gmt":"2026-05-03T15:30:07","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/consent-mode-v2-cookie-banner\/"},"modified":"2026-05-03T15:29:56","modified_gmt":"2026-05-03T15:29:56","slug":"vgdev-cookie-banner-consent-mode-v2","status":"publish","type":"plugin","link":"https:\/\/dzo.wordpress.org\/plugins\/vgdev-cookie-banner-consent-mode-v2\/","author":23198720,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"VGDev Cookie Banner for Consent Mode v2","header_author":"VGDev Solutions","header_description":"GDPR cookie consent banner with Google Consent Mode v2, GTM & GA4 integration. Lightweight, self-hosted, multilingual, fully customizable.","assets_banners_color":"4d668d","last_updated":"2026-05-03 15:29:56","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/vgdevsolutions.gr\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":73,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"vgdevsolutions","date":"2026-05-03 15:29:56"}},"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3521560,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3521560,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3521560,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3521560,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Cookie consent banner (bottom bar style)","2":"Cookie preferences modal with category toggles","3":"Admin general settings panel","4":"Admin tracking &amp; GTM configuration","5":"Admin banner customization with color pickers"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[232,223629,20272,16626,131785],"plugin_category":[36],"plugin_contributors":[239538],"plugin_business_model":[],"class_list":["post-285210","plugin","type-plugin","status-publish","hentry","plugin_tags-analytics","plugin_tags-consent-mode","plugin_tags-cookie-banner","plugin_tags-cookie-consent","plugin_tags-gdpr","plugin_category-analytics","plugin_contributors-vgdevsolutions","plugin_committers-vgdevsolutions"],"banners":{"banner":"https:\/\/ps.w.org\/vgdev-cookie-banner-consent-mode-v2\/assets\/banner-772x250.png?rev=3521560","banner_2x":"https:\/\/ps.w.org\/vgdev-cookie-banner-consent-mode-v2\/assets\/banner-1544x500.png?rev=3521560","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/vgdev-cookie-banner-consent-mode-v2\/assets\/icon-128x128.png?rev=3521560","icon_2x":"https:\/\/ps.w.org\/vgdev-cookie-banner-consent-mode-v2\/assets\/icon-256x256.png?rev=3521560","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>VGDev Cookie Banner for Consent Mode v2<\/strong> is a lightweight, self-hosted GDPR cookie consent solution that integrates natively with Google Consent Mode v2, Google Tag Manager (GTM) and Google Analytics 4 (GA4).<\/p>\n\n<p>All consent signals start as <code>denied<\/code> and are updated in real time based on the visitor's choices \u2014 fully compliant with Google's requirements for EU markets.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li>\u2705 <strong>Google Consent Mode v2<\/strong> \u2014 all 7 consent signals managed automatically<\/li>\n<li>\u2705 <strong>Google Tag Manager (GTM)<\/strong> \u2014 head snippet + body noscript injected automatically<\/li>\n<li>\u2705 <strong>Google Analytics 4 (GA4)<\/strong> \u2014 standalone gtag.js support (when GTM is not used)<\/li>\n<li>\u2705 <strong>GDPR Compliant<\/strong> \u2014 consent defaults to denied before any tracking occurs<\/li>\n<li>\u2705 <strong>Multilingual Privacy Policy<\/strong> \u2014 set a different privacy policy URL per language<\/li>\n<li>\u2705 <strong>29 built-in languages<\/strong> \u2014 auto-detected via WPML, Polylang or WordPress locale<\/li>\n<li>\u2705 <strong>Performance Mode<\/strong> \u2014 lazy loads the banner after user interaction (boosts PageSpeed score)<\/li>\n<li>\u2705 <strong>Force Consent<\/strong> \u2014 block the page until the user makes a choice<\/li>\n<li>\u2705 <strong>Fully customizable<\/strong> \u2014 colors, layout, position, floating button, and more<\/li>\n<li>\u2705 <strong>Self-hosted<\/strong> \u2014 no external consent management platform needed<\/li>\n<li>\u2705 <strong>Lightweight<\/strong> \u2014 no jQuery dependency for the front-end script<\/li>\n<\/ul>\n\n<h4>Google Consent Mode v2 Signals<\/h4>\n\n<p>The plugin manages all required consent signals:<\/p>\n\n<ul>\n<li><code>ad_storage<\/code><\/li>\n<li><code>ad_user_data<\/code><\/li>\n<li><code>ad_personalization<\/code><\/li>\n<li><code>analytics_storage<\/code><\/li>\n<li><code>functionality_storage<\/code><\/li>\n<li><code>personalization_storage<\/code><\/li>\n<li><code>security_storage<\/code><\/li>\n<\/ul>\n\n<h4>Consent Categories<\/h4>\n\n<ul>\n<li><strong>Necessary<\/strong> \u2192 <code>security_storage<\/code><\/li>\n<li><strong>Functionality<\/strong> \u2192 <code>functionality_storage<\/code>, <code>personalization_storage<\/code>, <code>security_storage<\/code><\/li>\n<li><strong>Analytics<\/strong> \u2192 <code>analytics_storage<\/code>, <code>security_storage<\/code><\/li>\n<li><strong>Marketing<\/strong> \u2192 <code>ad_storage<\/code>, <code>ad_user_data<\/code>, <code>ad_personalization<\/code>, <code>personalization_storage<\/code><\/li>\n<\/ul>\n\n<h4>Multilingual Support<\/h4>\n\n<p>Works out of the box with WPML, Polylang and WordPress locale. You can also set per-language privacy policy URLs so visitors always see the privacy page in their own language.<\/p>\n\n<h4>Performance Mode<\/h4>\n\n<p>Enable lazy loading to load the cookie banner only after the first user interaction (scroll, click, mouse move or touch). Since Google PageSpeed Insights does not simulate interactions, the banner will not appear in the performance audit \u2014 significantly improving your Core Web Vitals score.<\/p>\n\n<h4>Built-in Languages<\/h4>\n\n<p>English, Greek, German, French, Spanish, Italian, Portuguese, Dutch, Polish, Czech, Slovak, Hungarian, Romanian, Bulgarian, Croatian, Serbian, Slovenian, Estonian, Latvian, Lithuanian, Finnish, Swedish, Danish, Norwegian, Russian, Ukrainian, Chinese, Japanese, Arabic.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to external services provided by Google when the site administrator configures a Google Tag Manager (GTM) Container ID or a Google Analytics 4 (GA4) Measurement ID in the plugin settings.<\/p>\n\n<h4>Google Tag Manager (GTM)<\/h4>\n\n<p>When a GTM Container ID is entered in the plugin settings, the plugin loads the Google Tag Manager JavaScript snippet from Google's servers. This happens on every front-end page load.<\/p>\n\n<ul>\n<li><strong>What it does:<\/strong> Loads the GTM container script so that tags configured inside GTM (analytics, advertising, etc.) can fire according to consent status.<\/li>\n<li><strong>What data is sent:<\/strong> The GTM Container ID and standard browser information (IP address, user agent, page URL, referrer) are sent to Google's servers when the script is loaded. Additional data may be collected depending on the tags configured within GTM by the site administrator.<\/li>\n<li><strong>When it is sent:<\/strong> On every front-end page load, after the consent defaults have been set.<\/li>\n<li><strong>Service provider:<\/strong> Google LLC<\/li>\n<li><strong>Terms of Service:<\/strong> <a href=\"https:\/\/www.google.com\/analytics\/terms\/tag-manager\/\">https:\/\/www.google.com\/analytics\/terms\/tag-manager\/<\/a><\/li>\n<li><strong>Privacy Policy:<\/strong> <a href=\"https:\/\/policies.google.com\/privacy\">https:\/\/policies.google.com\/privacy<\/a><\/li>\n<\/ul>\n\n<h4>Google Analytics 4 (GA4) via gtag.js<\/h4>\n\n<p>When a GA4 Measurement ID is entered and no GTM Container ID is configured, the plugin loads the Google Analytics gtag.js script from Google's servers.<\/p>\n\n<ul>\n<li><strong>What it does:<\/strong> Loads the GA4 measurement script to collect website analytics data (page views, events, etc.) according to consent status.<\/li>\n<li><strong>What data is sent:<\/strong> The GA4 Measurement ID and standard browser information (IP address, user agent, page URL, referrer) are sent to Google's servers. Analytics data (page views, session data, events) is only collected according to the visitor's consent choices.<\/li>\n<li><strong>When it is sent:<\/strong> On every front-end page load, after the consent defaults have been set. Actual analytics data collection depends on user consent.<\/li>\n<li><strong>Service provider:<\/strong> Google LLC<\/li>\n<li><strong>Terms of Service:<\/strong> <a href=\"https:\/\/marketingplatform.google.com\/about\/analytics\/terms\/us\/\">https:\/\/marketingplatform.google.com\/about\/analytics\/terms\/us\/<\/a><\/li>\n<li><strong>Privacy Policy:<\/strong> <a href=\"https:\/\/policies.google.com\/privacy\">https:\/\/policies.google.com\/privacy<\/a><\/li>\n<\/ul>\n\n<p><strong>Note:<\/strong> No data is sent to any external service by this plugin unless the site administrator explicitly configures a GTM Container ID or GA4 Measurement ID. The cookie consent preferences are stored locally in the visitor's browser and are not transmitted to any external server.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>vgdev-cookie-banner-consent-mode-v2<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress<\/li>\n<li>Go to <strong>Settings \u2192 Consent Mode<\/strong> to configure your options<\/li>\n<li>Enter your GTM Container ID or GA4 Measurement ID<\/li>\n<li>Customize the banner appearance and behavior<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20google%20tag%20manager%3F\"><h3>Do I need Google Tag Manager?<\/h3><\/dt>\n<dd><p>No. You can use it standalone with a GA4 Measurement ID. If you configure GTM, GA4 is managed from within GTM and the standalone GA4 field is ignored.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20wpml%20or%20polylang%3F\"><h3>Does this work with WPML or Polylang?<\/h3><\/dt>\n<dd><p>Yes. The banner language is automatically detected. You can also set per-language privacy policy URLs.<\/p><\/dd>\n<dt id=\"will%20this%20break%20my%20pagespeed%20score%3F\"><h3>Will this break my PageSpeed score?<\/h3><\/dt>\n<dd><p>No. Enable Performance Mode in General Settings to lazy-load the banner after user interaction, keeping your PageSpeed score high.<\/p><\/dd>\n<dt id=\"is%20this%20compliant%20with%20google%27s%20eu%20user%20consent%20policy%3F\"><h3>Is this compliant with Google's EU User Consent Policy?<\/h3><\/dt>\n<dd><p>Yes. The plugin implements Google Consent Mode v2 with all required signals defaulting to <code>denied<\/code> before any user interaction.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Google Consent Mode v2 with all 7 signals<\/li>\n<li>Google Tag Manager integration (head + body noscript)<\/li>\n<li>Google Analytics 4 standalone support<\/li>\n<li>29 built-in languages<\/li>\n<li>Multilingual privacy policy URLs (per language)<\/li>\n<li>Performance Mode (lazy load on user interaction)<\/li>\n<li>Force Consent mode<\/li>\n<li>Fully customizable banner, buttons, floating button<\/li>\n<li>Color picker for all UI elements<\/li>\n<\/ul>","raw_excerpt":"GDPR cookie consent banner with Google Consent Mode v2, GTM &amp; GA4 integration. Lightweight, self-hosted, multilingual, fully customizable.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/dzo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/285210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dzo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/dzo.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/dzo.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=285210"}],"author":[{"embeddable":true,"href":"https:\/\/dzo.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/vgdevsolutions"}],"wp:attachment":[{"href":"https:\/\/dzo.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=285210"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/dzo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=285210"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/dzo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=285210"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/dzo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=285210"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/dzo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=285210"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/dzo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=285210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}