There is a perception among people who don’t administer websites that a website is something that is “done.” I remember working with a talented marketing team and after a redesign the marketing lead checked “website” off of her task list and said “Website’s done.” Since we have been working with websites for a while we know that a site is never “done.” Websites are like a garden and they need regular care. After all, the number one rule of website security is that someone needs to be paying attention, that’s usually us.
I have both ongoing and periodic maintenance tasks. In addition to backups and updates, every three or four months I like to take a closer look at the sites I’m responsible for to make sure they are in good shape. I’m in the middle of my periodic site maintenance routine and thought this would be a good time to share my task list and the processes I use to keep my sites up to date. I don’t think my list is the be all, end all, but maybe it will give you an idea or prompt you to share something with me that I’ve overlooked.
Video Version
Overview
I put my maintenance tasks into three categories. First, there are the on-going tasks that I perform regularly, multiple times per week. Second, there are tasks that I do periodically. Finally, there are tasks that I consider maintenance that are general site improvements. For example, we all notice things that could be improved, that really should be improved, but that aren’t a pressing priority. When I see these types of things I note them down and then try to knock a few off the list when I’m doing the periodic maintenance.
Ongoing Tasks
There are several things that I do multiple times a week, which I consider ongoing maintenance. A couple of them are automated.
Backups

In my mind I have three types of site. On my “main” sites where I regularly add content and which get a good amount of traffic I use BlogVault. BlogVault is very reliable and I’ve been very happy with it. I stagger the backup times so all of the sites aren’t being backed up concurrently.
The second group of “smaller” sites are ones that don’t change very often and I backup these when I make a change or when I do periodic maintenance. The third type are testing sites that I don’t usually backup. For ad hoc backups I use All in One WP Migration or WPVivid.
Malware Scans
Strictly speaking, malware scans aren’t a requirement, but they are good to have. If there is ever a hack then the sooner it is detected the better. iThemes Security uses Sucuri but it only scans the home page, or only the surface. I have two malware scanners. My license of BlogVault comes with access to its sister tool, Malcare. A cool thing about Malcare is that it scans the backup files after they have been uploaded offsite to BlogVault, so there is no extra load on your site. I use the Malcare scanner on all of the sites where I use BlogVault.

The other scanner is VirusDie. This one doesn’t have to be installed as a plugin, but sits outside of your site. I use this on the smaller sites (but not the testing sites). The Virusdie scans are also staggered because like a backup it has some server resource usage.

WordPress, Themes, and Plugin Updates
A couple of years ago I asked a bunch of people who maintained sites how often they apply updates. The answers ranged from once a month to daily. These days I can’t imagine running updates less than once a week. I run them every other day. I use MainWP. It is a huge time saver. While it has premium extensions, there are a lot of free features, and this is one of them.

Periodic Maintenance Routine
I try to do periodic maintenance when I have a few days in a row with some free time.
Hosting Level
There are two things I do on the “hosting level.” The first is that I take a look at the PHP error logs. You pretty much always find something. Sometimes there are random one off errors, but what I focus on are the errors that occur over and over. These often indicate either a plugin problem or a misconfiguration. For example, recently I noticed a frequent error related to a cron job. I have uninstalled a plugin and it had left its scheduled tasks running, which of course failed since the plugin was no longer around.
The second hosting level activity is to look at the file system. I usually use the Filezilla FTP client for this. I find folders left behind by plugins I’m no longer using. and there are often unused files in the “wp-uploads” directory from themes or plugins. This is a good time to keep an eye out for unusual files and folders that might be a sign of a site compromise.
Checks Using MainWP
There are a couple of checks I do using MainWP. I use MainWP because I can quickly see the results from a lot of sites all in one place. The first thing is that I run a report to see the list of all users. On the left admin menu there is a Users section. Going to that page there is on the right side a filter and search form. I select all of the sites and add all of the user roles and then get a list of all of the users. I test a lot of themes and plugins and it is not uncommon to give a developer access to look at an issue. Here is an example, I gave someone access to look at a problem and after they were done I downgraded their account to “subscriber,” but I didn’t remove it because at the time I thought they might want me to test their fix. So, here is a user that can be removed.

The second thing is that I look at all of the plugins installed in all of the sites. As with Users, MainWP also has an admin section for Plugins, which a similar report. Here I found a plugin where there are two different versions. For some reason on one site the plugin updates have fallen behind. This seems to happen pretty often with Toolset. Another type of thing I find is that I may have decided that I would standardize on one plugin and then intend to switch all of the sites to use it. For example, I use FluentSMTP for outgoing mail, but maybe I missed updating a site. Note also that on the filter and search form there is an option to search for inactive plugins, which can help to find ones that you can remove.

Onsite Checks
Next I log into each site and run through a few things.
Manual Backups
First I make a manual backup of the site and save it on my home network. This way I have a very current backup before making changes and I have a copy on my local machine that I can import into a test site, if needed.
Test Forms
I the test the contact forms and email signup forms to make sure they are still working.
Check for 404 Errors
I check for 404 errors. I use WP 301 Redirects on a couple of sites and the 404 feature of some SEO plugins on others. Yikes, here I see that WP 301 Redirects set itself as inactive because it didn’t connect with the license server. The good news is that it looks like it kept working, but this kind of thing doesn’t inspire confidence. There is no notice of an issue, so I only found this because I happened to be checking 404 errors. And this is why I try to do maintenance when there is a block of free time, because reporting errors can be time consuming. One reason I like WP 301 Redirects is that sometimes the pretty permalink can get truncated and WP 301 Redirects does a good job of guessing the correct destination and automatically creates a redirect rule.

Database Optimization
The next thing I do is optimize the database. This is one of those power user / developer type of task and you need to be careful, error on the side of caution, and have a backup. There are several free and premium plugins you can use. WP Optimize is a freemium plugin option. The free version has the ability to delete transients, old revisions and other things like comments marked as spam.

It also has a nice database table list. If your site has been around for a while then you might have orphaned tables left behind by plugins you no longer use. I like the WP Optimize listing of tables because it tells you popular programs that may have been the ones to create that table.

Another plugin is the Advanced Database Cleaner plugin. It has some nice features and also has a lifetime license option. It has the same cleanup optimization type of feature.

I like the database tables report because you can bulk select to optimize tables. It also shows you if there are tables with corrupt data.

Advanced Database Cleaner also has a report to show you cron jobs so that you can spot issues or delete ones no longer needed.

Check About and Privacy Pages
Finally, I don’t do it all the time, but once in a while I’ll take a look at the About page and Privacy Policy page to make sure these are still up to date.
General Site Improvements
Updating SEO And Cleanup
I had SEOPress Pro installed on one of my sites and was using a custom schema plugin I had written a long time ago but which was no longer working. Rather than update my custom plugin, I decided to use Slim SEO and Schema Pro for this site. The complexity of SEOPress Pro wasn’t warranted and it didn’t have a schema option that fit my needs. Slim SEO is a nice straightforward solution and the developer recently added a migration option from SEOPress. That migration worked like a charm.

I decided to use Schema Pro for the schema for one of the Custom Post Types on the site. I like the way this plugin has implemented review schema. It makes it easy to map fields and custom fields to schema values.

However, the review schema I wanted to use required a custom field that I didn’t have. It required a short description of the item being reviewed, I didn’t have one, and the excerpt wouldn’t do. I have recently purchase WPSheetEditor and decided to give it a try. It was a bit clunky, but I was happy with how easy it was to do a bulk edit. You can use a formula to concatenate fields, so I pieced my short description together.

WPSheetEditor lets you see all of the meta keys have have been used for the post type. I saw that SEOPress had added a ton for custom fields for its SEO data. I didn’t need those anymore. You can use WPSheetEditor to delete some custom fields, but it doesn’t work on meta keys that are part of an array. So I ended up using a database query, which was fast. Again, another task that needs a backup first.
Creating SVG Site Logos
I hate to admit that it has been a couple of years since Mor Cohen told me to get serious and use SVG format images for site logos. I’m not much of a graphic artist and have been using PNG images made using the Stencil online image editor. I’ve noticed over time that they seem to get blurrier and even though image optimization plugins are supposed to touch an image only once, I’ve suspected that isn’t always the case. In any event, I purchased the Glorify online graphics app from AppSumo precisely because it allows you to save in SVG format. Canva also has this feature, but other similar programs I’ve looked at don’t. I thought to give it a try. Glorify was not bug free, but I was able to get what I needed. I recreated the site logos for WebTNG and E360 in SVG. Yeah, I’m not a graphic artist, but at least this version is crisp.

Discussion and Conclusion
So we have gone over my maintenance list and the tools I’ve been using.
- Ongoing Maintenance
- Backups
- Malware scans
- Use MainWP to apply updates
- Web Hosting List
- Check PHP Error
- Check file system
- MainWP Checks
- Check Plugins Installed
- Check for user accounts and plugin versions
- Onsite Tasks
- Make a backup
- Test forms
- Check 404s
- Optimize DB
- Check the Privacy Policy and About Page
- Site Updates this cycle
- Switched from SEOPress Pro on a site to Slim SEO and Schema Pro
- Removed unused meta keys
- Created SVG site logos
My list of tasks works for me. If you only have one or two sites then you or your designate will want to be logging in at least once a week. If you have multiple sites and aren’t using a multi-site management tool, then start using MainWP immediately, it is free and a real time saver.
It is probably wise for you to adapt the list to match the types of sites you have. For example, if you have an ecommerce site, you will want to check that orders are coming in as expected. The important thing isn’t to run my list, or anyone else’s. The important thing is to be paying attention. Feel free to leave a comment if you found this article helpful or have a question.