WordPress Maintenance Plans: What to Pay and What to Demand
What a plan should cover and how often, cited prices from DIY to WooCommerce, the terms to get in writing before you sign, and how to check the work was actually done.
What a WordPress maintenance plan covers (and how often)
What a maintenance plan is
A WordPress maintenance plan is recurring, scheduled upkeep of WordPress core, plugins, themes, backups and security. It is only worth paying for when updates are tested before they go live and you can see proof the work was done.
The schedule below shows what a complete plan covers and how often each task should happen.
Daily: backups, uptime and malware scans
Automated backups run every day, stored away from the site so a server failure does not take them too. Uptime monitoring checks the site around the clock and alerts someone when it stops responding. Malware scanning looks for injected code, suspicious files and known bad plugin versions, so a hack is caught early rather than reported by a visitor.
Weekly: tested updates and key-flow checks
Plugin and theme updates should be tested on a staging environment before they reach the live site, and the plan should state how a bad update is rolled back. After updates, someone checks that contact forms still send and, on a WooCommerce store, that a test order gets through checkout.
Monthly: core updates, performance and reporting
WordPress core updates are the baseline every plan must cover, and they follow the same staging-first rule. Each month also brings a performance check against Core Web Vitals, a broken link scan, and a monthly report that lists what was updated, backed up, scanned and fixed.
Quarterly: restore drills and audits
A backup that has never been restored is unverified, so a quarterly restore drill should prove the backups actually work. The quarterly list also includes a PHP version review, since outdated PHP can hold back newer plugin versions, and a user and access audit that removes old accounts and checks admin roles.
Managed hosting is not a care plan
Managed WordPress hosting looks after the server and the software it runs on. A care plan looks after what runs on that server: core, plugins, themes, testing and reporting. Some overlap, such as backups and PHP versions, is normal. Ask each provider which tasks they own so nothing falls between them.
What a plan costs, and why quotes vary so much
Quotes vary because plans differ in testing, response times, included fix time and risk, not just in the label. The tiers below run from DIY to premium, with each price tied to its source. Compare what each tier includes in writing, not what it is called.
| Tier | Price (source) | What drives the price | What is often left out |
|---|---|---|---|
| DIY | $0 to $105 per month in tools, plus two to eight hours of your time (DreamHost) | Your tool choices, how many plugins you run and how many hours you commit | Testing and rollback unless you set them up yourself |
| Budget | Varies widely; often the lowest quotes on the market | Blind, automated updates with little human time | Testing before updates go live, restore drills, and fix time when an update breaks something |
| Mid-tier | about $246 per month (Freshysites average) | Staging-tested updates, more plugins covered, some developer hours | Check for a stated response-time SLA and who pays for fixes |
| Published example: WP Buffs | $89, $179, $239 and $359 per month (Maintain, Protect, Perform, Custom; wpbuffs.com, October 2026) | Scope grows tier by tier, from basic upkeep to custom work | Read each tier's terms for testing, SLA and fix time |
| Premium or Enterprise | starting at $1,000 per month (Codeable) | Response-time SLA, included developer hours, WooCommerce transactions, compliance or accessibility scope | Less is left out, but confirm restore drills and break-fix terms in writing |
What to demand in writing before you sign
Staging-tested updates and a stated rollback path
Ask for plugin, theme and WordPress core updates to be tested on a staging environment, a private copy of your site, before they reach the live site. The contract should also say how a bad update is rolled back, who does it and how quickly, so a failed update never becomes your problem to untangle.
Break-fix liability for updates they applied
If a plugin or WordPress core update the provider applied breaks your site, who pays for the fix? Get the answer in writing. A good plan covers repairs caused by its own updates at no extra charge. A weak one bills the fix as extra development hours, which turns routine upkeep into a surprise invoice.
A response-time SLA with stated hours
A service level agreement (SLA) should name response times in hours, not promise help soon. Ask for separate times for downtime and for hacked-site cleanup after a malware scan finds something. Check whether those hours run around the clock or only during business hours, and whether weekends and holidays count.
Restore drills that prove backups work
A backup that has never been restored is unverified. Ask how often the provider actually restores a backup, ideally to a staging copy, to prove it works from start to finish. Ask to see the result of the last drill. If the answer is never, treat the backups as a hope rather than a safety net.
Backup location, retention and your access
Find out where backups are stored, and whether that is somewhere other than the server your site runs on. Get the retention period in writing, meaning how far back you can restore. Most important, confirm you can download backups yourself at any time, without waiting on the provider.
Cancellation, handover and reporting
Cancellation terms should state the notice period and promise a handover of backups, admin logins and any accounts set up for your site. Confirm in writing that your site, content and data belong to you. Then pin down the reporting cadence and what each report must list, so you can check the work.
Verifying your plan
How to check the work was actually done
A monthly report is the visible part of a maintenance plan, but it only counts as proof if you can check it against the site yourself. Here is what to look for and how to test it.
A useful report lists every update made that month, including WordPress core, plugins and themes, with the version number before and after each one. It should also show the dates of recent backups, the results of malware scanning, the uptime percentage from uptime monitoring, any incidents and how they were handled, and the time spent on your site. If a line item is missing, ask why. A plan that includes something but never reports on it gives you no way to know it happened.
You can spot-check a report in a few minutes. Log in to wp-admin, open the Plugins screen and compare the installed version of each plugin with the version the report says it was updated to. Do the same for your theme and for the WordPress core version shown on the Updates screen. If the numbers match, the updates were applied. If they do not, or if plugins the report never mentions are showing pending updates, raise it with your provider.
Backups need a separate check, because a backup that has never been restored is unverified. Ask for evidence of the last restore test: when it ran, which backup was used, what was restored and where, and whether the restored copy worked. A provider that runs restore drills should be able to answer straight away.
Watch for these red flags:
Reports that look identical every month, with the same wording and the same items, which suggest a template rather than a record of real work.
Reports with no version numbers, which make it impossible to check what was updated.
Vague entries such as "all plugins updated" or "site secured" with no detail behind them.
If you see any of these, ask for the underlying details before your next renewal.
DIY or paid? Match the plan to your site type
Doing maintenance yourself is a real option for many sites, as long as you budget the time. DreamHost puts DIY at $0 to $105 per month in tools, plus two to eight hours of your time. WooCommerce stores carry enough risk to justify paying for staging-tested updates and a response SLA.
| Site type or option | Risk profile | Usual best fit | What to make sure of |
|---|---|---|---|
| Brochure site | Few plugins and low change risk | DIY with automated backups and a management dashboard | Backups run on schedule and you have restored one at least once to prove it works |
| Business or lead-gen site | Forms and SEO matter, so a broken form quietly loses leads | DIY if you can commit monthly hours, otherwise a mid-tier plan | Forms are tested after every update and key pages still load and rank |
| WooCommerce store | Checkout and payment plugin updates put sales at risk | Paid plan with staging-tested updates and a response SLA | A written rollback path and stated response hours when checkout breaks |
| DIY time cost (per DreamHost) | Your hours are the real price of doing it yourself | $0 to $105 per month in tools, plus two to eight hours of your time | Block the hours in your calendar every month, not just when something breaks |
| Zeebrar, for people running the work themselves | Plugin updates are the largest recurring DIY task | Bulk plugin updates on Pro and Agency plans | Blocks versions VirusTotal flagged as malicious; WordPress itself refuses versions needing a newer WordPress or PHP |
| Zeebrar rollback | An update can take a site offline | For updates sent from Zeebrar, the connector backs up an active plugin and restores it if the site returns an error | Full-site backups, staging and uptime monitoring still come from your host or other tools |
Your next step: a quick decision path
Path 1: A simple site and a few hours a month
If your site has few plugins and you can spare a few hours monthly, run the schedule above yourself with a management tool. Your action this week: set up automated backups, then do your first plugin update round. Test each update on a staging copy before it reaches the live site, and note how you would roll it back.
Path 2: You want hands-off cover
Get quotes from several providers and score each against the written-terms checklist: staging-tested updates, break-fix liability, a response-time SLA, restore drills and cancellation terms. Hire a freelancer when you have one site and want a direct contact. Choose an agency when you need SLA-backed coverage. Your action: send the checklist with every quote request.
Path 3: You sell maintenance plans
Build your tiers around the same checklist your clients will use. Price by human hours and risk: WooCommerce stores and tighter SLA terms take more work to cover. Make the monthly report the visible deliverable, with versions before and after, backup dates and incidents. Your action: draft a report template this week.
Run client updates from one dashboard
Agencies and freelancers who run the work themselves can manage plugin updates across many sites from one Zeebrar dashboard. Zeebrar blocks versions VirusTotal flagged as malicious, and if an update makes the site return an error, the connector restores the active plugin's old version. Bulk updates come with the Pro and Agency plans.
Running maintenance yourself? Pick the plan that fits
If you run maintenance yourself, compare Zeebrar plans to find the one that fits your sites. Bulk plugin updates are on the Pro and Agency plans, with malware-flagged versions blocked and an automatic rollback if an update causes an error.