18 things we’ve learned from building and selling WordPress plugins (good and bad)

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.

  1. Do market research
  2. Pick a solid ecommerce and distribution platform
  3. Running ecommerce on WordPress is expensive
  4. Recurring payments are a must
  5. The PayPal IPN is frustrating
  6. Working with Stripe is so easy
  7. VAT can be confusing
  8. Leave more time for testing than you think
  9. Performance-driven development
  10. Launch with an affiliate program
  11. Be prepared to hustle
  12. Leverage your contacts
  13. Get ready for feedback
  14. Give customers good documentation and changelogs
  15. Refund policy is tricky business
  16. Use a confirmation email for tickets
  17. Wait to update WordPress plugins
  18. 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:

WordPress plugin sales distribution
WordPress plugin sales distribution

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.

easy digital downloads
Easy Digital Downloads

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!

Easy Digital Downloads speed test
Easy Digital Downloads speed test

It’s also important to note that when we launched our first plugin in 2016, other platforms like Freemius and Appsero really didn’t exist or were just starting to take off.

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
  • 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. 👇

Doc's response
Doc’s response (Image src: imgflip)

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.

However, you might also want to check out SureCart. They’ve been doing some great things in the space. I really like how they have a free plan and also a low-cost monthly model instead of a percentage of sales. They also utilize the same tech stack as Shopify, Stripe, Slack, etc., and offload things like the checkout page. So performance is great!

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.

Passive income
Passive income (Image src: Meme Generator)

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.

If you offer lifetime access to your product or service, you are simply devaluing yourself and your brand. 📉Click to Post

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.

Confused (Image src: Make a Meme)

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.

2 EDD stores, one PayPal IPN
2 EDD stores, one PayPal IPN

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?

Offer both Stripe and PayPal
Offer both Stripe and PayPal

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, such as:

  • 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.

EDD VAT plugin
EDD VAT plugin

Check out my in-depth walkthrough on how to pay VAT with WordPress and EDD.

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.

time plugin development
Time (Image src: memegenerator)

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.
  • Do you really need that jQuery dependency, or can it be done in the same way with JavaScript?
  • 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 wp_options table?
  • 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.

EDD affiliate program
EDD affiliate program

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.

marketing hustle
Marketing hustle (Image source: imgflip)

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.

plugin feedback
Plugin feedback (Image src: memegenerator)

If you got with a public page, I recommend splitting it up into sections. Here is how we structured ours:

  • Pending (under discussion)
  • Fixed
  • Added
  • Not possible
  • Not planning to implement

You could also do a public roadmap with something like Trello or Canny, but we prefer to keep it easy and in the WordPress editor. This is also great for SEO.

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 110 docs for our Perfmatters plugin.
  • We have 76 docs for our Novashare plugin.
  • We have 46 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.

WordPress documentation plugin
WordPress documentation plugin

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.

Feedback request
Feedback request

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:

  • 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.

To submit a refund request, please contact us.

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 be 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. Use a confirmation email for tickets

I always recommend adding a confirmation email to your ticket support system, whether it’s a contact form or helpdesk system. People are impatient these days, and it’s important to share your hours of business so they can know when to expect a response.

This is an example of the email confirmation template we use on our sites.

Hello {first name},

Thanks for contacting us. This is an automated email to let you know that we’ve received your message and will get back to you as soon as we can.

We respond to support requests in the order we receive them. Our working hours are 8 am-5 pm MST, Sunday to Thursday, and 8 am-12 pm MST on Friday.

In the meantime, you can find answers to almost any question in our documentation. We’ll be in touch soon!

Brian and Brett
forgemedia LLC – We develop WordPress plugins and craft awesome content.

17. 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).

EDD recurring payments changelog
EDD recurring payments changelog

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.

Another option would be to disable automatic updates in WordPress.

18. Think outside the box

The final thing I recommend people do 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.

Jilt recovered orders
Jilt recovered orders

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.

Free money
Free money (Image src: Giphy)

Check out more in our in-depth Jilt review. I highly recommend all EDD and WooCommerce shops 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. 👇

author bio
Brian Jackson

I craft actionable content and develop performance-driven WordPress plugins. Connect on X, subscribe to my newsletter (once a month), or buy me coffee.

26 thoughts on “18 things we’ve learned from building and selling WordPress plugins (good and bad)”

  1. Hey Brian
    Splendid write up, and a lot of value in this single post.
    Looking forward to reading your upcoming article on “VAT for dummies” …

  2. It is always better to update to the latest release after some days ( when they fix some bugs). I have had a tough time hitting update for a couple of times :D

    I think i had ( i still have) updating syndrome. I get excited when i see new updates.

    Having the proper documentation in place can save tons of your time, especially for a small team like us.
    I loved the idea of using Jilt ( i had the opportunity to share my thoughts with Beka last year) for cart abandonment. But we couldn’t find some of the things we needed. So, we decided to build one for EDD & WC ( releasing next week).

    As always, enjoy reading your excellent content, Brian :)

    • Haha yes, I think we all get a little excited for new updates. But ya, you can save yourself a lot of time and hassle even just waiting a couple of days.

      Cool, tweet me a link when you have it live. Would love to check it out.

      Glad you like the content! :)

  3. Hi Brian, I had a small question. Even if you write a harsh refund policy, what do you do when a customer issues a chargeback from the bank, stating his/her CC was stolen, after the number of days you stated in the refund policy? From what I know, Stripe will take an extra charge when chargebacks happen. How do you handle that? Do you have a legal policy on that? Please share with me if possible.

    (I faced one particular customer in the past, who I know purchased himself as he did take support from us a couple of times after purchasing the plugin. But after about 45 days of purchase, he issued a chargeback stating it was a fraud purchase. We didn’t argue with Stripe, cause we had no idea what legal grounds we hold. So an advice from you would help.)

    • Create a template that you can re-use.
      Do changes in the process and land on a template where you will actually be able to win more and more as time goes.

      Eventually, u will have a process that helps you win.

    • Hey C S,

      In regards to chargebacks, they are going to happen no matter what you do. It’s merely part of selling digital products. And you’ll win some and lose some.

      I agree with Basilis. For these types of things, I have templates in Confluence that I’m continually updating and improving time and time again. After a while, you should be able to tell what works better.

      The banks and Stripe want data and proof to win your disputes. In other words, prove that you did everything you were supposed to as a seller. Such as providing a copy of the customer’s invoice, email log, download/activation log, etc.

      However, I wouldn’t spend too much time worrying about these. Sometimes a person’s credit card will get stolen, and there is nothing you can do to stop the bank from simply siding with the customer. Perfect your process and workflow the best you can and move on.

      Hopefully that helps!

  4. Hi guys,
    I appreciate the info as I am a dev of a plugin I am almost ready to launch. I am in that long testing phase :) Actually, I have it running on 2 of my own sites doing what I designed it to do for me, so I am feeling that it will help others too.

    What is your take on the freemium sales model? You state you only have premium plugins. I am looking at using Freemius, but I am also considering not putting a cut-down version of my plugin on the repo. I just feel like I am giving too much away? So I will rely on seo to drive traffic to my site instead. However, I did listen to one of Brian Hogg’s podcasts and they had the idea of putting a different but related plugin on the free repo, using it to help attract people to the sales site for the $ plugin. Not bait and switch, but more a relationship.

    Also, I found that Justin Tadlock (who wrote one of the plugin books I own) has a service for like $250 to do a code review. Do you think I am crazy to pay for that? I have been coding for decades but never launched a WP plugin as a product before. I just want to avoid embarrassing public train wrecks ;)

    I would value your thoughts on these ideas :)
    PS Heard about his post on WP-Tonic podcast – they did a round-table and your post was one of the topics.

    • Hey Jamie,
      I think it really depends on your time. The beauty of Freemius is they handle a lot of the horrible parts of selling plugins for you. Like affiliate payments, VAT collection and reporting, abandoned cart emails. These are things I all had to take time to set up and maintain.

      With that being said, we also try to save every penny we can in monthly expenses. So I chose to take on some of these hassles myself to save money. I don’t necessarily like the fact that you give up more money if you increase your sales.

      But again, they are solving a huge need, and that’s why a lot of people go down that route. It all comes down to, how much is your time worth?

      In regards to the repo, we chose to stay off of it because we didn’t want to support people for free. This has never made sense to me. It comes back again to how much you value your time. I’d rather spend it helping solve problems for paying customers. We also work on our projects full-time, so we gotta pay the bills.

      With that being said, the repo definitely drives traffic. But if you aren’t in a rush, I’m really glad we went down the premium-only route. We wouldn’t change it. Going premium-only allows you to spend that extra time on development and marketing.

      I think $250 for a code review, especially if it’s your first WordPress plugin being launched, is a no brainer! We learned a lot with our first WordPress plugin, and that is something that would have definitely saved us a lot of time. I would think that $250 would pay for itself really fast. There are a ton of hidden gotchas when it comes to coding WordPress plugins, and even more of a rabbit hole when you are using EDD or WooCommerce, as they each have their own little quirks on top of WordPress core.

      Hopefully that helps and good luck on your launch!

      That’s awesome; I’m going on WP-Tonic podcast again tomorrow. :)

  5. Hey Brian, Great write up! Even though I am not into selling WP plugins but there are a lot of nuggets in your posts that anyone running a business/blog online can take away.

    You’ve done really well with all your plugins – saying that as an early adopter of WpCoupons plugin. And, the info on here is pure gold for people who have been on the edge to release their software products or courses. :)

    I am in the UK and look forward to your “VAT for Dummies” post…

  6. Very Insightful! But would love to more about how you market the plugins. Most developers struggle with that including myself :/

    If you can provide a few special insights about marketing plugins, that would be great!

    Many Thanks

  7. Great post, but there are a couple of points that in our experience are not 100% correct and may make you lose more than you think.

    1) LTD devaluing your work. I’d say that’s true only if you underprice it (appsumo kind of LTDs). We recently introduced our LTD. We priced it considering that our customer average lifespan is 3 years. We charge an amount equal to 5 years of membership and it gave us an excellent return.

    2) We tried all refund policies since 2014 and since we are on a “no questions asked” policy we might be losing a few $, but the ease of mind for us and our customers is priceless. No PayPal or Stripe disputes, no time spent arguing with angry customers. Least but not last, unless you offer a free trial, not giving a 30 days money back guarantee may keep away a lot more than just bad customers.

    Anyway, just my 2 cents, keep up the good work!

    • Hey Paulo,
      Thanks for taking the time to comment.

      Yes, I think if you price it right it could definitely work. Doing it off of the average lifespan, plus adding more wiggle room, I could see working well. Unfortunately I don’t see many developers thinking this through as much as you have. I should change this to don’t use LTD unless you price it accordingly. :)

      Ya the refund policy is definitely tricky and I think it works different based on the type of plugin and business you have. Our stricter refund policy has worked really well for us. Especially in terms of a performance plugin, because some users that are first disappointed are happy once we are able to help them and show actual results. For other plugins that might be serving a single purpose, I could see this being slightly different. A performance plugin, for example, is all over the place in terms of users expectations.

  8. Hello Brian,

    Thanks for your detailed article. We are also on the same track. We just launched our plugins are getting sales. You can see our plugins here https://sevengits.com/plugins/

    I would like to know some more details about how you managed licensing, update servers, etc… Also about how to stop piracy issues.

    • Hey Saran,
      Congrats on launching your plugins, that’s exciting.

      In regards to licensing, we use Easy Digital Downloads for everything. For updating servers, we host all of our sites with Kinsta (https://woorkup.com/kinsta-review/). This ensures we have the latest PHP version, fastest servers, and don’t have to worry about downtime so we can focus on plugin development. I typically do plugin updates once a week or so on a schedule. Some more tips about that here: https://woorkup.com/update-wordpress-plugins/

      In regards to piracy, all of our plugins are licensed under GPL. So there is nothing illegal about someone reselling our plugins. Is it moral or the right thing to do? No. But this means there isn’t much we can do about it. And frankly, it’s a waste of time to try and stop people like this. If users ask, I always tell them this:

      There are a couple of reasons why we don’t recommend using a site like this (GPL clubs, Starter Packs, etc.).

      1. You won’t be eligible for support from us. So if you have problems, we can’t help you.
      2. You might get updates, but they will be 100% reliant on that site and if they choose to grab a new update or not. So your plugin might fall behind the most recent updates. We are regularly adding new features and making improvements.
      3. There is no guarantee they don’t include malware or something malicious in their files. If you upload a plugin that is infected with malware, it could impact your entire site and end up getting you blacklisted in Google.

      Hopefully that helps!

  9. First of all, thanks for writing such a great article.

    Coming to my question: Should I use the 3rd-party plugins for EDD which are available at a cheaper cost and some of them are free too?

    • Hey Aryan,
      I tend to stick mainly with EDD extensions that are available from EDD directly. However, there are some great third-party developers that make extensions, such as Barn2 Media and EDD EU VAT. If you use developers that have a good reputation and solid history of making plugins/extensions then you should be fine.

  10. Hey Brian,

    Thanks for this very insightful post! We only provide free WordPress plugins at this time but who knows, maybe we will sell some in the future :)

    Do you recommend a specific support system? Or do you rely only on emails? (and maybe a private Gihub repo to track bugs).


Leave a Comment