---
title: "Installing Zest on WordPress"
url: "https://cookiezest.com/learn/installing-zest-on-wordpress"
description: "Install the free Zest CMP WordPress plugin, activate it, and configure your consent banner from the Settings screen - no code required"
---

Zest ships as a WordPress plugin for sites running WordPress 5.2+ and PHP 7.4+. No theme edits, no script injection, no CDN snippet - everything is configured from the WordPress admin.

At the moment the plugin is distributed through [GitHub releases](https://github.com/freshjuice-dev/zest-wordpress/releases) while the WordPress.org directory listing is in review. Both are the same package.

## Install the plugin

Nothing exotic here - the same flow as any plugin zip:

1.  Download the latest `zest-cmp.zip` from [GitHub releases](https://github.com/freshjuice-dev/zest-wordpress/releases/latest)
2.  In your WordPress admin, go to **Plugins → Add New → Upload Plugin**
3.  Choose the zip, click **Install Now**, then **Activate**

Alternatively, unzip `zest-cmp.zip` and upload the folder to `/wp-content/plugins/` via SFTP, then activate it on the **Plugins** screen.

Once activated, a new **Settings → Cookie Consent** entry appears in your admin menu.

## The settings screen

Open **Settings → Cookie Consent**. Two tabs: **Overview** shows a live preview of the banner as your visitors will see it - change any setting and it updates about 600ms later. Click **Replay banner** to re-trigger it. **Settings** holds everything else.

![Zest Cookie Consent settings screen in the WordPress admin](/_astro/wordpress-settings.BKLK1AHZ_1JUcqU.webp)

The fields, top to bottom:

| Field | What it does |
| --- | --- |
| Enable Zest consent banner | Master switch for the front-end banner |
| Script blocking mode | safe blocks known trackers (recommended), manual blocks only what you list, strict blocks everything until consent, doomsday blocks all scripts unconditionally |
| Do Not Track / GPC signal | Auto-reject non-essential cookies, preselect in the modal, or ignore the signal |
| Consent expiration (days) | How long a visitor’s choice stays valid before they’re asked again |
| Floating widget | Reopens the consent settings after the banner is dismissed |
| Privacy policy URL / Imprint URL | Linked from the banner |
| Banner position, theme, accent color | Appearance - theme auto-follows the visitor’s system preference |
| Button layout | Row, split, or split-modern |
| Language | Auto-detected from the visitor’s browser, or pinned to one of 12 built-in translations |

And the preview pane itself:

![Live banner preview inside the Zest settings screen](/_astro/wordpress-live-preview.C6pxBOvq_1J3XM7.webp)

Changes take effect immediately - the live preview updates about 600ms after any change.

## What the plugin adds to your pages

On activation the plugin injects two things into your site’s front-end:

1.  The Zest bundle (`zest.js`) - the same zero-dependency library behind [the CDN install](/docs/getting-started/)
2.  A small inline `window.ZestConfig` object with your settings - no secrets, no remote calls

Script blocking, cookie interception, and the Shadow DOM UI all behave exactly as described in [Script blocking](/docs/script-blocking/) - the plugin just replaces the manual `<script>` tag with a settings screen.

## Caching plugins

The config is printed inline on every page, so page caches (WP Super Cache, W3 Total Cache, LiteSpeed, Cloudflare) are fine - purge them after changing settings so the new config reaches visitors. If your host aggressively minifies or defers scripts, check that `zest.js` loads before your tracking scripts; the interceptors must install first.

## Uninstall

Deactivate and delete the plugin as usual. On uninstall, all plugin options are removed from the database - nothing is left behind. Consent records set by the Zest bundle follow the expiration you configured.

## Own your cookie banner.

Zest is free and MIT-licensed, and it doesn't phone home to anyone.  
Drop the script in and you're done.

[Try it free](/play/)