Keeps the site alive. Updates, backups, uptime, certificates, cron, licences and the repair when it all goes wrong.
Why this one exists. This is the work a retainer is actually paid for, and the two failures that end one both live here.
26Playbooks
154Steps written out
15That change anything
1Free on every plan
Every playbook it holds
Smart Safe Update
FreeWeekly18 Aug 2026
Update plugins without ever leaving the site broken. Back up, prove the backup restores, judge each plugin, apply one at a time, verify, roll back on failure.
1
Pre-flight readiness
Decide whether to run at all. If there are no updates, or the site is already in maintenance, it exits here and does nothing.
Stops the run
2
Smart backup
Take a fresh backup labelled for this run. It never modifies a backup that already exists.
Writes
3
Verify backup integrity
Confirm the backup is actually restorable before a single file is touched. If it is not, the run stops here and nothing is updated.
Stops the run
4
Check requirements and compatibility
Give every plugin with an update a verdict and put the queue in order. Changes nothing.
Reads only
5
Apply updates safely
The only step that changes anything. One plugin at a time, with a health check after each, and an immediate rollback of that plugin if the site errors.
Reversible write
6
Visual regression
Compare the key pages before and after to catch layout breakage that returns a 200. Skipped entirely when no screenshot tool is connected.
Reads only
7
Smoke test critical pages
Once everything has settled, confirm the homepage, checkout and contact form still work end to end. Reports only, because step five already handled rollback.
Reads only
8
Final report and cleanup
One short report, then put back everything step one changed and release the run lock.
Writes
8 steps · changes the site, behind a restore point
Uptime Watch
careContinuousSept 2026
Know the site is down before the client does.
1
Request the site
Every sixty seconds, from more than one region.
Reads only
2
Confirm before crying wolf
Two or three consecutive failures, agreed by at least two regions, before anything is called down.
Reads only
3
Alert immediately
The moment it is confirmed, not on the next scheduled report.
Reads only
4
Watch for recovery
Keep requesting until it answers again, and record the exact minute.
Reads only
5
Report the window
Start, end, duration and the status code, in a form you can send a client.
Reads only
5 steps · reads only, never writes
Certificate Watch
careDailySept 2026
Never be surprised by an expiry, on the certificate or the domain.
1
Read the certificate
Issuer, expiry, chain, and whether the chain is complete.
Reads only
2
Read the domain expiry
The registrar record, which expires quietly and takes everything with it.
Reads only
3
Compare against the renewal window
Most certificates renew at thirty days. One that has not is a renewal job failing silently.
Reads only
4
Escalate at 30, 7 and 1
Three warnings, getting louder, rather than one that gets ignored.
Reads only
5
Name the actual error
Test the renewal endpoint and report the host error verbatim. It changes nothing on the server.
Reversible write
5 steps · reads only, never writes
Restore Rehearsal
careWeeklyOct 2026
Prove the backup restores, on a schedule, before the day you need it.
1
Find the latest backup
Wherever it lives, with its age and its size.
Reads only
2
Check the archive is readable
A truncated archive fails here, which is the whole point of the exercise.
Stops the run
3
Restore into a sandbox
A throwaway copy. The live site is never touched at any point.
Writes
4
Load the critical pages
Homepage, a product or service page, and the checkout or contact form.
Reads only
5
Compare against live
A restore that comes back missing the last three weeks is a different failure, and worth knowing about.
Reads only
6
Destroy the sandbox
Always, whether it passed or failed. Nothing is left running.
Reversible write
6 steps · changes the site, behind a restore point
Scheduled Job Health
careDailyOct 2026
Find the scheduled work that has stopped without telling anybody.
1
Read the schedule
Every registered job, its interval, and when it last actually ran.
Reads only
2
Find the overdue
Anything past its interval by a margin, not anything late by a minute.
Reads only
3
Say what stopped
Not "cron is stalled" but "your backups have not run since 14 June".
Reads only
4
Report
It reads the schedule. It does not reschedule, delete or trigger anything.
Reversible write
4 steps · reads only, never writes
License Expiry
careWeeklyOct 2026
Warn before a paid plugin stops receiving security updates.
1
Find the licensed plugins
Every plugin with a licence key, and its current status.
Reads only
2
Read the expiry date
From the plugin, and optionally re-checked live against the vendor.
Reads only
3
Warn at thirty days
Early enough to raise an invoice, not on the morning it lapses.
Reads only
4
Name what stops
Which security updates the site stops receiving. It changes nothing.
Reversible write
4 steps · reads only, never writes
Comment Cleanup
careWeeklyOct 2026
Clear the spam that WordPress has already flagged, and nothing else.
1
Count what is there
Spam and trash, by age, so you can see the shape of it first.
Reads only
2
Back up the comment tables
Before a single row moves.
Stops the run
3
Trash past the window
Only rows already marked spam, only past the retention you set. Nothing is hard deleted.
Writes
4
Report the count
What went, what stayed, and how to get it back.
Reversible write
4 steps · changes the site, behind a restore point
Diagnose and Repair
careWhen the site breaksLater
When the site is broken, find what did it and fix it, one change at a time, rolling back the moment it gets worse.
1
Capture the state
The error, the log, the last thing that changed, and the exact time it started.
Reads only
2
Back up before touching anything
A broken site can still get worse. This is the line that stops that.
Stops the run
3
Form one hypothesis
The most recent change that fits the error, not the most likely bug in general.
Reads only
4
Change one thing
One change, then a health check. Never two changes between two checks.
Writes
5
Roll back on any regression
If the site is worse than when it started, the change goes back immediately and automatically.
Reversible write
6
Verify and write it up
Confirm the site works end to end, then record what it was so it is recognised faster next time.
Reads only
6 steps · changes the site, behind a restore point
Hosting Baseline
careMonthlySept 2026
Read what the site is actually running on, so a host moving you to a new PHP version is something you knew about first rather than something a client reports.
1
Read the stack
PHP version, database version, memory limit and the web server, as the site itself sees them rather than as the host advertises them.
Reads only
2
Compare against what is installed
Every plugin and theme states a minimum PHP version. This names the ones that no longer fit.
Reads only
3
Check the end of support date
PHP versions stop receiving security fixes on a published date. It says which one you are on and when that date arrives.
Reads only
4
Watch for a silent move
A host can change the version without asking. It records the version every run, so a change shows up as a change.
Reads only
5
Report
It reads the environment. It changes no server configuration, so there is nothing to undo.
Reversible write
5 steps · reads only, never writes
Core Update
careWeeklySept 2026
Apply the WordPress core update on a schedule, with a backup that came first and a rollback that is already prepared before the first file moves.
1
Pre-flight
Check there is an update, that no other run holds the lock, and that the site answers normally. If any of that fails it exits here and creates nothing.
Stops the run
2
Read what this release changes
A patch and a major version are different jobs. It says which this is, and which installed plugins declare they have not been tested against it.
Reads only
3
Back up files and database
Labelled for this run. Nothing is touched until it finishes.
Stops the run
4
Update core
Through the updater WordPress ships with, holding maintenance mode for the shortest window it can manage.
Writes
5
Run the database upgrade
Core often needs a schema step once the files land. Skipping it leaves the site half updated and the admin nagging forever.
Writes
6
Roll back on failure
If the site errors or a page stops answering, the previous version and the database go straight back without waiting for you.
Reversible write
7
Verify
Homepage, the admin screen and one front end page per active plugin. Then the maintenance flag comes off.
Reads only
7 steps · changes the site, behind a restore point
Theme Update
careWeeklySept 2026
A theme update is the one most likely to change how a site looks rather than whether it works, so this checks the appearance and not only the status code.
1
Pre-flight
If there is no theme update, or a child theme is active and its parent is missing, it exits here and changes nothing.
Stops the run
2
Look for edited theme files
A parent theme edited by hand loses those edits on update. If it finds changed files it stops and shows you which, rather than overwriting somebody's work.
Stops the run
3
Back up the theme and the database
The whole theme folder and the options that carry its settings, before a file moves.
Stops the run
4
Update the theme
One theme at a time, with a health check after each, and the customiser settings read back afterwards to confirm they survived.
Writes
5
Compare the pages before and after
Header, homepage, a post and the footer. A broken layout still returns 200. Skipped entirely when no screenshot tool is connected.
Reads only
6
Put the old version back
The previous theme files and settings return, and the site looks exactly as it did this morning.
Reversible write
7
Verify and report
What updated, what rolled back, and the version each theme is on now.
Reads only
7 steps · changes the site, behind a restore point
Translation Update
careMonthlyOct 2026
On a site that is not in English, an out of date translation shows English strings to a customer in the middle of a checkout.
1
Read the site language
If the site runs in English only, there are no language packs to update and it exits here.
Stops the run
2
List what is behind
Core, every plugin and every theme with a newer language pack published, and how far behind each one is.
Reads only
3
Snapshot the languages folder
Including any file translated by hand, because those are the ones an update overwrites.
Stops the run
4
Fetch the updated packs
One at a time from the official translation service, never from a mirror.
Writes
5
Put the old files back on error
Any pack that fails to install, or any page that errors afterwards, returns the folder to the snapshot from step three.
Reversible write
6
Verify
Load the homepage and one form in the site language and confirm the strings render rather than falling back to English.
Reads only
6 steps · changes the site, behind a restore point
Staging Drift
careWeeklyOct 2026
Staging is only worth testing on while it still resembles live, and this says exactly where the two have come apart.
1
Confirm both sides are connected
It compares two sites that both run the connector. If only one is connected it says so and exits here.
Stops the run
2
Compare the versions
Core, every plugin and every theme, with the exact version string on each side and the gap named.
Reads only
3
Compare what is switched on
Active plugins, the active theme, and the settings that change behaviour rather than appearance.
Reads only
4
Compare how old the copy is
The newest post, the newest user and the newest order on each side. A staging site six months behind will not reproduce today's fault.
Reads only
5
Check staging is still hidden
Whether the copy is indexable, whether it can send mail, and whether it still points at the live payment gateway.
Reads only
6
Report the drift
It lists the differences in both directions. It copies nothing between the two sites.
Reversible write
6 steps · reads only, never writes
Media Cleanup
careMonthlyNov 2026
Recover the disk that a decade of unused uploads is holding, without deleting a single file the site still shows.
1
Measure the uploads folder
Total size, file count, and the largest year folders, so you see the shape of it before anything is decided.
Reads only
2
Find the two kinds of waste
Files on disk with no record in the media library, and library entries no post, page, option or menu refers to. It names which references it could check and which it could not, because page builders hide some of them in serialised data.
Reads only
3
Exit when the gain is small
Below a threshold you set it reports the number and stops, rather than moving files for a few megabytes.
Stops the run
4
Record every path and back up the tables
The exact original path of every file it is about to move, plus the attachment tables. Nothing moves until that record exists.
Stops the run
5
Move, never delete
Everything identified moves into a dated holding folder that is not served to visitors. No file is removed from disk.
Writes
6
Watch for breakage
Load the pages that most recently used those files and confirm the images still appear.
Reads only
7
Put it all back on one command
The holding folder restores every file to the path step four recorded. It is only emptied when you say so, never at the end of the run.
Reversible write
7 steps · changes the site, behind a restore point
Orphaned Data
careMonthlyOct 2026
Plugins you removed years ago left their rows behind, and some of them are read on every page load.
1
Measure where the weight is
Table sizes, row counts, and which of them belong to a plugin that is no longer installed.
Reads only
2
Separate the two cases
Rows pointing at posts and users that no longer exist, and whole tables left behind by a deleted plugin. They carry very different risk.
Reads only
3
Back up the database
No row is deleted before this finishes.
Stops the run
4
Drop the orphaned rows
Only metadata whose parent record is genuinely gone, in batches, so a large table does not lock the site while it works.
Writes
5
Leave the abandoned tables alone
It names each one, its size and the plugin it came from, then waits. A table you drop does not come back from a report.
Reads only
6
Keep the restore point
The backup from step three restores in one action and is kept for thirty days, rather than being cleared at the end of the run.
Reversible write
7
Report the space saved
In megabytes, with the row count, not as a percentage that sounds better than it is.
Reads only
7 steps · changes the site, behind a restore point
Transient Sweep
careWeeklySept 2026
Expired transients are cached values nothing will ever read again, and on a busy site they can be the heaviest thing in the options table.
1
Measure what is there
Count and size, split into expired, still live, and the ones a plugin left with no expiry at all.
Reads only
2
Exit when it is small
Below a threshold there is nothing to gain and no reason to write to the database, so it reports and stops.
Stops the run
3
Back up the options table
One table, taken fresh for this run.
Stops the run
4
Delete only what has expired
Rows already past their own expiry timestamp, in batches. A live transient is never touched, so no plugin loses a cache it is still using.
Writes
5
Restore
The table from step three goes back in one action if anything on the site starts behaving differently.
Reversible write
6
Report
Rows removed, megabytes freed, and the plugin that left the most behind, so the cause gets named rather than swept weekly forever.
Reads only
6 steps · changes the site, behind a restore point
Autoload Weight
careMonthlyNov 2026
Every page load reads the autoloaded options first, so when a plugin leaves a megabyte in there, every visitor pays for it.
1
Weigh the autoloaded options
The total, and the twenty largest with the plugin each belongs to.
Reads only
2
Exit under the threshold
Under about 800KB there is nothing here worth the risk of touching. It reports the number and stops.
Stops the run
3
Judge each one
An option a plugin reads on every request has to stay autoloaded. One read on a single admin screen does not.
Reads only
4
Back up the options table
Before a single flag is changed.
Stops the run
5
Change the flag, not the value
It sets autoload to no on the ones you approved. No option is deleted and no value is edited.
Writes
6
Undo
Every flag it changed is recorded by name, and one action puts all of them back.
Reversible write
7
Verify
Load the homepage, an admin screen and the checkout, and confirm nothing has lost a setting.
Reads only
7 steps · changes the site, behind a restore point
User Role Audit
careMonthlyOct 2026
Count how many people can install a plugin on this site, and how many of them still work there.
1
List every account
Role, the date it was created, and the date it last signed in.
Reads only
2
Find the power nobody needs
Administrators who only ever publish posts, and editors who have never signed in once.
Reads only
3
Find the dormant
No sign in for ninety days. A dormant administrator is a password sitting unused where nobody would notice it being used.
Reads only
4
Read the custom roles
Roles a plugin added, and the capabilities inside them that nobody chose deliberately.
Reads only
5
Report
It lists the accounts and what each one can do. It removes nobody and changes no role.
Reversible write
5 steps · reads only, never writes
Admin Email
careWeeklySept 2026
Password resets and every critical WordPress notice go to one address, and if it points at somebody who left you find out during an incident.
1
Read the addresses
The site administration address, and the address on every administrator account.
Reads only
2
Check the domain still answers
It resolves, it publishes a mail record, and it is a domain somebody still holds. It does not claim the mailbox is read, because no outside probe can see that.
Reads only
3
Look for a change stuck halfway
WordPress holds a new administration address until it is confirmed. One sitting unconfirmed for weeks means the confirmation never reached anybody.
Reads only
4
Flag the risky patterns
A personal address on a client site, a shared inbox nobody owns, or your own address on all forty sites so that every notice looks like noise.
Reads only
5
Report
It reads three settings. It sends no mail and changes no address.
Reversible write
5 steps · reads only, never writes
Timezone and Locale
careMonthlyNov 2026
Scheduled posts publishing at the wrong hour and order timestamps an accountant queries both come from one setting nobody checked.
1
Read the four settings
Timezone, date format, time format and the day the week starts on.
Reads only
2
Compare against the business
The address published on the site, the currency in the store, and the language the content is written in.
Reads only
3
Check for a fixed offset
A timezone stored as UTC plus one rather than as a city does not follow daylight saving, so it goes wrong twice a year and rights itself twice a year.
Reads only
4
Name what the mismatch touches
Scheduled publishing, order timestamps, report boundaries, and every job that runs at a fixed hour.
Reads only
5
Report
It names the setting and the value it should hold. It changes nothing, because only you know where the business actually is.
Reversible write
5 steps · reads only, never writes
Permalink Health
careWeeklyOct 2026
After a migration every post can return 404 while the homepage looks perfectly fine, and the fix is one action nobody thinks to try.
1
Test the address types
A post, a page, a category, a date archive and the feed, requested from outside. Each one either answers or it does not.
Reads only
2
Exit when everything answers
If all five return a page, there is no fault to fix and it writes nothing.
Stops the run
3
Read the rewrite rules
What WordPress has stored, and whether the server configuration file still carries the block WordPress needs.
Reads only
4
Back up the configuration file
The whole file, byte for byte, before a single line is added to it.
Stops the run
5
Rebuild the rules
Regenerate the rewrite rules, and rewrite only the block WordPress owns. Every other rule in that file is left exactly where it is.
Writes
6
Put the file back on any regression
If fewer addresses answer than answered before, the original file returns immediately and automatically.
Reversible write
7
Verify
The same five address types again, plus the two pages with the most traffic behind them.
Reads only
7 steps · changes the site, behind a restore point
Search Visibility
careDailySept 2026
One checkbox left switched on after launch tells search engines to stay away, and it can cost months of traffic before anybody notices.
1
Read the flag and the file
The WordPress discourage setting, and what the robots file actually serves. If the site is visible it exits here and writes nothing.
Stops the run
2
Confirm the site is meant to be found
A staging copy is supposed to be hidden. It checks this site is marked live before it considers changing anything.
Stops the run
3
Record the current value
The setting as it stands, so the change is reversible by value rather than by guess.
Stops the run
4
Turn visibility back on
The setting returns to public and the generated robots file stops telling crawlers to leave.
Writes
5
Undo
The value from step three goes back in one action, and the flag returns exactly as it was.
Reversible write
6
Verify from outside
Fetch the robots file and the homepage from our network and confirm neither carries a no-index instruction. Whether a search engine then indexes the site is its decision, not ours.
Reads only
6 steps · changes the site, behind a restore point
Not Found Watch
careContinuousNov 2026
A page that used to bring in work now returns nothing, and the only person who knows is the visitor who left.
1
Record every miss
The address requested, the page that linked to it, and how often. Counts are kept, not visitors.
Reads only
2
Separate the real from the noise
A scanner probing for a configuration file is not a lost page. Those are counted apart and never reported as a problem.
Reads only
3
Rank by what it costs
An address with inbound links or search traffic behind it sits above one nobody has ever asked for twice.
Reads only
4
Say where it came from
An internal link, an old sitemap entry, a printed campaign, or a page somebody deleted last Tuesday.
Reads only
5
Report
It watches and lists. It creates no redirects, because pointing an old address at the wrong page is worse than leaving it dead.
Reversible write
5 steps · reads only, never writes
Redirect Health
careWeeklyNov 2026
A redirect pointing at another redirect loses a little of every visit, and a loop loses the whole page.
1
Collect the rules
From the redirect plugin, the server configuration file, and anything the SEO plugin manages, so the same address is not being handled twice.
Reads only
2
Follow every one to the end
Each rule requested from our network, hop by hop, until it lands or gives up.
Reads only
3
Sort into four outcomes
Lands in one hop, a chain, a loop, or a redirect to a page that no longer exists. Only the last three are a fault.
Reads only
4
Exit when nothing is wrong
If every rule lands in one hop it reports and writes nothing.
Stops the run
5
Export the rule set
In the redirect plugin's own format, before a single rule is edited.
Stops the run
6
Point each chain at its final address
One rule at a time, and only the ones you approved. A loop is broken by removing the second rule, never the first.
Writes
7
Restore the export
One import puts every rule back exactly as it was before the run.
Reversible write
8
Verify
Request each edited rule again and confirm it now lands in one hop with the status code it had.
Reads only
8 steps · changes the site, behind a restore point
Disk Usage
careWeeklySept 2026
A full disk stops uploads, stops backups and eventually stops the database, and the first sign is usually a white screen.
1
Read what is used and what is left
Total, used and free, as the hosting account sees it rather than as the whole server sees it.
Reads only
2
Find where the weight sits
Uploads, backups, logs, cache and the database, each with its own number.
Reads only
3
Look for the runaway
A log file growing by the hour, or a backup plugin quietly keeping every copy it has ever made.
Reads only
4
Project the date
At the rate of the last thirty days, the day it runs out. That date is the part worth acting on.
Reads only
5
Warn early enough to act
At eighty per cent and again at ninety, rather than on the morning it fails.
Reads only
6
Report
It measures. It deletes nothing, including the backups it has just told you about.
Reversible write
6 steps · reads only, never writes
Conflict Isolation
careOn demandLater
Find which plugin is causing the fault, without taking the site down in front of visitors while you look for it.
1
Capture the fault
The exact address, the error, and the steps that reproduce it. If it cannot be reproduced there is nothing to isolate, and it says so rather than switching things off hopefully.
Stops the run
2
Record exactly what is active
The active plugin list, the active theme and their settings are written down before anything is switched. Nothing is switched until that record exists.
Stops the run
3
Switch plugins off for one session only
The changes apply to a single signed in session through a temporary drop-in file. Visitors keep seeing the site exactly as it is now.
Writes
4
Halve the list until one is left
Off in halves, retested after each pass. It reaches the same answer as one at a time and gets there in a fraction of the attempts.
Writes
5
Confirm the pair
Most conflicts are two plugins, not one. It switches the suspect back on alone to work out which combination actually breaks.
Reads only
6
Remove the drop-in
Every plugin returns to the state step two recorded and the temporary file is deleted. This runs whether the isolation finished or not.
Reversible write
7
Report
The plugin, the combination, the address it breaks, and the version each one was on when it broke.
Reads only
7 steps · changes the site, behind a restore point