Free WordPress Plugin with In-App Purchase

This is the first post of the series Developing and Maintaining Premium WordPress Products. Here I cover why you should provide a free version of your WordPress plugin or theme and how you can utilize it to increase your sales. Additionally, I share with you which mechanism we use at Codeneric to distinguish between customer groups, such as premium and free customers and how we sell our products. Let’s start with the less technical part and explore why it makes sense to provide a free version of your WordPress product. ## Increase your Product Quality & Sales As the title suggests, its all about increasing your product quality and of course your sales. But how can a free version help to achieve this goals? Obviously, a free product will generally attract a broader audience than a paid product. Thus, you’ll have more people who use your product and provide feature requests and more importantly bug reports. It is basically a low cost option to get this precious information. The average user will try your product and if it does not work out of the box, she will just uninstall it and search for another solution. Based on our experience I can say that the amount of people who take the time to report a bug is quite small. Therefore, you need a large user base to have at least a few of these engaged people. Okay, the first takeaway here is:

A larger user base yields more feedback which increases product quality which contributes to increased sales

However, there is a more dominant factor which needs to be adjusted to boost your sales: marketing. For me, a backend-developer, marketing was one of the most annoying tasks which needed to be tackled. I would rather think about well-defined mathematical problems than dealing with ambiguous human minds. The good thing is, that we can wrap the problem of marketing in a more or less well-defined problem. The ultimate goal of marketing is to convince many people to buy your stuff. Therefore, we need to get the attention of a lot of people. Let’s take a look at companies which are actually good at marketing, Google for example. Let’s see if we can learn something from Google and utilize it. Besides being the friendly search engine, Google also is a giant online advertising service. They handle an enormous amount of overhead to be able to display relevant advertisements to users who browse the web. So, what are relevant advertisements? Basically, an advertisement for product X is relevant to you if your are currently interested in product X. And this is what Google can estimate by tracking the behavior of individuals. So far so good, but how does this help us? It’s simple, we have a moderate user base of our free product version and obviously every single one is interested in our product. Thus, they are the perfect audience for our advertisement. But keep in mind that every normal human being hates advertisements and we don’t want to upset our customers with our shitty ads. In fact, we only want to show our advertisement at the exact right moment, not too soon and not too late.

Having said that, I will share with you which feature we identified as the most important one of our free WP plugins:

Let your free WP Product look like the premium version.

Display every premium button, checkbox and feature, but don’t make the actual premium features functional. Instead, replace their functionality with an offer which pops up when clicked. This way your customers will see your offer when they need it. It is also a good idea to mark the premium features in the free version, such that your customers don’t get too surprised when your advert pops up. Below you can see how this looks for our WP plugin Photography Management.

How our in-app advert looks like

If you are curious about the workflow we apply for building a free and premium WP plugin with these properties, then check out our next post How To Implement Premium Features in WordPress Products while keeping it DRY (coming soon). In the next section we are going to check out what needs to be done to make an in-app upgrade/purchase possible.

In-App Premium Upgrade

Obviously, it is always a good idea to make the purchase process for your customer as easy as possible. Hence, an in-app upgrade mechanism (i.e. from within your free product) will increase your sales. To be able to upsell your WP premium plugin/theme in-app, we need a mechanism to distinguish premium from free customers. This mechanism becomes quite important when your customers want to update their premium plugin. You also do not want to show your upgrade advert to customers who already have the premium status. Since the free plugin is hosted on, we have to comply with the WordPress Plugin Guidelines. Read them carefully, if your free plugin does not fulfill every requirement it will be taken down. As stated in the guidelines, we are not allowed to send any (unapproved) request to our servers. Luckily, we do not need to. We just generate a cryptographically secure uuid which we store in the WP database:

$uuid = get_option('company-name/plugin-name/uuid');
if($uuid === false){
    $uuid = uuid();
    update_option('company-name/plugin-name/uuid', $uuid);

This way we have assigned an unique ID to every user, regardless of her status (free or premium). So, why do we need this ID if we cannot send it back to our server? Actually, we don’t need to know every ID, it becomes only important when the customer decides to buy our premium product. As soon as our advert pops up (after clicking on a premium feature), we let the customer fill the purchase form, which looks as follows:

How our in-app advert looks like

Note that we did not send any requests to our server. After the customer has provided all necessary information (as few as possible to not be a hurdle) we display a link which redirects the customer to our checkout page. This way the customer is aware of sharing the provided information with us, otherwise she would not have filled the form in the first place; so the WP plugin guidelines are complied. The checkout page receives all the provided information including the ID. As soon as the purchase has finished we will get a notification from our payment processor service (e.g. PayPal). Now we can store this ID on our server and label it with the premium status. The remaining information can be used to generate an invoice. We need the ID and our label to identify premium customers to make the premium product available to them. Therefore, we generate a download link for the premium product: `

If the user clicks on this link she basically sends a GET request to our server with a query property ID. We extract this value and look it up in our database, if we labeled this ID with the premium status then we provide the download. Otherwise we dismiss it. That’s it, this is a fully automatic in-app purchase mechanism, compatible with the WP plugin guidelines which does not force your customer to register. If you find this interesting then you might be also interested in how to implement a painless update mechanism for your premium WP products. This will be covered in the third and last post of this series. Want to use our production ready system? Let us talk about it!

Contact Us

We're not around right now. But you can send us an email and we'll get back to you, asap.

Not readable? Change text. captcha txt

Start typing and press Enter to search