Seamless Handbook
Setup, settings and troubleshooting
Getting started
Three steps, and the third one is optional. Most sites are finished in under five minutes.
Install the plugin
In WordPress, go to Plugins, Add New, Upload Plugin, and choose the zip file from your purchase email. Activate it.
Activate your licence
Open Seamless, then License, and enter the key from your receipt. Caching and optimisation stay off until you do, so this step is what switches everything on.
Look at Diagnostics
The Diagnostics tab checks your server and tells you plainly if anything needs attention. A clean report means you are done.
What happens automatically
On activation Seamless adds the caching constant to your wp-config.php, installs its drop-in at wp-content/advanced-cache.php, and adds a block to .htaccess on Apache and LiteSpeed. If any of those files cannot be written, Diagnostics says so and explains exactly what to do.
Before you start
Do not run two page caching plugins at once. Diagnostics will warn you if it finds another one. On nginx, caching still works and is served by PHP, which is fast; Diagnostics shows an optional snippet you can add to your server block for the faster path that skips PHP entirely.
How it works
Two ideas carry most of the benefit, and both are worth understanding because they explain the behaviour you will see.
Pages are stored, not rebuilt
A cached page is written to disk already compressed and served without running WordPress. Where your server allows it, without running PHP at all. Editing a post clears that post, the home page, its archives, its author page and every category and tag it belongs to, then rebuilds them straight away, so nothing is left uncached.
Only the CSS in use is inlined
Your visitors' browsers report which CSS rules a page actually used, as a list of rule numbers. Seamless then rebuilds the CSS from the stylesheet files already on your own disk. No page content, no HTML, no URLs and no personal data are sent anywhere, and there is no third party service involved.
Nothing is ever really removed. The full stylesheet is restored as soon as the visitor moves the mouse, scrolls, taps or presses a key, and at idle if they do none of those. A rule missed during measurement costs a brief unstyled hover state, not a broken page.
Why the first visit is not cached
By design. Someone reaching a page that is not yet cached is served immediately, without waiting for optimisation, and the optimised copy is built in the background moments later. Nobody ever waits for a cache to be built.
Settings
Every tab in the plugin, and what the options there actually do. Sensible defaults are already set, so you can safely ignore most of this.
Cache
Page caching itself, plus what should never be cached.
- Separate cache for mobile
- Turn on only if your theme serves different HTML to phones. It doubles the number of stored pages.
- Cache pages for logged-in users
- Off by default, because signed-in views are usually personal.
- Rebuild on a schedule
- Refreshes stored pages regularly, useful for sites with content that changes without an edit.
- Exclusions
- URLs never to cache, cookies that prevent caching, and query parameters that genuinely change a page.
CSS
Used CSS, minification, and webfonts.
- Inline only the CSS in use
- The big win for first paint. If something looks wrong, see Troubleshooting below rather than switching it off.
- Always keep these selectors
- Your escape hatch. Anything listed here is never dropped.
- Self-host Google Fonts
- Downloads the font files to your server so a page never connects to Google. On by default.
- Show text while fonts load
- Keeps text visible instead of invisible while a webfont arrives.
JavaScript
Getting scripts off the critical path without breaking them.
- When scripts run
- After parsing is the safest and is what browsers do natively. On idle and on interaction are more aggressive.
- Never delay scripts matching
- Add a filename, an ID, or a snippet of inline code to leave a script alone.
- Prefetch links on hover
- Fetches the next page while a visitor is still deciding. Carts, checkouts and logout links are excluded.
Images
Loading behaviour, conversion to modern formats, and resizing.
- Convert images to WebP or AVIF
- On by default. Originals are never modified and conversion can be undone at any time.
- Load offscreen media only when needed
- Images near the top are never delayed, because that would make the page appear slower.
- Load YouTube videos only on click
- Shows a thumbnail and loads the player on the click, saving over a megabyte per embed.
- Add missing width and height
- Lets the browser reserve space so the page does not jump as images arrive.
CDN
Bring your own CDN: point it at your site as origin and enter the hostname. Asset URLs are rewritten to it, including inside the inlined CSS where font and background image references live.
- Cloudflare
- Connect it so both caches clear together. Otherwise clearing Seamless changes nothing for visitors, because Cloudflare keeps serving its own copy. Use a scoped API token with only the Zone and Cache Purge permission, never your global API key.
Database
Redis object caching, and tidying up what WordPress leaves behind.
- Redis object cache
- Speeds up everything a page cache cannot serve: signed-in views, the admin, and checkout. Needs Redis and the PHP redis extension.
- Cleanup
- Revisions, auto drafts, trashed content, spam comments and expired transients. Each category is opt-in separately and counts are shown before anything is deleted. The most recent revisions of every post are always kept.
Cleanup
Switches off WordPress features your site may not use. Everything here is off by default, because these change what your site does, not just how fast it is. Turn on only what you are sure you do not need.
Script manager
Per-page control over which scripts and styles load. Turn it on, then open any page on your site and choose Script manager in the admin bar to see everything that page loads, grouped by the plugin or theme it came from. Switch off what a page does not need, on that URL, across a post type, or everywhere with exceptions.
Troubleshooting
The handful of things that actually come up, and what to do about each.
Something looks wrong after enabling used CSS
Add the selector to Always keep these selectors on the CSS tab. This normally affects styles applied by JavaScript, a menu that only gets a class when clicked for instance, which no observation of the page can discover ahead of time. You can also switch the feature off and everything else keeps working.
A script stopped working after enabling JavaScript delay
Add something identifying it to Never delay scripts matching: a filename, an ID, or a snippet of its inline code. Or choose After parsing, which is the safest mode and is what browsers do natively.
I use Divi or Elementor. Will one page's styles randomly break?
That is the failure this plugin was specifically built to avoid, and it has two causes, both of them the cache's fault rather than the builder's.
Page builders put each page's own CSS in an inline style block, so every page presents an identical set of stylesheet links. A caching plugin that decides those pages can share one set of used CSS will serve the homepage's CSS to a page built from completely different modules. Seamless identifies a template by the modules a page is built from, so a measurement is only ever shared between pages assembled from the same parts.
The second cause is that builders generate CSS into their own cache directory and delete it on their own schedule. A live page rewrites that file on its next render, but a cached page never renders again, so it keeps asking for a file that is gone. Seamless will not store a page whose generated CSS is missing, and re-checks stored pages hourly. Pages, then Cache health, shows what it found.
Does it work with WooCommerce?
Yes. Cart, checkout and account pages are excluded automatically, and any page is excluded while a cart cookie is present. Add any other dynamic URLs under Cache, then Exclusions.
Does the used CSS feature send my pages anywhere?
No. Browsers send a list of rule numbers, for example that rules 3, 7 and 12 of a stylesheet were used, and Seamless reads those rules from the file already on your server. No page content, no HTML, no URLs and no personal data are transmitted, and nothing goes to any third party.
Command line
Useful in a deploy script, or when you would rather not click. All commands run through WP-CLI.
| Command | What it does |
|---|---|
| wp seamless status | Shows what is cached and how the plugin is configured. |
| wp seamless purge | Clears cached pages. |
| wp seamless preload | Warms the cache again by crawling the site. |
| wp seamless doctor | Checks the environment, the same tests as the Diagnostics tab. |
| wp seamless check | Re-tests cached pages against the generated files they reference. Worth running straight after anything that regenerates builder CSS. |
| wp seamless images | Reports on image conversion, and can run it. |
| wp seamless db | Scans the database, and cleans it with the clean flag. |
A typical deploy step is wp seamless purge followed by wp seamless preload, so visitors never meet a cold cache.
Your licence
What your key covers, how to move it, and what happens if it lapses.
Seats and moving sites
Your plan sets how many sites a key may activate. To move a licence to a different site, open Seamless, then License, on the site you are leaving and deactivate it there first. That frees the seat immediately.
If your licence lapses
Nothing breaks. A lapsed, refunded or unverifiable licence stops updates and support, and your site carries on caching exactly as before. A billing problem should never take a live site down, so it cannot.
Updates
Updates arrive through the normal WordPress updates screen while your licence is active. There is nothing to configure.
Getting help
If something here did not answer your question, email dev@usamagierdien.co.za and include what you tried, what you expected, and what happened instead. A screenshot of the Diagnostics tab is the single most useful thing you can attach.
Seamless is a Pro plugin by Presswright. This handbook covers version 1.69.1.