Skip to content
WP security & maintenance

Should You Auto-Update WordPress Plugins? An Agency's Honest Answer

Should you auto-update WordPress plugins? The honest agency answer: a three-tier policy. Auto for security patches, staged for major releases, never for premium.

By WitsCode8 min read
WP security & maintenance

The honest answer is partially, and the word doing the work is partially. You should auto-update WordPress plugins for minor and security releases, you should manually test major releases on a staging copy before they touch the live site, and you should never leave a premium licensed plugin on full automatic. A blanket yes leaves you exposed to the major release that quietly breaks a checkout flow at two in the morning. A blanket no leaves a known vulnerability sitting unpatched for the days it takes a busy site owner to get around to it. Neither extreme is a policy. The policy is the split.

The reason the question feels hard is that it is usually asked the wrong way. People ask whether to auto-update a plugin, when the unit that actually matters is the type of release. A security patch and a major version jump are completely different events with completely different risk profiles, and treating them the same is what gets sites into trouble. This article lays out the three-tier update policy WitsCode runs across more than 250 client sites, written out in full, so you can apply it whether or not you ever hire anyone. It is the policy, the reasoning behind each tier, and the one caveat that almost every other article on this topic skips.

Why "just turn it on" is bad advice, and why "never" is too

The case for turning everything on is real. The window between a plugin vulnerability being disclosed and that vulnerability being mass-exploited has collapsed. It used to be measured in days. It is now often measured in hours, because automated scanners crawl the entire WordPress install base looking for the version strings of plugins with fresh advisories against them. If you are patching by hand across more than a handful of sites, you cannot move fast enough. Auto-update closes that window, and for the class of release that closes it, leaving it off is the genuinely risky choice.

The case against turning everything on is also real, and it is the one that bites people. A major plugin release can change an API, remove a hook your theme depends on, alter the database schema, or rework the admin UI. When that lands automatically on a live site, the breakage is unattended and unannounced. The form stops submitting, the layout shifts, the booking calendar throws an error, and the first you hear of it is a customer email or a drop in the analytics. The cost of a bad update is not really the breakage itself. It is that the breakage happened at a moment nobody chose, with nobody watching.

So both camps are describing something true, and the policy that works simply refuses to choose between them. It auto-updates the releases that are safe to auto-update and controls the timing of the releases that are not. Here is how that splits into three tiers.

Tier one: auto-enable minor and security patches

Minor releases are the ones where the version number changes in its last segment, a move from something like 3.4.1 to 3.4.2. By the semantic versioning convention that almost every serious plugin follows, that segment is reserved for bug fixes and security patches. It is not where breaking changes are supposed to live. The breakage risk is low, and the cost of delay is high, because this is exactly the tier that contains the security fixes those automated scanners are racing you to.

This is also the logic WordPress core itself already follows. Core has auto-updated its own minor and security releases by default since version 3.7, back in 2013, and the per-plugin auto-update toggle has existed since 5.5 in 2020. The platform decided a decade ago that small fixes should flow automatically, and it was right. For minor and security plugin releases, enable auto-update, and enable it everywhere. The arithmetic is not close. The handful of times a minor release causes a problem are vastly outweighed by the vulnerability windows it closes while you are asleep.

The supply-chain caveat: auto-update is not the same as safe

Here is the part the "just turn it on, it is safer" articles leave out, and it is the part that matters most. Auto-update is not a security guarantee. It shrinks the window during which a known vulnerability sits unpatched, which is genuinely valuable, but it does nothing about the rarer and nastier case where the update itself is the attack.

Signed, official, repository-hosted updates have shipped malicious code. It has happened through compromised developer accounts pushing a backdoored version straight into the official plugin directory, and it has happened through premium vendors whose own update servers were breached and made to serve tainted releases. In every one of those cases, auto-update did exactly what it was told. It fetched the latest version from the legitimate channel and installed it, and the legitimate channel was the problem. A site set to auto-update absorbed the backdoor faster than a site updating by hand.

The correct conclusion is not to switch auto-update off. It is that auto-update plus monitoring beats auto-update alone. You pair the automatic patching with a layer that watches what the patches actually do: file-integrity monitoring that flags unexpected changes to plugin files, malware scanning that runs on a schedule rather than on request, and an activity log that records every update as it happens. Auto-update handles the common threat, the known vulnerability left unpatched. Monitoring catches the rare one, the poisoned release. You need both, because each one covers the gap the other leaves open. Auto-update on its own is half a security posture presented as a whole one.

Tier two: staging-test every major release

Major releases are the ones where the leading version number moves, something like 3.x jumping to 4.0. By the same semantic versioning convention that makes minor releases safe, the major number is precisely where breaking changes are permitted. The plugin author is telling you, through the version number itself, that this release may behave differently. This is the tier that breaks sites when it runs unattended, and so this is the tier you never automate.

The policy for major releases is manual application with a staging test, and the staging test is the entire point of the tier. You apply the update to a current clone of the production site, then you click through the specific workflows that plugin touches. If it is a forms plugin, you submit the forms. If it is a commerce extension, you run a test order from product page to confirmation. If it is an SEO plugin, you check that the metadata and the sitemap still render. You are looking for the subtle breakage that no automated check will catch, the kind that lives in a layout shift or a silent form failure rather than in an error message. Only once the staging clone is clean do you promote the same update to production, in a low-traffic window, with a fresh backup taken immediately before. Slower than automatic, yes. That control over when the change lands is the thing you are buying.

It is worth knowing that WordPress does have a safety net here. Since version 5.2 it ships a fatal-error protection feature: if an update causes a PHP fatal error, the offending plugin is deactivated and the admin is emailed. That is useful, but it only catches fatals. It does nothing about the major release that loads perfectly fine and simply breaks your checkout in a way the server never registers as an error. The staging test exists because the recovery feature cannot see the breakage that costs you money.

Tier three: never fully automate premium licensed plugins

The third tier is the one people forget, because the failure mode is invisible until it is expensive. Premium plugins do not update through the official WordPress directory. They update through the vendor's own server, and they require an active licence key to do it. The moment that licence lapses, because a card expired, a renewal was missed, or an agency handover lost track of the key, the plugin silently stops receiving updates. There is no error. The plugin keeps running. It just quietly falls off the security update channel, and an auto-update that has stopped working without telling anyone is more dangerous than a manual one, because at least a manual process has a human who would notice.

Premium plugins also sit outside the review process that the official directory applies, however lightly, to free plugins, and their update infrastructure is a more attractive target precisely because they are commercial. So the policy for premium licensed plugins is manual application, on staging, with the licence renewal dates actively tracked. Tracking the renewals is not an afterthought. It is the part that keeps the plugin on the update channel at all. A premium plugin you cannot update because the licence died is a known vulnerability with a countdown attached.

Backups and monitoring are the floor under all of this

None of these three tiers is safe to run without two things underneath them. The first is automated, off-site, regularly tested backups, because every tier assumes that if an update goes wrong you can get back to a known-good state quickly. A backup you have never restored is a hope, not a backup. The second is the monitoring layer described above, the integrity checks and the scanning and the activity log, because that is what turns the supply-chain caveat from a worry into a covered risk.

It is also worth being honest about the notification emails WordPress sends after an auto-update runs. They exist, and almost nobody reads them. They get filtered to a folder, or they go to an address the current site owner never checks. Passive email is not monitoring. Monitoring is a system that actively flags a problem to someone whose job is to act on it. If the only thing watching your auto-updates is an inbox rule, you do not have the second half of the policy.

Running the policy without running it yourself

Everything above is yours to copy. The three tiers, the semantic versioning logic, the staging test, the licence tracking, none of it is proprietary, and a capable owner can run all of it. The policy is free.

What a policy needs in order to actually function is infrastructure, and the infrastructure is the work. The major-release tier needs a staging environment that already exists and stays in sync, not one spun up in a panic the day an update lands. It needs a person who runs the click-through tests and knows which workflows on which site are the ones that matter. The premium tier needs someone tracking renewal dates across every vendor so nothing falls off its update channel unnoticed. And the supply-chain caveat needs the monitoring layer running and someone reading what it reports. That is the gap between knowing the policy and having it.

That gap is what the WitsCode managed update retainer covers. We hold the staging environment, run the major releases against it before they reach your live site, keep the security and minor patches on monitored auto-update, track every premium licence so none of them lapse, and watch the integrity and scanning layer so a bad release is caught fast rather than discovered late. You get the three-tier policy as an outcome rather than a checklist. The thinking in this article is the part you can have for nothing. The staging environment, the tested restores, and the person who notices, that is the part the retainer is for.

Get weekly field notes.

Practical writing on shipping products, straight to your inbox. No spam.

Need help with this?

WordPress Development

We design and build web apps, MVPs, and SaaS products. Talk to us about what you are working on.

Talk to us

Want to discuss wp security & maintenance for your business?

Start a project and we'll talk through where you are, what's working, and the highest-leverage moves for the next 90 days.