Settle in, friends, this is a long one.
Fatal Error Notify is a plugin aimed at WordPress developers and agencies that offers alerts when your site begins to generate errors. This plugin has a host of features: auto-deactivating plugins that take your site offline, Slack notifications when errors occur, a stealth mode to prevent your clients from turning the plugin off, logging functionality and more.
Developer Jack Arturo, from Very Good Plugins, sat down and broke the record for most thorough answers to my questions since I started this site. Jack talks about the genesis of the idea for Fatal Error Notify, the ups and downs of developing products aimed at developers and his interesting project, ErrorWire, that is meant to help WordPress users prevent plugin errors before they even begin.
Can you tell me a little bit about yourself, Very Good Plugins and your background with WordPress?
Sure! I’m a self-taught programmer (went to school for classical studies, which was awesome, but the practical applications are limited). I’ve been working with WordPress for about ten years now. I worked at a small agency before transitioning to be freelance full time. I started out just “building websites,” but as I got better with WordPress I started to move into doing more specific projects involving connecting WordPress with outside services and APIs.
About four years ago, I was working on a project to connect the plugin UserPro to Infusionsoft. The client wanted any new user registrations on their WordPress site to be added to Infusionsoft as contacts in the CRM. After developing that integration, I decided to offer it as a plugin for sale, named WP Fusion, and that’s when I founded Very Good Plugins— as an umbrella for WP Fusion, and also the custom plugin development I was doing at the time.
WP Fusion has been an awesome success. As customer feedback came in, it’s grown significantly in scope, and now instead of just connecting UserPro to Infusionsoft, it connects 38 different WordPress plugins to 16 different CRMs and marketing automation systems. So that’s my primary project at the moment.
How did the idea for Fatal Error Notify come about?
Providing support for WP Fusion is a bit different than supporting a typical WordPress plugin, because we’re not just introducing new functionality to WordPress, we’re augmenting all of these other plugins with the ability to integrate with CRM systems. So troubleshooting issues with our customers often involves debugging those plugins we integrate with.
As an example, WP Fusion adds a contact record to your CRM when someone checks out with WooCommerce. But if a customer is running an outdated WooCommerce add-on that causes an error at checkout, then WP Fusion can’t do its job, and that falls on us to fix it.
Some developers might say, “Deactivate all plugins and themes, and if the error goes away, then it’s not our responsibility”, but I prefer to provide a higher level of support than that— so we’ll often fix bugs in other companies’ plugins in order to make WP Fusion work correctly for our customers.
You can image after a few years of this, I was getting quite good at debugging WordPress. And also realizing how often incompatibilities between plugins and themes would break site functionality in ways that weren’t always apparent. Sometimes your site would load fine, but submitting a Gravity Form would fail, or a checkout would crash when choosing PayPal— and the site owner would never know about it.
In the meantime, we’d been pushing beta releases of WP Fusion to our sales site, since the best way to catch bugs is to run the plugin in real world situations. But we also didn’t want a beta release to break anything and cause us to lose customers. So I’d written a few functions for that site to catch any fatal errors and send me an email with the details.
The idea for Fatal Error Notify as a plugin/product came about in November of last year. I write about the story in a little more depth at our FAQ, but basically: we’d installed a popup plugin to advertise a Black Friday promotion, and this plugin caused a fatal error in the Gravity Forms Helpscout plugin whenever a form was submitted. Since we use Gravity Forms for support tickets, our support system was effectively broken.
This would have represented a huge loss in business, especially with this big promotion running, but that little error reporting function sent me an email immediately and I was able to switch to a different popup plugin. So our contact form was only broken for a few minutes.
And that’s when a lightbulb kind of went off that there might be broader applications here.
What was the hardest part of developing the plugin? Was it something technical or maybe something else that most developers wouldn’t anticipate?
It was actually almost trivial to build, haha. My biggest surprise was that no one had thought of it before… and I spent quite a bit of time on Google making sure we weren’t creating something that had already been done. But it seemed like, somehow, nobody had thought of it yet.
Of course, I’ve built dozens of WordPress plugins, so I have templates that I start with, and a lot of code I re-use between projects, which speeds things up considerably. But it’s still only 390 lines of code… quite simple, and I’d like to think maybe even elegant. 🙂
After a few weeks I then moved onto building the Pro version. This took some more effort because it has features like Slack integration, logging of errors to the database, etc. There weren’t any major technical hurdles though, as I’d done a lot of that before with other projects. Probably the biggest challenge in building the commercial version was testing:
With the free version, it will catch most standard errors that we’ve been able to throw at it, but I wanted people who were paying for the Pro plugin to know they could rely on it even in less common scenarios.
So myself and another developer who works for Very Good Plugins set up sites with every possible error scenario we could imagine. And then tested the plugin to make sure it could catch those errors, and send the notifications, even if the site was crippled.
This led us to include features that allow the plugin to notify you even when the site is out of memory, and when script execution time has been exceeded, for example. We also included fallback methods for sending notifications in case WordPress had failed to load properly (for example falling back to PHP’s mail() function if wp_mail() was unavailable, or directly using CURL when wp_remote_post() isn’t available).
Oh, and one other thing, which likely was the hardest part— that spinning globe at the top of our site. I had mocked up the site design and knew what I wanted. Actually coding it took a full weekend. Eventually it will show pings in real time as errors are reported by our users all around the world with a little speech bubble containing the captured error. Possibly overkill, but I can be a perfectionist, and it will look super cool! 🙂
I feel like developers tend to lean towards product ideas for other developers but that can be a hard market to sell to. What are your marketing plans to reach that kind of customer?
It is. And to be honest, if this plugin isn’t a runaway commercial success, I won’t be too disappointed. WordPress and the open source community in general has allowed me to build a business where I get to exercise myself creatively every day, and also employ three other people full time, giving them that same creative opportunity.
So in a way, Fatal Error Notify is us trying to give back a bit to that community, and make WordPress “a better place” (as they say, haha).
I have several clients, going back years, that I still handle site maintenance for. I’ve installed Fatal Error Notify on all of their sites, and it’s already saved me so much time (and saved them frustration), because I get a Slack notification when something breaks (usually related to a plugin update). I go in, I fix the issue, and it’s resolved before they even knew about it.
We’d like to get more people using the free plugin, of course. And that’s actually been easier than I expected. Initially I knew people would respond, “why do I need this?” or “I don’t want another plugin” or “my site is working just fine”.
But what I didn’t expect is, with those people who have tried it out, once they get that first error notification, even if it’s been all-silent for weeks or months, it immediately makes sense to them. If they’re able to recover a single sale or retain a single member because of that error notification, then they go install it on all their sites. And they start recommending it to anyone who will listen. It’s a great insurance policy: you don’t know you need it, until you suddenly do.
So that’s for individual site owners, running the free version, and probably users with a bit of technical know-how.
On the other hand, I think there’s a real value in our premium plugin for developers and agencies. Having worked in an agency myself, we always offered our clients a maintenance package. This included automatic backups, uptime monitoring, automatic plugin updates, monthly SEO reports. It’s a little different each time but the vast majority of web development agencies offer something along those lines.
Offering a maintenance package with uptime monitoring will alert you when your client’s site is down, but you have no way of knowing if a plugin update or WordPress core update has broken something behind the scenes, and it looks bad when the client emails you telling you their checkout is broken— wondering what they’re even paying you a maintenance fee for.
So a hypothetical agency can purchase our Agency license, install the plugin on all their client sites (we include an option to hide the plugin so it can’t be deactivated), and connect it to their company Slack channel. Whenever something breaks, they’ll get the details right away, and can go in and fix it. This might involve downgrading a plugin, restoring from a backup or manually editing code. But at least you now know there’s a problem.
That kind of insurance is a great thing to include in your existing maintenance bundle or even offer as a separate service. I know many people who’d be happy to pay an extra $15 a month (or more) to know that there’s someone receiving these errors and is responsible for fixing them. So I think we have some good potential for gaining those types of customers.
What can you say about ErrorWire and its relation to Fatal Error Notify?
ErrorWire is where it gets interesting. It’s an ambitious project, I’m hoping to get a beta up and running this year, but there are a lot of things we’re still working through in the planning process.
Basically, we’ll ask all users of Fatal Error Notify to opt-in to anonymously send their error data to ErrorWire. ErrorWire will work like a massive interactive database of every error we’ve captured, with every plugin and theme, broken down by plugin version, WordPress version, possibly details related to hosting environment, and other variables (we’re still figuring this out).
The problem we’re trying to solve is that there’s no real “scorecard” out there for WordPress plugins. There are things in the wordpress.org repository that say, “Warning, this hasn’t been updated in three years”, that still work just fine. There are also very popular plugins that are poorly written and generate 10’s of thousands of lines of PHP notices and errors. And there are plugins that are well developed, by reputable agencies (Gravity Forms and WPMU Dev in my example above), that break your site when used at the same time.
So we’d like ErrorWire to be a resource where you can easily look up any WordPress plugin (and likely themes as well), and see known incompatibilities, how often those plugins cause errors, whether those errors are fatal or just inconvenient, and generally get a better sense of what you’re about to install.
As that dataset grows more comprehensive, we’d like to add ErrorWire integration to Fatal Error Notify Pro. So you could, for example, click a button before updating WordPress and have Fatal Error Notify check the ErrorWire database for any known issues between any of the software you’re currently running and the WordPress update you’re about to install.
If you’re looking to add a new plugin, we can also display information from ErrorWire inline with the search results, giving you a better sense of the quality of what’s being displayed.
This is not so different from the Tide project, which has Automattic and Google behind it. I think it’s an awesome project, but Tide is using dedicated audit servers to check individual plugins for coding issues. This will certainly help improve code quality in the WP ecosystem, but it can’t help you when it comes to incompatibilities with what you already have installed. By crowdsourcing all of this error data from our users, we’ll be able to provide a much more comprehensive picture.
Finally, I’d like to think ErrorWire will make developers more accountable for the quality of their code. I’ve worked with many plugins that don’t have any noticeable problems, but fill up my site error logs because the developers have been sloppy and don’t take the necessary steps to pre-empt warnings and notices. When all of this “dirty laundry” starts showing up in Google results at ErrorWire, they might be inspired to focus more on code quality— which makes WordPress better for everyone.
You launched Fatal Error Notify in December. What have you learned since then that you wish you had known before you started?
To be honest, I haven’t done much with it at all since launch. I’ve started a couple of successful WordPress plugins now and in my experience it’s best to put it out there and let things percolate for six months or so before we try and take it to the next stage.
We’ve had a small but steady stream of sales, and our active installs of the free version are growing, slowly. With that I’ve gotten some good feedback on things that could be done better, features customers would like to see, etc. It’s also given me time to think about the longer term goals of the project and how to refine the messaging to better communicate the value that Fatal Error Notify provides.
We’ve built up a list of customer requests and internal ideas in Trello, and then in a few months I’ll pivot back to Fatal Error Notify for a few weeks and implement all those ideas. At that point we’ll be ready to come out of beta status and start promoting it more strategically.
I never feel comfortable coming out of the gate with a brand new product, and then trying to sell it like it’s perfect. So we’re in a “listening” phase right now. But we’re hearing good things. And it’s helping to shape my ideas about where to take it next.
What’s next for Fatal Error Notify and Very Good Plugins?
A lot of that I’ve discussed above, but generally— just trying to raise awareness of the plugin (which articles like these certainly help, so thank you), and also refine our plans for how to make Fatal Error Notify and ErrorWire into truly invaluable tools for the WordPress site owner or WordPress agency.
In terms of Very Good Plugins, we’ve grown from a team of one (myself) into three people over the last year so I’m having to learn how to delegate and take on more of a project management role. Eventually we’d like to bring in more people with different backgrounds, like marketing, documentation, etc. But I’ve also gotten burned in the past by trying to grow too fast, so we’re letting it happen organically— and so far the future looks really bright!