MainWP Review

Welcome to our MainWP review. This will be a brief look at the functionality of the free version of MainWP. A follow-up artical will be written in future exploring some of the more advanced extensions available.

If you are anything like me then you will have created a significant number of WordPress websites which you are now responsible for. When it comes to building sites on WordPress my goal is to achieve as much as possible, with as few plugins as possible. This helps to keep things simple, reducing the likelihood of plugins breaking during updates and plugins being dropped entirely by their developers over time.

However, even with this approach, once you have more than about 10 active WordPress installations, keeping on top of updates for all of your sites can become a chore. This is where a product like MainWP can help. In this MainWP review we'll take a look at what MainWP can do to see if it's worth your consideration.

What is MainWP?

MainWP describes itself as a tool for WordPress professionals and admins who control multiple WordPress sites and realize that WordPress management is more than just plugin and theme updates. MainWP is a pairing of a control dashboard and child plugin who securely communicate to undertake a number of tasks across your 'child' websites.

MainWP Review
The MainWP Child and Dashboard plugins can be installed from the WordPress plugin dashboard.

The dashboard is a self-hosted solution which itself is a WordPress plugin. This means you will need a dedicated WordPress installation to run the main dashboard. With the low cost of cloud hosting infrastructure these days you could have this dashboard up and running for as little as $5 per month with a provider such as Linode or Digital Ocean.

The MainWP Dashboard
Main WP Dashboard Overview

Once the dashboard is installed you can now add your websites to it. This involves entering your website details in the MainWP site dashboard and then installing and activating the MainWP child plugin on your website. Once the connection has been made the Main WP dashboard can be used to view details and carry out various actions on each connected child website.

What can MainWP Do?

The MainWP Dashboard has a number of pages for managing your sites, posts, pages, themes, plugins and users.


The sites page presents a list of your connected child sites. This view allows you to see the total number of pending updates on each site, your current site heath status, and an uptime status code. Each site includes links to take you directly through to the WordPress dashboard of that site. This is quite a useful overview to see whether any of your sites are in desperate need of some attention.

Groups can be created and assigned to each of the websites and the main website list can be filtered by these groupings. This would be a useful feature if you are offering a variety of service level plans to ensure each site is being maintained in accordance with your service agreements. It would also be useful for internal organisation such as assigning ownership of websites to certain staff.

The MainWP site screen
The MainWP site screen.

Posts & Pages

The posts and pages tools allow you to see existing posts and pages from across your connected child sites. A link on each one takes you to that sites WordPress dashboard to view and edit the post or page. The most intersting feature here is the ability to create a new post or page from within MainWP and push them out to one or more of your child sites. They can be published immediately or set to deploy on a schedule. While I don't have a use for this myself, I can imagine there are a number of applications for this kind of functionality.

Themes & Plugins

The themes and plugin pages offer similar functionality. They give you a view of all currently installed versions and allow you to search and install new themes and plugins across your sites in bulk.


The users page allows you to manage and create users across your websites.

Wrapping Up

After using MainWP for this review the most useful aspect of the system is the ability to have a view across the update, site health and ping status of all my active sites. This saves so much time when undertaking regular maintenance tasks and gives you a nice overview at a glance of all of your sites. I think MainWP, or a tool like it, is an essential addition to any freelancer or studio who are managing multiple WordPress websites for clients. It gives you more power and control over your websites, and most importantly it saves you time.

All the functionality described comes with the free version of MainWP. Installing and trying out MainWP on your own setup is therefore an extremely easy proposition. MainWP also have an extension library. They offer both free and paid extensions which at a glance range from things like advanced uptime monitoring and reporting, to cloning, staging and more. In a future article I will dive into the MainWP Extension library to see what else they have to offer.

Enabling SMTP on Linode

Linode is one of the most popular cloud hosting solutions at the moment and with good reason. With over two decades in the industry Linode is the largest independent open cloud provider in the world with 11 global data centers serving nearly a million customers and businesses around the globe.

Linode is the cloud provider of choice for us here at Loopdesign, and after starting to move some of our sites over to them I noticed a small issue that might catch out some people new to their systems. As of Tuesday, 5 November, 2019, in an effort to reduce the amount of spam being sent by users on their platform, Linode have blocked SMTP ports 25, 465 and 587 on all new Linodes by default. This means that if you spin up a new Linode instance using something like their WordPress One-Click App, you won't be able to send email using that server.

To get the SMTP ports opened you need to do a few things.

  1. Make sure you have a domain A record pointing to your server.
  2. Setup reverse DNS on your linode in the control panel. To do this enter your linode in the Linode control panel. Enter the networking tab and at the bottom of the screen select the entry for the valid IPv4 address of your server and overwrite the RDNS entry with your valid domain.
  3. After the above steps are done you can open a ticket with Linode support and request that they open the ports for you.

This might sound time consuming but Linode support are excellent. The first time we went through this process it took a matter of minutes to implement the settings and just a few hours for Linode support to action my ticket.

Dark Mode on the Web

Dark mode settings have gained popularity over the last few years. The option to toggle between a light and dark colour scheme has been available in apps and operating systems separately for a number of years. Recently there has been a push to try and implement a system where this setting can be set once at an operating system level and have other apps and website adhere to that setting. Let's investigate how we can write CSS to have our websites obey the global dark mode setting.

All the major operating systems now have dark mode settings in their display preferences.

Windows 10 dark mode settings.

We can detect and set the background and font colours using the new prefers-color-scheme @media query.

body {
  color: #333;
  background: #fff;
a {
  color: #0033cc;

@media (prefers-color-scheme: dark) {
  body {
    color: #e1e1e1;
    background: #121212;

  body a {
    color: #809fff;

If the user has dark mode enabled in their system settings this code will present them the dark mode colour scheme, otherwise they will see the default colour scheme. There is no need to resort to javascript or server-side scripting to make this work any more.

Adhering to global dark mode is most important for sites and apps that people spend a lot of time on, however given how easy this is to implement I'd consider it good house keeping and considerate design to implement this on nearly all sites where it's suitable.