After 9 years of WordPress developing, we found ourselves hosting more than 120 websites. For most of them we purchased premium plugins, and we charged them at a fair single licence price per premium plugin to our clients.
You can imagine that, with the number of websites and plugins growing exponentially, our ‘system’ became unmanageable, and we couldn't keep up with the administration. This left us with 2 options: charging a guesstimated fee or finding a way to automate the process of knowing which plugins are installed on which website.
Obviously, we went for the ‘fun option’, which came with some bonuses.
What we needed
We needed an inventory of every plugin that is used on every website we manage.
Since we previously installed a custom AppSaloon WP plugin on our clients’ websites for development purposes, we opted to implement some extra features.
For starters, we added a function that sends all installed plugins and themes to a central database.
We captured about 1.100 WP plugins installed on WordPress sites, either websites we develop on, or maintain. About 240 plugins of them are premium plugins.
Inside this premium plugin list we added some metadata to specify the plugin prices. That way, we have a plugin-cost overview from every website available at any time.
We also added plugin bundles to deal with multiple plugins that came in one package, or to consider the fact that some clients bought their own premium plugins for their existing website, before we started developing for them.
Lastly, we built a client portal to display the true cost of their website, including hosting, domain names, plugins and prepaid credits for services such as Postmark, Shortpixel, ...
What we got
The process of developing a way to keep track of WP plugins came with a few bonuses:
- Plugin versions are also tracked, meaning we automatically track a plugin update / install changelog per site. Monitoring updates is crucial for us, since we often deal with complex setups that are prone to break on auto plugin updates. We now know when we last updated every website.
- Also, since we know which plugin version is installed on which website, we can actively track vulnerabilities. To keep track of this, we built an alert system in conjunction with the API of wpscan.com.
- Finally, we scrape plugins.svn.wordpress.org searching for latest versions and metadata, so we know when new plugins are made available.
It took some effort to build this system, but in the end, we created lots of insights into our operations. Our administration finally has access to some valuable tools to keep track of all of our client’s expenses. Our maintenance has never been running so smoothly. Our support team can easily check what has been changed if problems arise. And on top of that, we created more transparency for our clients, so they know what they’re paying for.