Enhanced Custom CSS Pro — ship CSS like your team ships code
{} Enhanced Custom CSS PRO
PAID ADD-ON NEEDS THE FREE PLUGIN FOR TEAMS

Ship CSS like your team ships code.

Bundle entries into a release, pin the exact revision of each, get it reviewed, then apply the whole set at once — validated first, one cache purge, one-click rollback.

Get Pro — from $59 See what a release does
14-DAY REFUND· NO ACCOUNT REQUIRED· WORKS OFFLINE· YOUR CSS NEVER LEAVES YOUR SERVER
‹ Releases Spring launch Approved Preview the whole set Deploy…
APPROVED Approved yesterday by admin. Nothing is live until you deploy it.
IN THIS RELEASE + Add entries
Each entry is frozen at the revision you pin here. Editing the entry afterwards does not change what this release deploys.
Header & nav tweaks PASSES CHECK
PINNED TO 2 hours ago · mariana “pre-redesign baseline” Change
Pricing table polish PASSES CHECK
PINNED TO 6 hours ago · mariana Change
Spring campaign landing CHANGED SINCE PINNED
PINNED TO (OLDER) Yesterday 16:04 · admin Change
1 newer revision since this pin. Re-pin to latest
VALIDATION · ALL CLEAR
3 entries checked: each one parses and stays inside the delivery limits. The same check runs again the moment you deploy.
ACTIVITY
Approved admin · yesterday 12:05 2 NOTIFIED
Changes requested RESOLVED tobias · yesterday 11:48 “Labels are too light on mobile — bump to #5c5f6b before this goes out.”
Submitted for review · assigned to tobias mariana · yesterday 09:30
WHAT “DEPLOY” ACTUALLY DOES

Four entries change together, or none of them do.

Publishing CSS one entry at a time means a window where half your redesign is live. A release closes that window. Here is the whole promise, in order:

01 — VALIDATED

Every entry re-checked

The same validation runs again on the server at deploy time. One failure stops the whole thing — you can’t ship a release with broken CSS in it.

2 02 — ONE UNIT

Applied together

All the entries switch to their pinned revisions at once — not one after another while visitors watch.

3 03 — ONE PURGE

Cache cleared once

A single purge after the switch, so nobody gets a half-updated site. Cloudflare, WP Engine, Kinsta and SpinupWP are handled for you.

4 04 — REVERSIBLE

Rollback stays ready

The state of every entry is recorded before the switch. One click puts it all back — and tells you exactly what will change before you confirm.

Roll back “Spring launch”?
Every entry goes back to the revision it had before this release was deployed. Here is exactly what changes.
ENTRY FROM (NOW LIVE) BACK TO
Header & nav tweaks 2 hours ago Yesterday 16:04
Pricing table polish 6 hours ago 3 days ago
Spring campaign landing First published by this release — returns to draft Yesterday 16:04 Draft
One cache purge, once. The release itself stays on record as Rolled back — it is never re-run in place, so the history of what shipped when survives. Rolling back moves history forward rather than erasing it: each entry gains a new revision holding the restored state, so what shipped and what undid it are both on the record.
REVIEW & APPROVAL

Somebody looks before it ships.

Submit a release for review, optionally assigned to a named approver. They can approve or ask for changes — with a note, because “request changes” without a reason sends the author back to guessing.

Reviewers don’t need edit access. Give someone approve-only and they get a read-only release, a preview of the whole set on the real site, and the two buttons that matter.

Assignment routes the notifications but never blocks another approver
Comment threads on the release, with replies and resolved requests
Optional: make releases how CSS ships, and every editor’s main action becomes “Add to a release”
Publishing straight to the site stays available one step further in — used, it’s recorded as its own kind of event and the approvers are told
Or make it mandatory, and the server refuses live changes from anyone without deploy access — not just the interface
Checkout cleanup In review READ ONLY
NEEDS YOUR REVIEW
mariana assigned this to you 2 hours ago. You can approve it or ask for changes — editing the CSS isn’t part of your access.
REVIEW
Read the 3 pinned revisions, or preview the set on the live site, then decide.
Add a note — required when requesting changes
Approve Request changes
You can approve or ask for changes, but not edit the CSS — this release is read-only for you.
CSS THAT’S ALREADY LIVE

Write the change down. Ship it once someone has looked.

Editing live CSS is the awkward case for any review process: the moment you save, it’s on the site — so there’s nothing left to review. Pro records the change as a revision instead. The site keeps serving exactly what it was serving, your edit rides a release, and deploying is what applies it.

Your work is pinned to the release the moment you add it — never a draft you might forget
The release calls it a proposed change, not drift, because differing from what’s live is the whole point
Retention leaves it alone: a change nobody has applied yet isn’t an old revision to sweep up
Header & nav tweaks Live
PROPOSED CHANGE IN “SPRING LAUNCH”
The site is still serving the version from 12 Aug. Your edit deploys with the release.
LIVE NOWPINNED IN RELEASE
position: sticky;
– opacity: .98;
position: sticky;
+ blur(8px);

Everything else Pro adds.

Same app, same screens — the Pro parts appear where you already work. Nothing in the free plugin moves or gets taken away.

SCHEDULING

Publish at 09:00, unpublish on the 7th

Schedule an entry or a whole release. You can’t schedule broken CSS — a schedule publishes while nobody is watching.

WordPress runs schedules on its own clock, so it publishes within minutes of the time you pick — not to the second. Pro ships a health check that tells you whether your site is prompt, and the one line of server cron that fixes it if not.
CONDITIONS

Who sees it, not just where

Role, logged in or out, device, language, URL parameter, date window, and WooCommerce shop, cart and checkout — layered onto the scope you already set.

THIS CSS LOADS ON
Logged-in visitors with the Editor role, on all Pages, until 31 Mar 2026.
AUDIT LOG

Who did what, and when

Published, restored, deployed, approved, rolled back, settings changed — filterable by person, action and date, each row linking to what it concerns.

Plus a notification trail: what was sent, to whom, on which channel, and whether it actually got there.

NOTIFICATIONS

Email and Slack, per event

A grid of events by channel, a heads-up before a scheduled deploy, and failure alerts administrators can’t accidentally mute. Everyone controls their own subscriptions on their profile.

Emails send through WordPress. If your site doesn’t send mail reliably, an SMTP plugin fixes that — not this one.
TAGS & PINS

Name the version you’ll want back

Call a revision “pre-redesign baseline” and pin it so the retention limit never prunes it. Releases pin the revisions they depend on automatically.

DASHBOARD

One widget that stays quiet

What needs you, what’s scheduled next, and one green line when everything’s fine. When it isn’t, that line becomes a short list naming the thing that broke — a cache that didn’t clear, cron running late — each one linking to where you fix it.

WHEN IT GOES WRONG

The failures are designed too.

A scheduled deploy that didn’t fire is the one failure you find out about afterwards. So it says what didn’t happen, why, and — first — that your site is fine.

DIDN’T GO OUT Validation failed at 09:00 — “Checkout field cleanup” has 2 errors in its pinned revision. Nothing was applied: your site is serving exactly what it served yesterday.
Amber, never red — nothing on the site is broken. The one action opens the entry that failed. It won’t retry on its own, because we’d rather not deploy something you haven’t looked at.
CACHE DIDN’T CLEAR Cloudflare refused the purge at 14:02 — the API token had been revoked. Your CSS deployed correctly; some visitors keep seeing the old file until that cache expires on its own.
Amber again, and for the same reason: the deploy worked, only the cleanup didn’t. Settings shows when each cache last cleared and why one didn’t, with a Purge now button for the moment you’ve fixed it.

Every feature, in every tier.

Tiers are about how many sites you run, not how much of the plugin you get. Nothing is held back for the expensive one, no feature switches off, and there’s no key to keep alive.

SINGLE
$59 / year
One site. For your own site, or a client’s.
Buy Single
TEAM MOST BOUGHT
$129 / year
Five sites. Staging and production count as one.
Buy Team
AGENCY
$299 / year
Unlimited sites, for people who build them for a living.
Buy Agency
14-day refund, no questions Every feature in every tier Keeps working after the year ends

Questions people ask before buying.

Do I need the free plugin as well?

Yes. Pro is an add-on, not a replacement — it mounts its screens inside the free plugin you already use. Install the free one first, then activate Pro alongside it.

Who can approve, and who can deploy?

Two separate permissions, assigned per role on the Pro settings page. Administrators get both. Approving never requires edit access, so a reviewer can sign off without being able to change the CSS. On multisite, deploying also requires edit_css — the same permission WordPress itself uses to gate CSS, so Pro never hands out more than core would.

Is “deploy as one unit” really atomic?

We don’t call it a transaction, because that would promise more than WordPress can give. What it does promise: everything is validated first, the entries are applied together, there’s one cache purge, and one click puts it all back.

Will a scheduled deploy fire exactly on time?

Within minutes of it, usually. WordPress only checks for due schedules when someone visits the site, so a quiet site can run late — Pro measures yours and tells you, with the one server-cron line that fixes it.

Does anything leave my server?

No. Not your CSS, not your releases, not your history. There’s no account, no key to enter, and nothing that phones home — install the zip and it works on a machine with the network unplugged. The only outbound calls Pro can make are the ones you set up yourself: a Slack webhook, and cache purges to your own CDN. Those go from your server straight to the service you chose.

What if I deactivate Pro later?

The free plugin carries on with everything it always did. Your entries, scopes and history are untouched — you just lose the release, review and scheduling screens.

Validated first. Applied as one unit. One click back.

For teams who’d rather not find out about a CSS change from a customer.

Get Pro — from $59 Start with the free plugin
css.php