So You Want to Make a Commercial WordPress Plugin?

In the end of 2014 I decided to start a commercial WordPress plugin company. In March 2015 David Cramer and I launched CalderaWP. We went to market with an add-on for Pods and add-ons for Caldera Forms.

David and I met when he started contributing to Pods, where I worked at the time, and I was super-impressed by the UI in Caldera Forms. It worked the way I wanted my plugins to work.

A little over a year later I’ve started to look back at how it’s gone and how we could have done better. I want to share this in hopes you can learn something from my experience. This article is based on a tweet storm I sent recently.

To be honest, I was hesitant to write this post beacuse we’re doing OK, but we’re not having the kind of success that I see in the transparency reports from plugin companies that are killing it. But, I want to offer an honest and realistic vision of what it’s like to be a year out, and well positioned for success.

Speaking Of Imposer Syndrome

I just shared a bit of my self-doubt about sharing business advice. As a developer, it has been at time hard for many to get past “I’m not good enough for this.”

Do you know what? Fuck that. One of the best things about WordPress is it empowers us to try new things and learn as we go. That’s been the best part for me.

There are plenty of WordPress developers that are less skilled than me whose plugins sell better than mine, and plenty of developers who are better than me who I do better than business-wise.

Just make stuff and learn. Your version one is going to embarrass you later no matter what. Just don’t skip out on basic security and think you will fix it later. Sanitize and validate every user input and make sure every action has a nonce and authorization check.

If you don’t know what the last sentence means, start with the WordPress plugin developer’s handbook and Chris Wiegman’s presentation on application security for WordPress developers. If you have questions, its the kind of question advanced developers love to answer. Open a thread in the AdvancedWP Facebook and tag me if you need to.

Choosing The Right Product

caldera-forms-bannerLike the developers we are, we chose to work with the plugins we knew the best. On one hand this makes sense: you have to take advantage of your expertise. That said, Pods isn’t the most popular custom fields and content types plugin and Caldera Forms was virtually unknown when we started.

I don’t think that is a fatal mistake, and I believe very strongly in Caldera Forms. But, it did set us up for an uphill battle that should have been obvious to me, but wasn’t.

It’s hard, as a developer, to get passed what you think is cool and evaluate a project as a business.

More importantly, I’ve realized that I can’t prevent myself from thinking like a developer, and that’s OK. This is why we build teams with diverse sets of skills. When I started Ingot, I didn’t partner with any developers.

So You Want To Make Commercial Plugin?Photo by: Kamesh Vedula

Is It A Good Idea?

So do you want to make a commercial WordPress plugin? I think that is awesome, it’s a fun thing to do. But, if you want it to be a business you need to know if it a good business move?

What’s your timeframe to evaluate success? If it’s a year. Then the answer is almost always a big “NO” It takes a lot of time to grow. Think about it, if you only spend 500 hours coding version one, at $100/hr, that’s $50k in lost productivity. That’s a low estimate.

The point is that’s your investment in just getting the product built. You might think it’s free to build since you don’t have to pay yourself, but you still need to survive while you build it and get started and while you’re working on your product you’re probably not getting paid

You don’t have a website, logo, docs or two t-shirts for WordCamps yet. You or any marketting. You need all that. Seriously two shirts of different colors, that way you can wear a branded shirt both days and not have people think you didn’t change your shirt.

Do you have a plan to offset your lost productivity while you develop the product? How long can that last? Hopefully it’s as long as it takes to get the product to be self-sustaining.

How Are You Going To Support It?

So you released your product and some people started buying it. Congrats. Also, welcome to your new job in tech support!

Support is only one of the many costs that having a product.

When you read all of those transparency reports from successful plugin business you need to ask yourself: How long did it take? What are their expenses? How did they get there?

Can You Scale It?

Photo by: Andrew CoelhoIf all goes well you’ll get a bunch of users in your first year who can tell you what’s wrong with your plugin. Then it gets interesting. No matter how careful you are, at every stage of growth, your going to find new problems.

Technical debt is unavoidable and it is painful to pay back.

Now you need to support your users, fix the bugs, figure out what features to add, which feature requests to ignore. You need to find time to actually add those new features and keep doing whatever you’re doing to pay the bills without losing your mind.

While you’re adding those new features and fixing those bugs, you can’t break the stuff that works. Also, your competitors are going to add shiny new features you want and your users want.

At some point someone will tell you that you have to add a feature that your competitors has or they will use your competitor. If its a feature you want to add and can add, do it, but don’t feel like you have to do everything your competitor does.

It is better to let a customer who you can’t make happy go than to make promises you can’t keep to land the sale.

So, Should You?

So should you do it? If you’re passionate about your idea & 💖 building plugins & 💗 building a business, fuck yah. Have fun!

Just don’t think it’s quick money or fall into the “if you code it, they will come” trap. Price it high & fuck those who say lower the price.

If you’re in and need help with development, my company CalderaWP can help.

Just don’t forget that development is only part of what it takes to be successful. Right now we’re at the “Ok going well, but we need to scale it” stage. I have some theories on how to accelerate my growth, I’ll let you know which ones worked & which ones failed.

One thing I know for certain, you must invest in an awesome team and work hard on making that team work together well.

In fact stay tuned soon for a big announcements soon on how we are changing our team and how we do business in order to take our business to the next level.

But to the original question “So you want to make a commercial WordPress plugin?” I can’t really answer that for you, overall but I 💝 it 🙂

WordPress Plugins: SAAS! Gota Go SAAS. Right Brah?

All the things meme. Text is "SAAS all the things! All software is a service! $7.99/month! For the last year or so, I can’t get into a discussion about the WordPress plugin business without hearing why I’ve got to go SAAS, seriously SAAS, get that recurring revenue. I’m constantly hearing about why I need to turn my plugins into a software as a service (SAAS) model or create a SAAS business.

This worries me. The SAAS obsession can leads to businesses designed around a business model, instead of fitting a business model to a solution for a specific pain point. Also, the got to go SAAS brah push is paved with promises that it might not be able to deliver, depending on the product.

Don’t get me wrong, there is a lot of upside to a SAAS for developer, business and end user. So I’m not anti-SAAS or incorporating some of its benefits into a traditional plugin. I just think we need to break down why these things do or do not make sense.

Get Monthly Recurring Revenue

They want you to think you can’t charge for your plugin monthly

A lot of time I hear that I need to make my plugins a SAAS business so I can get monthly recurring revenue. This argument has at least three logical flaws.

  • It assumes you can’t charge for a plugin monthly

You can. For Ingot, we offer monthly and yearly recurring payment options. We use Freemius for this, it’s pretty painless for us and the end-user.

  • It assumes monthly payment options convert better than yearly payments

Ok, this is generally true, but if it’s not you’re leaving money on the table. If people are just as likely to pay you $100 a year, as $10 a month, you’re probably better taking that $100 up front, even if you get $20 less a year. The hope that I will have $10 next month doesn’t pay my bills. $100 now does.

A ton of MRR is awesome. But a little bit of MRR for a growing business, in terms of running that business, isn’t as cool as actual monthly revenue.

  • It assumes your plugin has ongoing value

Some plugins are more of a use once or twice type than essential type of plugin. These plugins — importers and converters — should always use one time payment.

Vova from Freemius has explored all of these points in alot more detail on their blog.

The big thing to consider is whether we normally make plugin licenses just about support and updates, not ongoing service, because that’s how we normally do it or if there is an actual reason for it. Consumers are used to paying an ongoing fee for services. I pay for Netflix every month. If I didn’t pay, I wouldn’t get Netflix.

Ingot doesn’t break sites when the license isn’t paid. It just always chooses the first possible variant and doesn’t record any data from the test. That way Ingot still creates valid HTML on the page, your site isn’t broken, but you don’t get the benefit of our algorithm.

That’s a lot nicer than Netflix. Last time I forgot to update my credit card details in Netflix, I logged on and they had removed all of the features besides the billing screen from the app. I didn’t get a single episode of House of Cards! Not one!

Yes, the licensing system in Ingot is super easy to defeat. But, people who don’t pay for software are not paying for my software whether they use it or not.

So, whatever, I’ve got a lot of things to worry about in life. Seriously, Donald Trump might be the next president and you want me to worry about people not paying for software. Meh…

Going SAAS purely because you can charge for your product in a specific way, not because you can deliver a better product via SAAS, or it fits better to the problem you’re solving or your solution, is bad business planning.

Protect Your IP

They want you to think your IP needs protecting

Photo by: Leigh KendellThis is the weakest argument for SAAS all the things in my opinion. Seriously, give me any good idea for a WordPress plugin and a small amount of time and money and I will reverse engineer it. So can a thousand other developers.

Yes, everyone can fork my plugins and use it anyway they want. I just don’t care. People try and get me to care, and I just don’t. When we launched Caldera Forms we didn’t fork Gravity Forms, we made our own thing and made it different, that is our advantage, it’s different.

I strongly believe that the ability to openly discuss source code with other developers leads to better code. Free software is both an ideological principle and a pragmatic way to make better software.

Does this apply in every case? Probably not. Getting investors interested in backing commercial free software isn’t easy. It’s hard for them to see what they should pay to make free software.

If you work in a free software space and you can’t convince yourself or an investor of the value of open source, one or both of you shouldn’t be involved in WordPress.

Serve One Stack

They want you to think some other plugin’s error is your problem

Photo by: Paul JarvisAs a developer, not having to worry about every single version of PHP and random crappy shared hosting configuration is a one of the most attractive propositions you can offer me. I dream of having one server stack to debug and being able to log every error. Being able to reproduce and test errors on the one single stack my app will be deployed on, that’s a wonderful thought.

iFraming in a plugin’s UI and not letting all the random crap that happens on a WordPress site break your app should make for less support.

I am making a lot of assumptions in this section.  Everyone of them needs to be evaluated to see if it is really true, not hopefully true.

But even if they are, that is not enough of a reason to go SAAS. Sure, running the processing on your server versus the user’s server might be the only way to make the service work. This is a case by case evaluation to make, but I’m just saying that Moore’s Law is against you on this.

But here is the other big issue: operational cost. Ingot runs totally on the end-user’s server. If someone uses it to run a million tests a day, or five tests a day the cost to us is $0. If we were a SAAS that cost might be very different.

This gives us serious flexibility in designing our pricing model. Assuming a fixed support cost, we could stop charging for the plugin tomorrow if we felt upselling to services was a better model. Our costs of running the core service wouldn’t change. Not being a SAAS product gives us major flexibility, including being a SAAS product at some point in the future.

For now we provide Ingot for between $0 and $100 a year and the risk of having the wrong pricing model doesn’t include running up a ton of AWS usage we can’t afford.

One of the big advantages of the WordPress plugin industry vs being a SAAS is we don’t pay to run the servers are software run on. Are you sure you want to give up that advantage?

Data Control

They want you to think “regular users” don’t care about owning their own data

Photo by: Aleksandra BoguslawskaWordPress is about democratizing publishing. As WordPress evolves that becomes more abstract, but the fundamental idea is that you control your data and what to do with it or not do with it. There is value in this and it is one of the reasons that people choose WordPress.

This point is not just ideological, it is pragmatic. WordPress users expect hooks, to customize how plugins and themes work. If the plugin doesn’t run on their servers, there are no hooks. Targeting an element in a cross-origin iFrame via CSS or JavaScript is not possible.

The more restrictive your APIware plugin is, IE the more you protect your IP, the more you have betrayed the WordPress promise of ultimate customizability. You start to invalidate the choice of WordPress for a project. And yes, WordPress isn’t right for everyone, but still, I want it to be as much as possible because WordPress is how I make a living and how so many people I know do.

The more complicated a site is, which often corresponds roughly to budget for the site, the more likely a site developer needs to modify how a plugin works or query its data directly. The more you close this off, the less useful your tool is to those who make WordPress sites professionally.

Professional developers and site builders are very important to your business. They recommend products, they blog about products, they buy multi-site licenses. They make other plugins that might integrate with your plugin.

SAAS Makes A Lot Of Sense

They want you to think Josh is anti-SAAS

Crop of ant in flower

Let’s talk about Akismet for a second. Akismet is Automattic’s anti-spam system. Without it would be covered in spam and would have failed. Without a healthy selection of anti-spam solutions all WordPress sites would be covered in spam and spam would have failed.

Akismet is one of Automattic’s oldest products for self-hosted WordPress sites and it uses a freemium SAAS model. The WordPress plugin is APIware that passes a suspect comment or other content to Automattic’s servers for a spam or not spam determination. The actual anti-spam system isn’t in the code they deliver to you in the plugin.

I don’t know for sure, but I suspect that if the that algorithm was running on your site it would be very anti-performant. I also suspect that in order to keep on top of increasingly intelligent spam bots, they need to crowdsource their machine learning.

Both of these factors probably make for an infinitely better service. In the process they got around having to release their code under a free software license and created a stream of recurring revenue. Both of those things I assume please the venture capital firms that Automattic would not exist without investment from.

And I pay that $5 a month for many of my sites. Great service, totally worth it.

So, will you see a SAAS service from me? Maybe. There are some interesting ideas being prototyped that might overcome every objection I’ve given here for going SAAS.

My team is way better equipped to deliver WordPress plugins than SAAS services — no devops here — so it makes me a bit nervous. I would suspect you would first see us offer add-on services to our core products that make them better or easier in some way.

People who skim this article are probably going to think I’m anti-SAAS for WordPress products. I’m not, I’m just saying that this business model has to be chosen because it’s the right business model. When the conversation starts at business model, before even knowing what the business is, that makes me antsy.

Inspiration Is Either Awesome or A Trap

The other night I was at the gym struggling to complete my sets on one of the leg machines that kicks my ass especially hard when I noticed two people doing “super sets.”  Super sets, if you don’t know, are exercises that people do in between weight lifting sets — push ups, jumping jacks, etc.

That’s right, people are doing exercises between their exercises.

That night as I was struggling to reach my goals on the weight lifting machines, these two people were not just lifting more weight on the same machines as I was. They were also doing aerobic exercises in between — time I reserve for panting and cursing under my breath.

Luckily I didn’t let myself compare myself to these way more fit people, who have clearly been working out for more than a few weeks.

See I often go to the gym with my friend Andy. He shows me what to do, and then does it with way more weight. I’m just getting back into exercising, so I’m learning from him, and doing what I can.

Focusing on how much more he can lift than me is stupid. Focusing on how he does it, taking his feedback on how I’m doing it wrong and how to improving my breathing is how I’m going to get my ass in shape.

Inspiration or Comparison?

Or why Josh woke up in a shit mood today and how he turned his day around…

The WordPress community is gifted by people who have had success and then share the lessons they learned along the way. It’s pretty amazing that when I’m starting a business that is in many ways similar to iThemes, I can hear their founder Corey Miller speak at WordCamps, get really awesome advice from him, read their awesome WPProsper newsletter…

Corey isn’t the only example. I had the pleasure of meeting James Laws from Ninja Forms, a business even more similar to my own at WordCamp Atlanta. I spoke with several members of his team then and have  talked to him a few times online about running a business in the add-on model since then.

This is awesome, if you want to be in the WordPress ecosystem, and you’re not taking advantage of this, then you are doing it wrong.

But that’s the easy part. The tricky part is not looking at their success, trying to emulate and then beating yourself up for not being where they are.

I started a WordPress product business of my own about six months ago that is going pretty well so far. Are we as big as iThemes or Ninja Forms? Nope. Are we years behind them in experience, building a brand, and nurturing our user base? Yep.

The support the WordPress ecosystem provides is awesome, but it does not make it easy. You can and should emulate those who are more successful than you. But it takes time and lots of hard work.

The real doing it wrong, a trap I find myself in, is comparing my self to people who are years ahead of me in terms of their revenue numbers, active install counts on, how mature their products are and how much everyone loves their products.

I believe in what we are doing at CalderaWP, the products are awesome, and the response from people who have used them is very positive. We will not be an overnight success, and neither were any of those I look up to.

So yes, it’s a trap. But it is an easy trap to get out off.

Those who are more successful then you, are great inspiration and when they share how they got there, that’s awesome. When you get out of the comparison trap, you can not only move forward. When you learn from them, instead of comparing yourself to them, instead of getting dragged down by jealously, you find your own unique path.

That unique path, in time is either going to work, or not. I have no idea. But only by moving forward on it, am I ever going to find out. I hope y’all will keep watching and find out.

Y’all Are Awesome

I should put that on a t-shirt 🙂

Thank you to everyone single one of you in this wonderful community for inspiring me to keep at it. It means the world to me, and I look forward to seeing y’all at upcoming WordCamps — I’m speaking at Las Vegas, Tampa and New York and planning on getting to Orlando and US as well — to say thanks in person.

In the meantime, we’re going to keep making Caldera Forms more awesome and spinning up other cool plugins. I hope you will try them and let us know what you think.