WordPress maintenance checklist: what to do every week, month, quarter and year
Looking after a WordPress site is a short weekly round of updates, a look at the site and a check that backups ran, plus slower checks every month, quarter and year. For each task, this page says where it is in WordPress and what fine looks like.
- By
- WP Ministry
- Updated
- Tested on
- WordPress 7.1.3, PHP 8.3.35
In short
- Every week: apply updates, look at the site as a visitor would, and check that the last backup ran.
- Every month: restore a backup to a copy of the site, remove users who no longer need access, send every form, and read Site Health.
- Every quarter: delete unused plugins and themes, check the PHP version, measure speed, and read the domain and certificate dates.
- Once a year: check who holds each account the site depends on, and that WordPress sends its notices to an address someone reads.
- A check is done when you have seen the result yourself, not when a tool says it ran.
A WordPress site is software that keeps changing underneath you. WordPress, each plugin and the theme release new versions. Backups stop running without telling anyone. People who once needed a login still have one. None of this shows on the front of the site until the day something fails.
Maintenance is the habit of looking before that day. The tasks below are grouped by how often they are worth doing. Each says what to do, where it is, and what you should see when all is well. Put the four rounds in your calendar.
Every week
Step 1: Apply the updates that are waiting
Go to Dashboard, then Updates. Take a backup, update one thing at a time, and look at the site after each one. The full method, including how to go back when an update breaks something, is in how to safely update WordPress.
Fine looks like: the Updates screen lists nothing waiting, and the site works as it did before.
Step 2: Look at the site as a visitor
Open the home page and the two or three pages that bring in work, in a private browser window so that you are logged out. Do the same on a phone.
Fine looks like: every page loads, nothing has moved or lost its styling, and the browser shows no warning. If you see an error in place of a page, find it among the WordPress error fixes.
Step 3: Check that the backups ran
Open your backup plugin's list of backups, or the backup section of your hosting panel. Read the date of the newest one.
Fine looks like: the newest backup is as recent as your schedule says it should be, it holds both the database and the files, and it is stored somewhere other than the site's own server. If it is older than it should be, the schedule has stopped. Fix that before anything else on this list. If you have no backups yet, see WordPress backup plugins compared.
Every month
Step 1: Test a restore
Restore the newest backup to a private copy of the site, never over the live site as a test. How to set up a WordPress staging site covers making the copy.
Fine looks like: the restored copy loads, you can log in, a post or an order from the past few days is there, and images display. Note how long it took. That is how long the site would be down on a bad day.
Step 2: Review who can log in
Go to Users. The links above the table filter the list by role. Look at the administrators first, then at everyone else.
Fine looks like: every account belongs to a person you can name who still needs it, at the lowest role that lets them do their work.
To remove someone, select Delete under their username. WordPress asks what to do with the content that person owns. Choose to attribute it to another user, then select "Confirm Deletion". The other choice deletes their posts along with the account.
An administrator nobody recognizes is a sign of a break-in. Treat it as one: how to remove malware from a hacked WordPress site. The rest of keeping accounts safe is in the WordPress security guide.
Step 3: Send every form, and check the checkout on a store
Fill in each form on the site the way a visitor would and check that the message reaches your inbox. A form can show its thank-you message while the email goes nowhere. On a store, add a product to the cart and go through checkout as far as the payment step, without paying. Then open the most recent paid order under WooCommerce, then Orders. To test a payment itself, use a staging copy with the payment method in its test mode, which is where WooCommerce's guide to test orders says test payments belong. Before paying on the live store with your own card, read your payment provider's rules: Stripe's testing documentation says its services agreement prohibits testing in live mode using real payment method details.
Fine looks like: each message arrives within a few minutes, in the inbox and not in spam. On a store, the checkout shows its payment fields, and the most recent paid order is "Processing", the status WooCommerce gives once payment is received, or has moved on to "Completed". If not, see WordPress not sending email or WooCommerce checkout not working.
Step 4: Read Site Health
Go to Tools, then Site Health. The Status tab sorts what WordPress has checked into critical issues, recommended improvements and passed tests. Critical issues are possible security holes or serious performance problems, and each comes with a suggested fix.
Fine looks like: no critical issues, and no recommended improvement you have not read and decided about.
Step 5: Clear spam
Go to Comments and select the Spam link above the table. "Empty Spam" permanently deletes every comment marked as spam.
Fine looks like: the Spam list is empty and nothing in Pending has waited more than a few days.
Old revisions rarely need clearing. WordPress keeps a record of each saved draft and each published update, with no limit by default and no screen for deleting them. They matter only once the database has grown large, which you can read under "Directories and Sizes" on Site Health's Info tab. To cap how many are kept, add this line to
wp-config.php, above the line that says "That's all, stop editing". WordPress then removes the older ones the next time each post is updated.wp-config.phpdefine( 'WP_POST_REVISIONS', 10 );
Every quarter
Step 1: Remove plugins and themes you do not use
A plugin that is switched off is still on the server and still has to be kept up to date. On the Plugins screen, go through the list. For each plugin nobody uses, select "Deactivate" if it is active, then "Delete". Deleting a plugin can remove its settings too, so take a backup first.
For themes, go to Appearance, then Themes, open "Theme Details" on a theme you do not use, and select "Delete". WordPress's own guidance is to remove inactive themes you do not plan to use. Keep your active theme, its parent if it has one, and one default theme to switch to when you are tracking down a fault.
Fine looks like: no inactive plugins, and no inactive themes beyond that one spare.
Step 2: Check the PHP version
PHP is the language WordPress is written in, and your host decides which version your site runs on. When the version is too old, Site Health reports "Your site is running an outdated version of PHP, which requires an update" as a critical issue. WordPress recommends PHP 8.3 or greater. Its requirements page says the older versions it still runs on have reached their end of life and may expose a site to security vulnerabilities.
The version is changed in your hosting panel, not in WordPress. An old plugin or theme can fail on a newer PHP, so take a backup first and try the change on a staging copy if you have one. If the site shows a critical error afterwards, set the version back in the hosting panel and see how to fix the white screen of death.
Fine looks like: Site Health raises nothing about PHP, and the version meets what WordPress recommends.
Step 3: Review speed
Run the home page and one or two pages that matter through Google's PageSpeed Insights and write the numbers down. Where enough real visits have been recorded, it reports how the page loaded for actual visitors.
Fine looks like: the Core Web Vitals assessment passes. That means the largest element appears within 2.5 seconds, the page responds to a tap or click within 200 milliseconds, and the layout shift score is 0.1 or less. The score from its own test load changes from one run to the next, so compare with last quarter's numbers and do not chase a point or two.
If the numbers have slipped, start with what was added since the last check: a plugin, a slider, larger images, a tracking script.
Step 4: Read the domain and certificate dates
Log in at the company your domain is registered with and read the expiration date. Check that automatic renewal is on, that the payment card on file is still valid, and that the contact email is one you read, because renewal reminders go there. A domain that is not renewed takes the website and its email down with it.
Then open the SSL section of your hosting panel and read the date the certificate expires. Where the host renews it automatically, a date that has moved forward since last quarter tells you the renewal is working.
Fine looks like: both dates are comfortably in the future, or set to renew with a valid card. An expired certificate puts a full-page browser warning in front of the site: see Your connection is not private.
Once a year
Step 1: Check who holds the accounts
List every account the site depends on: hosting, the domain registrar, DNS if it is somewhere else, backup storage and each paid plugin or theme. Log in to each one.
Fine looks like: each account is in the name of the business, not of a past developer or employee, with an email address someone reads.
Then go to Settings, then General and read "Administration Email Address". WordPress sends its recovery mode and critical error notices there, so it must be an address your organization can open. When you change it, WordPress emails the new address, and the change takes effect once the link in that message is followed.
Step 2: Check licenses, the privacy policy and the hosting plan
Updates for a paid plugin or theme come through its author's license system. Check that each license is current for what you still use, and cancel what you do not.
Go to Settings, then Privacy to see which page is your privacy policy, and reread it. WordPress leaves it to you to keep that page current and accurate. Compare it with what the site collects now: a new form, an analytics tool, a plugin added during the year.
Open "Directories and Sizes" on Site Health's Info tab and compare the total installation size with the disk space your hosting plan allows.
Fine looks like: licenses current, a policy that names everything the site collects, and room to grow on the hosting plan.
The same checks from the command line
With WP-CLI, three commands answer three of the questions above: whether a WordPress update is waiting, which plugins are inactive, and who is an administrator.
wp core check-update
wp plugin list --status=inactive
wp user list --role=administratorIf you would rather hand the routine over, our WordPress maintenance service covers the weekly round on every care plan: weekly updates with a visual check and a rollback if something is wrong, daily offsite backups, uptime monitoring, security scanning and a monthly report.
Common questions
Is there anything I should do every day?
On most sites, no. The daily watch is better done by an uptime monitor, a service that requests your site every few minutes and emails you when it does not answer. On a store, look at the day's orders. A checkout that has stopped working shows up there first, as silence.
Can all of this be automated?
Part of it. Backups run on a schedule, WordPress can install its own security releases in the background, and plugins can be set to update on their own. What cannot be automated is the looking. Nobody checks the site after an automatic update, and a backup that reports success has still not been restored.
What is the least I should do?
Three things. Keep WordPress, plugins and themes updated. Keep backups that are stored off the server and that you have restored at least once. Remove logins that are no longer needed. Everything else on this page makes those three easier to trust.
The site has not been looked after for a year. Where do I start?
With a backup of the database and the files, checked by opening it. Then apply the updates one at a time, on a staging copy first if you can. A year of changes arriving together is the round most likely to break something. After that, work through the monthly and quarterly lists once, and start the weekly habit.
- ResourceA sample WordPress maintenance report: what ours says, line by line
- Error fixHow to fix "Another update is currently in progress" in WordPress
- Error fixHow to fix "Update failed: Download failed." in WordPress
- Glossary termShortcode
- Glossary termStaging site
- ResourceTaking over a client's WordPress site: a checklist to run before you change anything

