My brother and I just finished launching our third premium WordPress plugin. We both live and breathe WordPress on a daily basis and are excited to now be working on our plugins full time.
However, a lot has changed over the past four years, and we have learned a lot. Let’s just say, we encountered a lot of new obstacles along the way with each plugin release. 😉
We thought it would be interesting to share some of these with you. Hopefully, some of you developers out there will be able to relate with a few of these. Or perhaps you’re in the middle of launching a new plugin and are currently struggling with a similar issue.
What we’ve learned building our WordPress plugins
All of our plugins have been born out of need. We use third-party plugins just like everyone else, and sometimes the solutions already available in the market simply don’t hit the mark. That’s when we decide to build our own plugins and develop them in a way that fixes the problems we see in our workflows.
- Do market research
- Pick a solid ecommerce and distribution platform
- Running ecommerce on WordPress is expensive
- Recurring payments are a must
- The PayPal IPN is frustrating
- Working with Stripe is so easy
- VAT can be confusing
- Leave more time for testing than you think
- Performance-driven development
- Launch with an affiliate program
- Be prepared to hustle
- Leverage your contacts
- Get ready for feedback
- Give customers good documentation and changelogs
- Refund policy is tricky business
- Wait to update WordPress plugins
- Think outside the box
1. Do market research
When we launched our first plugin, WP Coupons, we simply did it because we started getting a few requests about what we were using on our own site. We didn’t do any market research, think about the niche, or anything. We looked briefly at the current competition, and that was about it. We did it wrong!
The reason I know we did it wrong is due to looking back at our sales for the last couple of years. I won’t reveal exact numbers of course, but lets put it this way:
- We launched WP Coupons in June 2016
- We launched Perfmatters in June 2017
- We launched Novashare in May 2020
Our total sales for Perfmatters is over 2x that of our WP Coupons plugin. And if you look at our new Novashare plugin, you can see that in less than a month of it being for sale (at the time of writing this), it’s already at 3%. So we know our Novashare plugin will easily surpass WP Coupons.
This is simply a good reminder of why you should spend some time and think about your niche when launching a plugin. Here are just a few things I recommend looking at:
- How many people would use it?
- How popular is the space?
- What is the long-term viability of the plugin? (For example, does it work with the new WordPress block editor? Does it need to?)
- Do you have a passion for the plugin you’re building? (this is actually more important than most people realize)
Obviously, there are a lot more people that want to speed up their sites and are running social sharing plugins than there are those running coupons for affiliate programs. So that is a pretty obvious example. But you should always do your research and think it through.
We actually love working on all of our plugins and we use WP Coupons extensively on some of our own sites, so we really don’t mind that it might be selling less than the others.
2. Pick a solid ecommerce and distribution platform
We were going to originally launch our first plugin in WooCommerce using the Digital Downloads Extension. But upon further research, we decided to go with the Easy Digital Downloads platform. I have always heard good things about the original developer, Pippin, and wow they were right!
My brother, our developer, said the documentation for configuring stuff was amazing, and we literally had EDD up and running in a few minutes.
After using EDD, at least for digital downloads, I will never go back to using WooCommerce again.
Not to mention that EDD is way faster when it comes to performance. Check out our speeds with EDD running. We got a load time of 389 ms. Let me see you do that with WooCommerce!
3. Running ecommerce on WordPress is expensive
While I’m still glad to this day that we went down the Easy Digital Downloads route, it’s also expensive. Both my brother and I like to keep our expenses as low as possible. But there are places where it makes sense to invest long-term, and a good ecommerce platform is one of them.
Over the past couple of years, the developers of both WooCommerce and Easy Digital Downloads have been raising prices. Some parts of EDD went up by over 250%. 😨 Here’s the current cost of premium plugins/extensions we’re running:
- Recurring Payments ($329.00 per year for 2 licenses)
- Stripe Payment Gateway ($129.00 per year for 2-5 licenses)
- Software Licensing ($329.00 per year for 2-5 licenses) To put this in perspective, a single license cost under $100 in 2016, and it now costs $199.00
- PDF Invoices ($49.00 per year for 2-5 licenses) The reason you want this instead of the HTML invoices extension is that an admin can download an invoice and send it over to a customer upon request.
- AffiliateWP ($149.00 per year for 3 licenses)
- EDD EU VAT ($179 per year for 5 licenses) They also offer a lifetime price, which can save you money.
That’s a total of $1,164.00 per year, just to keep our plugin shops operating. Doc’s response pretty much says it all. 👇
Note: We have grandfathered pricing on some of the above due to the fact that we’ve been with EDD for so long.
And that doesn’t include some other third-party premium plugins we’re using, that’s just the ecommerce related ones. Fortunately, we’ve been doing this a while now that the investment makes perfect sense, and EDD definitely pays for itself.
However, for those just starting out, the cost of single licenses is pretty expensive! The great news is that in November 2017, EDD launched its All Access Pass for $499 per year. As someone just starting out, you can also upgrade to this option as you go.
If you look over at WooCommerce, it’s pretty much the same. All the premium extensions are going to cost you a pretty penny.
If you look at other solutions like Freemius (which we are a huge fan of), they use a different approach and take a percentage of your lifetime gross sales. 27% on first $1k; 17% on $1k-$5k; 7% after $5k. The advantage of Freemius is they take care of everything for you, including things like VAT, abandoned cart recovery, affiliate program, etc.
But we still prefer the EDD method for now as our expenses don’t increase with our earnings.
4. Recurring payments are a must
I keep tabs on a lot of people in the WordPress space, and Scott Bolinger (co-founder of AppPresser) is one of them. He launched his Holler Box plugin a couple of years ago, and in one of his blog posts on EDD, he mentions:
“The best way to create sustainable revenue for your business is with recurring renewals.”
This wasn’t the first time I’ve read this. In fact, almost every plugin and theme shop in the WordPress industry has been moving to the new recurring model. If you’re spending time updating your plugins each month, as well as offering support, which we do for both our plugins, then it really makes financial and logical sense to go with the recurring payment model.
Enabling auto-renewals is easily one of the best financial decisions we have made. — Pippin (year in review)
With all of our plugins, we’re pushing out on average one update per month, which is great. That has and always will be our goal. We also offer insanely fast and personal support. So after some deliberation, we decided to move to the recurring payment model back in 2017.
By doing this, you’ll definitely see some customers simply cancel right after they purchase, but those that don’t will definitely make up for it. And this way you can focus more on developing and re-investing into your products over time.
And I can tell you six months after making the move, we wish we would have made it sooner, as this truly is a better way to build passive income. 👏 Thankfully, EDD makes this super simple. You just install the Recurring Payments extension, and you’re good to go. You don’t have to worry about messing up older purchases, as they will still be able to renew as they had previously.
Also, as a developer and a marketer, I don’t believe in lifetime subscriptions and don’t think they should even exist. Many developers are wearing multiple hats and pour so much work and support into their plugins. If you offer lifetime access to your product or service, you are devaluing yourself. And from a marketing standpoint, it’s just a bait and switch. If you have a quality product or service, it’s worth value.
5. The PayPal IPN is frustrating
We were a little confused at first when we launched our recurring payments with PayPal. At that time, we had two different plugins with two different websites. According to EDD’s documentation, you have to have a unique IPN URL for each store. But PayPal only lets you have one IPN URL.
This is a big problem! Unlike Stripe, which lets you add as many unique API URLs as you want. Why PayPal, why? 😡 So we had two EDD stores, one PayPal account, and one IPN URL. How would this work?
We tried a few things actually. The first thing I did was actually chat with EDD support. Unfortunately, they simply confirmed that yes you need a unique IPN URL for each. I already have a personal PayPal account and we then have an LLC PayPal. But you can’t open multiple business PayPal accounts. You could open up multiple PayPal accounts (not linked to your bank) and transfer to a primary one linked to your bank, but this seems ridiculous.
My brother and I were curious about what others were doing, as we can’t be the only ones with multiple EDD shops needing a unique IPN URL for each.
We then started looking at some other third-party alternatives, such as an IPN server. Basically, you create forwarding rules for PayPal IPN notifications so that you can have IPN data sent to multiple IPN listeners at once. This resolves limitations with PayPal’s IPN configuration, where they only provide a single URL for an IPN listener.
But before we tried the above, I figured… I might as well try asking in the EDD Facebook group. And thank God I did! (see full thread). Chris, one of EDD’s developers responded. If you read this Chris, thank you.
And there you have it! This actually goes against what their own EDD documentation says, and what their support told me. Thank God for FB groups. 😁 We ended up testing this, and EDD does indeed overwrite and send in the IPN callback URL. Or rather, it is attached to the subscription. So problem solved.
6. Working with Stripe is so easy
I’m a huge fan of Stripe, and we decided we wanted to offer both PayPal and Stripe on our EDD sites. The cost is really about the same as far as transaction fees go. It was super easy to set up, all it took was purchasing the Stripe Payment Gateway extension. Here are a couple of reasons why Stripe rocks over PayPal:
- With Stripe, you can easily set up as many sites as you want with their API. There is no stupid unique IPN URL like with PayPal. In other words, Stripe cares about developers.
- Stripe auto deposits into your bank account every 24 hours. Hooray! 👏
- Stripe’s reporting is miles ahead of PayPal.
- Stripe helps combat fraud purchases with Radar, which is legit.
- I haven’t had a single issue with Stripe, ever! Don’t get me started on PayPal. The IPN problem above is just one of many that I’ve encountered over the years.
With that being said, it can be handy to run both. Some of our customers have preferred to pay with their existing PayPal balances. About half of our customers actually pay with PayPal, the other half with Stripe. Why not try and capture as many people as possible?
7. VAT can be confusing
Value-added tax (VAT) is confusing as hell. I thought taxes here in the United States were bad, but VAT takes it to a whole new level. For those of you who aren’t familiar with it, VAT is a consumption tax on goods and services in the EU.
Our business is located in the United States, but we are still required to charge VAT for B2C transactions to those in the EU. The rate is based on the customer’s country. And for B2B EU transactions, you have to do what they call a reverse-charge VAT. This means if they have a valid VAT number, they aren’t charged VAT. That also requires you have a way to authenticate VAT numbers on your ecommerce checkout page.
I had so many questions when I went down the VAT rabbit hole a couple of years ago. I have an upcoming post I’m working on that I’m calling “VAT for Dummies.” Stay tuned for that. I’m not an accountant, but I do work with one, and it will help answer some of the following questions for you:
- How do you submit quarterly VAT payments?
- How do you handle exchange rates when converting USD to EUR for submitting VAT MOSS returns?
- If you overpay on VAT, how do you get the money back?
- How do you calculate the total VAT due?
The good news is for WordPress developers, there are solutions that help make VAT a lot easier if you’re using EDD. We were previously using Quaderno (which is great), but last year the amazing team over at Barn2 Media released their EDD EU VAT plugin. These guys get what developers using EDD need! I highly recommend it.
8. Leave more time for testing than you think
You should always leave more time for testing than you think. With so many different themes and plugins out there, you really have to account for all sorts of scenarios and things breaking. This can be a pain, but it also makes you think through your development process a bit more to prevent tickets and bugs from popping up after launch.
So note, allot many weeks for testing your plugin. And depending on the size of your plugin, you might need to even test for months. The more you test, the easier it will make your launch. With our Novashare plugin, we actually launched a beta version that we used on our own sites for months while we rolled out improvements, bug fixes, etc.
Another good idea if you have time is to reach out to some bloggers or WordPress folks that you know that might be interested in testing your new plugin. Some people love to be beta testers! This can be a great way to get feedback, as I guarantee they will find things you didn’t.
9. Performance-driven development
We have become obsessed with performance-driven WordPress development. This means taking extra time to strategize and code things in a way that is performance friendly. A few examples of this would be:
- Do the scripts for your plugin need to load sitewide? If not, then they shouldn’t.
- How big are the files that you are loading on the front-end of people’s sites? Page weight matters, pure and simple. For example, our Novashare social sharing plugin is under 5 KB!
- Are you including third-party libraries? If so, can you do it in a different way? Perhaps inlining the code if it’s small.
- Are you using custom tables or just throwing all the data into the
- Are you making DNS requests to third-party sites? Remember, the performance of your plugin will vary once you do this due to the response times of queries to external sites.
This is just a friendly reminder to think through ways to make your plugins fast and lightweight. This will literally help speed up the internet, improve the quality of products in the WordPress community, and your customers will appreciate it.
10. Launch with an affiliate program
One of the smartest things you can do is launch with an affiliate program, this will make spreading the word much easier. When we launched our first plugin, we didn’t have one and realized we needed to get one up ASAP. When you are doing outreach and promoting your plugin, it is much easier if you can mention that you have an affiliate program. We decided to rely again on Pippin and went with his AffiliateWP plugin.
Again Pippin came through for the win. We had the affiliate program literally installed, configured, and up and running in 5 minutes. It has an integration with EDD, and they just work together flawlessly. We now have active affiliates and the data on the back-end that it provides is awesome.
There is also a new affiliate plugin on the block you might want to check out. It’s called SliceWP. The pricing is more competitive than AffiliateWP and the UI is pretty slick!
11. Be prepared to hustle
Even though you have an affiliate program up and running, be prepared just like with any other product or service to hustle with the marketing. Don’t expect people to just come out of nowhere when you launch your plugin, I don’t care how good it is. Since all of our plugins are premium, we aren’t listed on the WordPress repository, which means we have to drive visitors to our plugin ourselves.
How do you drive traffic to your WordPress plugins? Well, what do you think I’m doing right now. 😉 And I’m not going to sugar coat this for you, it’s a lot of hard work. So be prepared to grind, grind, grind.
12. Leverage your contacts
Thankfully working in the WordPress community for quite a while I have made a lot of good contacts. Leverage the crap out of your contacts! And don’t forget about your newsletter list if you have one already. Tell your friends, tell everyone you know that works in your industry. Word of mouth is still by far one of the best ways to grow a plugin. If you have a quality plugin, people will share it with others; it’s as simple as that.
13. Get ready for feedback
Get ready for the feedback to come in. There will always be things you didn’t think of. We have a public feature request page on all of our plugin sites because people are constantly giving us feedback. There are both pros and cons to this.
If you got with a public page, I recommend splitting it up into sections. Here is how we structured ours:
- Pending (under discussion)
- Not possible
- Not planning to implement
Be careful though when it comes to giving an exact ETA. This is almost always a bad idea. Brent has a great summary of the reasons you shouldn’t give ETAs. With our own plugins, we always say something is on our radar or is being discussed. This gives us flexibility when things change, which in 99% of cases, they almost always do.
14. Give customers good documentation and changelogs
With our first plugin, we made the mistake of not having all of our help docs written when we launched it. This resulted in a few more emails that we didn’t anticipate and could have easily avoided. So write docs, write docs, and write more docs! People aren’t stupid, if you give them the info, they will find it and use it.
Just think about it, do you open a ticket when you try to solve something? Or do you try to fix it yourself first?
This becomes even more important when you have multiple plugins. Spend time writing up docs for everything. Trust me; it will save you a ton of time in the long run! Even if it’s just helping people in emails by linking to it. Screenshots, steps, etc. all help close your tickets faster.
- We have 77 docs for our Perfmatters plugin.
- We have 47 docs for our Novashare plugin.
- We have 39 docs for our WP Coupons plugin.
I love writing technical documentation, so I actually enjoy this part. But I know a lot of you won’t. But take the time to do it anyways.
If you’re curious, we use the Heroic Knowledge Base plugin from the team over at HeroThemes on all of our sites. We’ve had it for years and it always works, plain and simple. I’ve also had the pleasure of meeting Chris and Richard (the developers/founders) in person, ☕ and you can tell they are truly passionate about the products they build, along with the WordPress community.
Also, give people a changelog, please! This is a pet peeve of mine. We have links to this in our knowledge base, our plugin, and even the footer of our website. We are OCD about our changelog and make sure it is updated whenever we release new updates.
The other thing we mentioned earlier also comes into play, and that is, you’re going to get feedback. But don’t say yes to everything. Take some time and determine if the request adds value to your plugin, how long it might take to develop, etc. With multiple plugins, the word “NO” becomes very important.
But feel free to take advantage of each situation. Below is an example of how I treated one recent feedback request. The customer wanted to move the CSS into the footer on our WP Coupons plugin. Generally, CSS is put into the header; otherwise, you’ll run into flashes of unstyled content. However, instead of just saying “NO,” we decided to turn it into a tutorial on our site. This helps with SEO, still makes the customer happy, but doesn’t compromise what we don’t want in the plugin.
15. Refund policy is tricky business
A refund policy is a tricky business when it comes to selling WordPress plugins and themes. Why? Because someone can buy your plugin, request a refund, and then they still have your files. They just won’t get support or updates without the license key. I’ve discovered there is a lot of abuse in the WordPress community (don’t even get me started on those GPL clubs 😠), and therefore we ended up changing our refund policy. A lot of ours is inspired by EDD’s own refund policy.
We firmly believe in and stand behind our plugin 100%, but we understand that it cannot work perfectly for everyone all of the time. If you are unhappy with your purchase, or you have an issue that we are unable to resolve that makes the system unusable, we will be happy to consider offering a refund. Refunds will be offered at our sole discretion and must meet all of the following conditions:
To submit a refund request, please contact us.
- You are within the first 30 days of the purchase of the plugin. After 30 days no refunds can be processed.
- Your issue(s) comes from not being able to install the plugin properly or get the plugin to perform its basic functions.
- You have attempted to resolve your issue(s) with our support team.
- Issues caused by 3rd party plugins, themes, or other software will not provide grounds for a refund.
- Refunds do not apply to product upgrades or annual renewals.
While this is slightly harsher than some other refund policies, it keeps away the bad customers. If you stand behind your plugin as a developer, don’t be afraid to firm with your refund policy. Many of us spend many late nights building our plugins, so don’t let people take advantage of you.
16. Wait to update WordPress plugins
While we love Easy Digital Downloads, even they aren’t perfect. And that’s why I recommend waiting to update your WordPress plugins, even if it’s just a week or so. Why? Because shit breaks. And if you’re as busy as I am, you need to find ways to save as much time as possible. I’m all for helping other developers test bugs, but not when I have to stay up all night.
Here is an example. EDD pushed out an update on December 20th, 2017, which caused PayPal recurring payments to start failing (being marked as incomplete). I updated our extension on the 25th of December (Christmas), and orders started failing immediately across both our EDD sites.
That day I had to check PayPal payments and manually mark them complete in EDD. I chalked it up to perhaps PayPal IPN service having issues, but the next day I realized it was due to an EDD update (and a pretty bad one in fact, as it broke all PayPal payments).
But the above is a great example of why I wait. Otherwise, I would have had six whole days of customers having issues, me trying to debug what was causing the failure, etc.
17. Think outside the box
The final thing I recommend people doing is to think outside the box when it comes to generating sales. The WordPress marketplace is crowded beyond belief, so every little extra thing you can do to stay ahead helps.
Back in 2017, I discovered Jilt, which is a service that will allow you to automatically recover abandoned ecommerce orders. You’d be surprised how many of your customers just stop, drop, and roll. Once you set it up, you literally never have to touch it again! And you’ll instantly start seeing more profit.
How well does it work? Take a look for yourself. This is a screenshot straight from my Jilt dashboard on our Perfmatters site after the first 30 days of running it. And as you can see, it is running at a 42.9% recovery rate! But wait, the best part is, at this volume, I don’t have to pay Jilt a dime! 👍 That’s right, no fees and I’m in the free tier.
So basically, right now, Jilt is essentially giving me free money! Unless your Bill Gates, I’m pretty sure you’d take some free money. Now of course, once you get into higher sales volumes, you’ll need to pay a little, but their pricing is incredibly fair. You also won’t pay anything for low volume. So it’s perfect for those just starting out.
Check out more in our in-depth Jilt review. I highly recommend all EDD and WooCommerce shops to start running this right away!
Hopefully, you found something insightful in what we’ve learned over the past couple of years. There is a lot more than you might think that goes on behind the scenes. I have so much more respect for developers than I did a couple of years ago. It’s not easy.
For WordPress developers to succeed, you don’t just need to be able to write code. You need to know how to market, keep customers happy, troubleshoot new problems, come up with creative solutions, and constantly innovate to stay ahead.
If you’re a developer or someone who is thinking about selling a plugin or theme, I would love to hear your thoughts. Feel free to drop your comments below. 👇