Documentation

Nivoli Edge docs

Everything the plugin does and how to drive it, from a five-minute managed setup to self-hosted zones, rules, purging, and the CLI. Plugin version 1.29.0.

How it works

Nivoli Edge has two halves that share one plugin and, on managed plans, one license key:

The HTML your theme outputs is never restructured; only URLs change, at the filter boundary. Add the no-cf CSS class to any element to opt it out.

Quickstart: managed (recommended)

No Cloudflare account, plan, or DNS work.

  1. Install and activate the plugin.
  2. Open Nivoli Edge → Managed Edge → License and paste your key (it arrives by email the moment checkout completes; every plan starts with a 14-day free trial). Activation provisions a CDN tenant and fills the rewrite settings in automatically.
  3. For page caching, paste your dashboard URL from the welcome email under Settings → Page cache.
  4. The Dashboard's pipeline check should read ✓ working. Done.

Quickstart: self-hosted (free)

Images need a Cloudflare zone with Image Resizing enabled on the host that serves them (bundled with Cloudflare Pro plans, or pay-per-1000):

  1. Proxy the image host through Cloudflare (orange cloud) and enable Speed → Optimization → Image Resizing.
  2. Verify with any image: https://yoursite.com/cdn-cgi/image/width=200/wp-content/uploads/….jpg must serve a resized image. A 404 or error 9421 means Image Resizing isn't on.
  3. In Nivoli Edge → Settings, confirm the auto-detected image host + path prefix and toggle Enabled.
  4. Open Image rules → Size mapping and click once to create rules for your theme's registered sizes. The catch-all covers everything else.

Pages need a tag-aware edge you already run: pick Fastly, Cloudflare Enterprise, or a custom webhook under Settings → Page cache and supply the token. The plugin verifies the token actually has purge permission at setup time.

Image rules & presets

Every rewrite goes through a preset, a named recipe of width, height, fit, format, quality, and srcset behavior. Presets attach to images via bindings:

BindingMatches
Size-nameA registered WordPress size (thumbnail, medium, custom). Checked first.
Filename-globA pattern like *__square.*. Checked when no size-name matches.
Dimension fallbackFilenames with a -WxH suffix transform at exactly those dimensions.
Catch-allEverything else gets format=auto + a 1920px cap. Recommended on.

Size mapping creates presets + bindings from your theme's registered sizes in one click. Inline content, CSS backgrounds, and lazy-load data attributes are covered by the content scan toggles under Settings → Behavior.

Page caching & purging

# Every page response carries the tags it was built from
Surrogate-Key: post-42 category-7 author-3 home

# One post save → one surgical purge
POST /purge  { "keys": ["post-42", "category-7", "home"] }

Purges dispatch non-blocking on save, delete, and comment events, so editing never waits on a CDN round-trip. The purge activity log lives under Diagnostics → Page cache; prewarm-after-purge re-fetches affected URLs ~45s later so the next visitor hits a warm cache. Theme and plugin developers can add tags via the nivoli_edge_pc_keys_for_request / nivoli_edge_pc_keys_for_post filters.

Audits & repair tools

Automation & alerts

Debugging

ToolWhat it shows
?cfdebug=1Front-end overlay (admins only): badges every image hit/miss/skip with the matched preset, plus grouped miss patterns.
?ect_trace=1Page-cache trace: the tags a page carries and why it is or isn't cacheable.
Live probeDiagnostics tab: fetches a real Media Library image through the full pipeline and reports each stage.
Feature mapDiagnostics tab: every feature, its on/off state, and where to configure it.

WP-CLI

# status of both halves
wp nivoli-edge status

# activate a license / enable optimization
wp nivoli-edge activate <key>
wp nivoli-edge enable

# run the coverage audit / probe the pipeline / purge tags
wp nivoli-edge audit
wp nivoli-edge probe
wp nivoli-edge purge post-42 home

Built for agency provisioning: every setup step scriptable, exit codes are meaningful.

The managed service

A license key connects the plugin to the Nivoli edge, which runs both halves for you and adds what a plugin alone can't. Everything below lives in WP admin under Managed Edge; metrics are cached for an hour and served instantly, with a Refresh data link in the rail when you want live numbers.

Quota model: plans meter transforms: unique image variants in a rolling 30-day window. Cached re-serves are free and unlimited; full-page caching is included under fair use. Over the cap, optimization pauses gracefully: images keep serving from your origin, nothing breaks.

Origin Shield

Always on, nothing to configure. When your server errors or stops responding, the edge serves the last good cached copy of every page for up to 7 days. You get an email when the shield engages and another when your origin recovers (switchable under Email & reports). The Origin shield pane keeps an incident history with honest durations; scattered single-request errors are counted separately as blips, not stitched into fake outages. "Not covered" requests are pages nobody had visited recently: a higher cache hit rate widens the shield.

The edge security suite

All enforced at Cloudflare's edge, before a request reaches PHP; they complement Wordfence/Sucuri rather than replace them. The Edge shields pane opens with an attack-surface strip: XML-RPC blocked vs reached, logins stopped, AI crawlers and wp-admin hits blocked, over the last 14 days.

Audience analytics

On Stats & overview: human pageviews vs bots (14 days), visitors per day, top referrers, visitor countries, devices and regions, plus served-from-cache timing vs your origin's render time. Measured entirely at the edge from traffic you already serve: no tracking script, no cookies, no consent banner needed, and no visitor-level data is ever stored. A monthly audience digest rides along with the stats email.

URL rules and the 404 cleanup inbox

URL rules block dead routes with a cached 410 or redirect moved pages with a 301/302, straight from the edge, with per-rule hit counts and a what-was-blocked log. The Redirects pane carries a suggestions inbox: the edge watches which URLs 404 against your origin and proposes block/redirect rules (with guessed targets) that you apply in one click. URL rules live under Security in the rail, because blocking is how the pane is used.

Edge controls

The rail groups the panes that decide what the edge keeps, separately from the panes you read daily:

The same pane reports what your origin's own Cache-Control is doing. no-store is always obeyed, with no setting, because it is plain HTTP correctness and it is what makes the translated-slug case work. no-cache and private are softer (no-cache means "revalidate", not "never store", and themes emit both carelessly), so the edge counts them from day one and stops caching them only when you switch to Enforce. Switching also purges what is already stored, since a page cached before the switch would otherwise keep being served. An enforced directive reports as BYPASS rather than MISS, so an uncacheable page cannot show up as a fake 0% hit rate. Counts for a merely measured directive are a floor: the response is still cached, so only the requests that reach your origin carry a marker.

Reporting is available on every managed plan, because it is diagnostic. Switching to Enforce is gated like the other advanced controls (Growth+); returning to measure never is.

Client reports and the agency console

The printable client report (Tools) is white-label: your name and logo, no vendor branding. On Business+ the monthly delivery report can also email itself to up to 3 recipients under your brand (Email & reports → Branded client reports), and each site can additionally send its own numbers to its own client.

Fleet management lives in its own console at console.nivoli.com, outside WordPress, so you do not sign into a client's site to see how the fleet is doing. Sign-in is by magic link to your account email, with no password to share around a team. The Overview carries four things:

The Sites table lists page hit rate, bandwidth and 48-hour failures per site, with Manage into that site's dashboard, a per-site purge, and a direct WP admin link.

What unlocks where

Matching what the server actually enforces:

FAQ

Will this break my theme?

No. Only URLs change, at the filter boundary. The HTML structure is untouched, and no-cf opts any element out.

How is this different from Smush / ShortPixel / Optimole?

Those compress and re-host your images on their CDN. Nivoli Edge transforms on the fly from your origin: no duplication, no migration, no storage bill.

I run a membership site or an LMS. Is this for me?

Partly, and here is the honest split. Everything public is cached and shielded normally: your sales page, catalog, pricing and blog, which is usually where most of the traffic and all of the signups are. Security before PHP, image delivery, edge analytics and surgical purge apply to every visitor, signed in or not. But a logged-in member's page views are not cached, so they get no edge time to first byte and no outage coverage. We have not built per-user cache buckets or edge-side includes. If the pages that need to be faster are the ones behind the login, better hosting or an origin-side cache will move that number and we will not. The fuller version is here.

Does this replace WP Rocket, FlyingPress or NitroPack?

No, and it does not try to. Those own the render path: minification, critical CSS, unused-CSS removal, script deferral, lazy loading, font handling. Nivoli Edge ships none of that. We answer the request from the node nearest your reader, keep the site up when your server stops, block junk before PHP starts, and measure all of it at the edge. Keep your optimizer and run both; they touch different layers. If you are comparing PageSpeed scores alone, an optimizer is the tool that moves them. If your problem is time to first byte, outages, scanners or not knowing what your edge actually serves, that is this.

Does the page caching conflict with Wordfence / Sucuri?

No, these are different layers. Security plugins inspect requests inside PHP; the edge shields stop junk before it reaches your server. They complement each other.

Do I need to change my web-server config?

Only if your origin runs its own micro-cache (nginx fastcgi cache, Varnish) and you use the manual purge trigger; the Cache protection pane shows the exact snippet. A standard PHP-FPM origin needs nothing.

What happens if I cancel a managed plan?

The plugin reverts to serving originals from your own server. Your site stays up; the free feature set keeps working.

Privacy & external services

The free tier's core rewriting contacts no external service. Opt-in integrations: the Nivoli managed edge (license verification + usage stats; no visitor data), Cloudflare / Fastly APIs (only with your own tokens, for purges), and Tinify (only images you explicitly compress, with your own key). Full details in the plugin readme, Terms, and Privacy Policy.