A periodic maintenance routine for WordPress sites (monthly or quarterly) from the perspective of an agency or freelancer. Beware: Critical security issues should be resolved as soon as possible.
- Choose the right time: In general night time or weekends are better suited for maintenance work than business hours. Consider announcing maintenance work to customers to avoid possible interferences.
- Check for sites to update and choose a site. I like to tag each project with the next applicable maintenance period.
- Start tracking time if necessary.
- Get all relevant docs and apps ready, that you’ll need during the maintenance process.
- Check auto-backup mechanism (if in place): Backup schedule correct? Folders fully backed up?
- Create manual site backup (maybe only database on larger sites): Make sure you’re able to restore the site in case something goes wrong during the maintenance process. I prefer using a different backup tool than the one already used for auto-backups, in order to increase the chance of having a fully working current backup (e.g. UpdraftPlus for auto-backups and Duplicator for manual backups).
- Consider creating a staging site for update testing: Usually depends on maintenance plan specifics, site specifics (plugins etc.) and known technical issues.
- Consider setting site into maintenance mode: Clean server cache and check site in incognito mode.
- Check for relevant maintenance notes, general or specific to the project or update period (e.g. regarding plugin conflicts, technical dependencies, legacies).
- Update theme(s) if appropriate (before WordPress).
- Update plugins one by one (before WordPress). Assess necessity and risks (check out the changelog) and prioritize in regard to overall time consumption. Normally, only update to small releases (avoid premature feature updates, instead wait for maintenance version releases).
- Update WordPress Core if appropriate. Again, consider only updating to maintenance version releases (more stable and secure).
- Clear and preload cache: Clear server and browser caches.
Site Specific Tasks
- Execute site or customer specific tasks, that are part of the maintenance agreement (e.g. broken link repair, image optimization, content related tasks).
- Maybe execute additional scheduled tasks (reparations, improvements, new features etc.).
Testing and Repair
- Test site in incognito mode (as logged out user): responsive page layouts, user interactions, accessibility, loading speed.
- Repair: Keep an eye on overall time consumption. Consider roll-back (e.g re-installing old plugin version) and waiting for a future release. Maybe contact the client to discuss unexpected costs.
- Take notes for internal and customer reporting: I like to send a short maintenance report with the invoice. Apart from that I take technical notes for my future self (e.g. on incompatibilities or other issues).
- Check security measures (e.g. warnings by security plugin).
- Consider cross-browser testing new or updated features.
- Clean up after yourself: Delete test site (or keep it updated for security reasons), delete all test entries (Shops: delete test orders, set invoice number back, deactivate sandbox mode for payment processing).
- Make sure your customer’s admin screens are uncluttered (login as editor or other relevant user role). Plugins sometimes add new meta boxes, that can be confusing to non-technical editors.
- Turn off maintenance mode. Also clean server cache and check site in incognito mode.
- Backup site again (or database only): If you’ve created a local backup first, then maybe now use your auto-backup tool to initiate a quick cloud backup.
- Finish maintenance reports (customer, internal).
- Contact customer if appropriate (important info or todo).
- Create/Update invoice: time spent or flat-rate, any other yet unbilled maintenance time, additional fees (monitoring, project management, consulting, license costs etc.).
- Tag project for next applicable maintenance period.
- End of maintenance routine: Consider infrastructural backups of respective documents and app data (notes, invoices etc.).
- Clear browser cache.
- Flush and deactivate caching plugins or server-side caching solutions (Webhost admin area).
- Check plugin settings.
- Deactivate plugins and re-activate one by one.
- Read specific plugin changelogs and support forums.
- Switch to WP default theme (caution: loses widgets).
- Try deactivating modules within active theme or feature plugin.
- Consider PHP version incompatibilities (try downgrading).
- Consider issues with SSL implementation or certificate.
- Consider CDN and other external interferences.
- Take a break.