{"id":366498,"date":"2026-10-09T19:52:19","date_gmt":"2026-10-09T19:52:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/zest-cmp\/"},"modified":"2026-10-09T22:00:41","modified_gmt":"2026-10-09T22:00:41","slug":"zest-cmp","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/zest-cmp\/","author":23563342,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.8.0","stable_tag":"2.8.0","tested":"7.1.3","requires":"5.2","requires_php":"7.4","requires_plugins":null,"header_name":"Zest CMP","header_author":"FreshJuice","header_description":"Lightweight GDPR\/CCPA cookie consent toolkit with script blocking, cookie interception, and a beautiful Shadow DOM UI \u2014 powered by @freshjuice\/zest.","assets_banners_color":"26529d","last_updated":"2026-10-09 22:00:41","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/cookiezest.com","header_author_uri":"https:\/\/freshjuice.dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":56,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.1":{"tag":"1.1.1","author":"freshjuice4dev","date":"2026-10-09 19:52:04","revision":3737272},"2.8.0":{"tag":"2.8.0","author":"freshjuice4dev","date":"2026-10-09 22:00:41","revision":3737368}},"upgrade_notice":{"2.8.0":"<p>Updates Zest to 2.8.0 with configuration and browser API fixes. The version jumps from 1.1.1 to match the bundled library. Existing settings are preserved.<\/p>","1.1.1":"<p>Fixes the remaining source-documentation and asset-enqueue issues from the WordPress.org review.<\/p>","1.1.0":"<p>No network requests from wp-admin anymore. Optional geo gating is now documented; the plugin works fully without it.<\/p>","1.0.0":"<p>Initial release. Please test on a staging site first.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3737272,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3737272,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3737272,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3737272,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3737272,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.1","2.8.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3737272,"resolution":"1","location":"assets","locale":"","width":1200,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3737272,"resolution":"2","location":"assets","locale":"","width":1200,"height":900}},"screenshots":{"1":"The consent banner with default settings","2":"The plugin settings page in WordPress admin"}},"plugin_section":[],"plugin_tags":[20011,20272,389,131785,396],"plugin_category":[54],"plugin_contributors":[285438,145565],"plugin_business_model":[],"class_list":["post-366498","plugin","type-plugin","status-publish","hentry","plugin_tags-consent","plugin_tags-cookie-banner","plugin_tags-cookies","plugin_tags-gdpr","plugin_tags-privacy","plugin_category-security-and-spam-protection","plugin_contributors-freshjuice4dev","plugin_contributors-reatlat","plugin_committers-freshjuice4dev"],"banners":{"banner":"https:\/\/ps.w.org\/zest-cmp\/assets\/banner-772x250.png?rev=3737272","banner_2x":"https:\/\/ps.w.org\/zest-cmp\/assets\/banner-1544x500.png?rev=3737272","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/zest-cmp\/assets\/icon.svg?rev=3737272","icon":"https:\/\/ps.w.org\/zest-cmp\/assets\/icon.svg?rev=3737272","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/zest-cmp\/assets\/screenshot-1.png?rev=3737272","caption":"The consent banner with default settings"},{"src":"https:\/\/ps.w.org\/zest-cmp\/assets\/screenshot-2.png?rev=3737272","caption":"The plugin settings page in WordPress admin"}],"raw_content":"<!--section=description-->\n<p>Zest CMP integrates the <a href=\"https:\/\/cookiezest.com\/\">Zest<\/a> consent toolkit into WordPress. It provides a beautiful, accessible consent banner with Shadow DOM isolation, intelligent script blocking, cookie\/storage interception, and support for 12 languages out of the box.<\/p>\n\n<p><strong>Key features:<\/strong><\/p>\n\n<ul>\n<li><strong>Shadow DOM UI<\/strong> \u2014 banner, settings modal, and floating widget are fully encapsulated. Your site's styles never leak in; Zest's styles never leak out.<\/li>\n<li><strong>Script blocking<\/strong> \u2014 four modes (safe, manual, strict, doomsday) with automatic detection of known trackers. Zest installs interceptors before any tracking script can fire.<\/li>\n<li><strong>Cookie &amp; storage interception<\/strong> \u2014 intercepts <code>document.cookie<\/code>, <code>localStorage<\/code>, and <code>sessionStorage<\/code> writes, queuing them until consent is granted.<\/li>\n<li><strong>12 languages<\/strong> \u2014 built-in translations for English, German, Spanish, French, Italian, Portuguese, Dutch, Polish, Ukrainian, Russian, Japanese, and Chinese. Auto-detects from the browser.<\/li>\n<li><strong>Do Not Track \/ GPC<\/strong> \u2014 respects the browser privacy signal and auto-rejects non-essential cookies when DNT\/GPC is enabled.<\/li>\n<li><strong>Geo \/ jurisdiction gating<\/strong> \u2014 optional opt-in feature that shows a GDPR banner in the EU, a \"Do Not Sell\" link in the US, and nothing elsewhere. Uses the hosted zest-geo gateway or your own resolver.<\/li>\n<li><strong>Button layouts<\/strong> \u2014 choose between row (default), split, or split-modern layouts.<\/li>\n<li><strong>Hard consent wall<\/strong> \u2014 optional full-viewport overlay that blocks page interaction until the visitor decides.<\/li>\n<li><strong>Backdrop blur<\/strong> \u2014 optional frosted-glass effect on the modal and wall overlay.<\/li>\n<li><strong>Hidden categories<\/strong> \u2014 remove unused consent categories from the settings modal. Hidden categories are forced to rejected.<\/li>\n<li><strong>Zero dependencies<\/strong> \u2014 vanilla JavaScript, no jQuery, no React, nothing.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>By default this plugin is fully self-contained and makes no network requests of its own.<\/p>\n\n<p>If you enable <strong>Geo \/ jurisdiction gating<\/strong> in the settings, the visitor's browser requests <code>geo.cookiezest.com<\/code> once to look up which privacy regulations apply in the visitor's country, so the right consent banner is shown (full banner in the EU\/EEA\/UK, notice in regulated US states, nothing elsewhere). The lookup sends the visitor's IP address to the gateway at the time of the request, and the gateway returns only regulation flags \u2014 it is not a tracking service and the IP is not logged or stored by it. See the gateway's <a href=\"https:\/\/cookiezest.com\/privacy\/\">privacy notes<\/a> and <a href=\"https:\/\/cookiezest.com\/terms\/\">terms<\/a>.<\/p>\n\n<p>This service is provided by CookieZest (FreshJuice). It is optional and off by default; the plugin works fully without it.<\/p>\n\n<h3>Source code<\/h3>\n\n<p>Plugin source: https:\/\/github.com\/freshjuice-dev\/zest-wordpress\nZest JavaScript library (MIT license): https:\/\/github.com\/freshjuice-dev\/zest\nSource for the bundled Zest v2.8.0: https:\/\/github.com\/freshjuice-dev\/zest\/tree\/v2.8.0<\/p>\n\n<p>The dist\/ directory includes readable JavaScript bundles and source maps with the original source for every minified bundle, plus the Zest MIT license. Zest's UI CSS is generated by its JavaScript source in src\/ui\/styles.js.<\/p>\n\n<p>To rebuild the library, check out the v2.8.0 tag in the Zest repository, run npm ci, then npm run build (Rollup). To copy the bundles into the plugin, set ZEST_REPO to that checkout and run .\/scripts\/build.sh from the plugin repository. The build rejects a library version that does not match the plugin's bundled version. dist\/VERSION records the bundled library version.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/zest-cmp\/<\/code>, or install through the WordPress plugins screen.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Go to <strong>Settings &gt; Cookie Consent<\/strong> to configure the banner.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20caching%20plugins%3F\"><h3>Does this work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. Zest runs entirely client-side in the browser. The consent banner and script blocking happen after the cached HTML is served, so caching plugins like WP Super Cache, W3 Total Cache, or LiteSpeed Cache work without any special configuration.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20google%20analytics%20%2F%20gtm%3F\"><h3>Does this work with Google Analytics \/ GTM?<\/h3><\/dt>\n<dd><p>Yes. Zest automatically blocks Google Analytics, Google Tag Manager, Facebook Pixel, and other known trackers until the visitor grants consent. Once consent is given, blocked scripts are replayed automatically.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20subscription%3F\"><h3>Do I need a subscription?<\/h3><\/dt>\n<dd><p>No. Zest is 100% free and open source. This plugin is GPL-3.0-or-later; the bundled Zest JS library is MIT-licensed. No subscription, no SaaS dependency, no external API calls (unless you opt-in to geo gating).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.8.0<\/h4>\n\n<ul>\n<li>Updated the bundled Zest library to 2.8.0 and aligned the plugin version with it.<\/li>\n<li>Fixed automatic initialization with data attributes and invalid blocking-mode fallback.<\/li>\n<li>Added Zest.updateConsent() and Zest.resolveGeo() to the full browser build.<\/li>\n<li>Fixed release packaging so SVN includes the JavaScript bundles and directory assets.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Bundled readable Zest JavaScript and source maps, with public source links and build instructions.<\/li>\n<li>Enqueued live-preview scripts and styles through WordPress APIs.<\/li>\n<li>Moved the reset confirmation into the enqueued admin script.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Removed the blog and changelog dashboard widgets and their feed requests to cookiezest.com \u2014 the plugin now makes no network requests from wp-admin (Guidelines 7 &amp; 9).<\/li>\n<li>Documented the optional geo gating service in the readme (Guideline 6).<\/li>\n<li>Admin styles and scripts are now enqueued via wp_enqueue_style\/wp_enqueue_script instead of inline tags (Guideline 13).<\/li>\n<li>Config output uses wp_add_inline_script instead of a raw script tag in wp_head.<\/li>\n<li>Overview widget styles use wp_add_inline_style.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial scaffolding. Settings page, enqueue, i18n, and build pipeline.<\/li>\n<li>Bundles Zest v2.7.0.<\/li>\n<li>Requires PHP 7.4+.<\/li>\n<\/ul>","raw_excerpt":"Lightweight GDPR\/CCPA cookie consent toolkit with script blocking, cookie interception, and a Shadow DOM UI. Powered by @freshjuice\/zest.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/366498","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=366498"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/freshjuice4dev"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=366498"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=366498"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=366498"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=366498"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=366498"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=366498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}