WordPress Careers Masterclass: Selling Your Code (Themes and Plugins)
Are you interested in a career selling your code? Specifically, coding themes and plugins that you can then sell for profit?
Welcome to the second post in this series on how to build a successful career with WordPress. If you followed part one of this series, WordPress Careers Masterclass: How to Forge a Successful Career, you should have some ideas about your own strengths as well as your career goals. And if you didn’t, I strongly recommend doing back and doing so.
In this second post, I’m going to cover one specific type of career you can forge with WordPress – selling your code. If you’re interested in finding out more about writing code for an agency or employer, we’ll be exploring that in the next post in this series about selling your time.
But in this post, I’ll identify some of the options available to you and give you tips on making them work:
- Releasing your code for free
- Finding a gap in the market
- The options for selling your code
- The practicalities – code quality, support, licensing etc.
Missed a tutorial in our WordPress Careers Masterclass series? You can catch up on all six posts here:
- WordPress Careers Masterclass: How to Forge a Successful Career
- WordPress Careers Masterclass: Selling Your Code (Themes and Plugins)
- WordPress Careers Masterclass: Selling a Service (Client Work)
- WordPress Careers Masterclass: Selling Your Time (Employment or Freelancing)
- WordPress Careers Masterclass: Selling a Product (E-Commerce and SaaS)
- WordPress Careers Masterclass: Making it Work (Planning and Learning)
Releasing Code for Free
For many people, the best way to start selling code is by releasing it for free, via the theme or plugin directories. This gives you a chance to test your code and get feedback on it, and experience what it’s like to offer support. Once you’re ready to move on to selling your code for money you might still want to offer a free version via the theme or plugin directories: what’s called the “freemium” model.
Benefits of Sharing Code
Sharing your themes or plugins with other WordPress users may seem odd if you want to make money but it has many benefits:
- It supports the WordPress community—like all WordPress users, you get the platform (and other developers’ code) for free and it’s good to give something back.
- It gives you an opportunity to get feedback on your code. WordPress developers are a supportive bunch and tend to be constructive when pointing out flaws in themes and plugins released via wordpress.org.
- It gives you access to other developers who can help you improve your code—either directly or indirectly.
- It enhances your standing in the WordPress community.
- It can make money as part of a freemium model.
Getting it Right
However, sharing your code isn’t all clear sailing. You need to ensure your code is robust and meets the WordPress standards, and you need to support it and keep it updated. In particular:
- Ensure that you’re using the correct license.
- Your code should be tidy, valid, and bug-free, and work across browsers and platforms.
- You’ll need to provide documentation, at minimum in the form of a readme file (for plugins) but also (for more complex themes and plugins) on your own website.
- When WordPress is updated, you need to ensure that your code still works on multiple installations, and release updates if necessary.
- You may need to provide support for users of your code.
- You should internationalize your code, for users working in different languages.
If you’re releasing code, even if you’re not submitting to the theme or plugin directory, it’s a good idea to use the WordPress guidelines and test your code against them. Then you know your code will be of high quality and meet people’s expectations.
Finding a Gap in the Market
At the time of writing, wordpress.org has 46,990 plugins and 4,135 themes—and counting! As you can imagine, these plugins and themes meet a range of user needs and vary from simple plugins that add a shortcode, for example, to complex plugins with their own APIs, such as BuddyPress. Add to this the huge range of premium themes and plugins sold outside wordpress.org, and you’re looking at a very crowded marketplace.
But this doesn’t mean there isn’t a market for new themes and plugins. New code is released all the time—in response to a new need from users, or a development in WordPress itself, or in the field of web development; the growth in responsive themes is a good example of the latter, and the future will see growth in themes and plugins that make use of the REST API.
So there may be a place for your theme or plugin—but before you start coding, it’s a good idea to confirm that there isn’t already something out there that does the same job just as well (or maybe better):
- Find out what’s going on in the area you’re working in. For example, if your plugin uses an API (something external like geolocation or internal like REST), familiarize yourself with development in that area—both in the WordPress community and outside it. Talk to other developers, find out what they’re doing and what opportunities there are for collaboration, and where work is already being done that makes yours redundant.
- Keep abreast of developments in WordPress itself that affect your theme or plugin. For example, you wouldn’t want to have developed a plugin simplifying plugin and theme updates immediately prior to the release of WordPress 4.6. Keep an eye on the trac site and use that to spot changes to WordPress that suggest a need for a new plugin or theme.
- Talk to potential users. Find out what they need, what they’re currently using and whether it meets those needs. If it isn’t, find out why. Familiarize yourself with the products they’re using and any planned updates that may coincide with what you have got in mind. Know your competition!
- Identify how you can develop code to complement other themes or plugins already available. For example, you may have a great idea for a plugin to enhance BuddyPress or to make use of the WooCommerce API. If your code will support a community plugin like BuddyPress, get involved in the community of developers working with that plugin and find out what they’re doing. Your code isn’t competing—it’s contributing!
- Start small. If you have a great idea for a huge, complex plugin, start by releasing a lean version of it, make sure that it does its job as well as possible, grow your user base, and then build on it over time. By being too ambitious too soon, you run the risk of having nothing at all to release until you’ve done months of development, which may mean giving up before you’ve even started, or someone else beating you to it. Conversely, if your early efforts don’t work or aren’t adopted, you won’t have wasted all that time.
Will Your Code Sell?
Whether you develop free or premium themes and plugins is up to you, but it’s a good idea to start out by developing free code, as it gives you a chance to develop your skills and get to know what’s involved in supporting users and maintaining your code.
Consider the following:
- Is your idea solid enough for people to want to pay for it? If something very similar is already available free, then it’s unlikely anyone will pay for your product.
- Do you have the time to provide support to your users? Users of premium themes and plugins expect prompt support—this isn’t something you can do in your spare time.
- Will you be able to maintain your code so it is compatible with new versions of WordPress as soon as they’re released? If users’ sites are breaking because of your code, they will be much less tolerant if they paid for that code.
- Will your code be released under the GPL license? Some theme vendors use a different license—if you want to stick with GPL, you’ll need to find alternative distribution channels.
- What payment and distribution models will you use? There are a variety of ways to distribute and take payment for your code; these are covered in the next section.
Selling Your Code – The Options
If you’re comfortable with the quality of your code, have tested it out for free or with other users, then you’re ready to develop themes or plugins you can sell. There are a few options available to you when it comes to doing this, each of which has some pros and cons.
The options are:
- Subscription: Users pay a regular subscription fee (normally annually). If the fee is not paid they may lose access to either updates or a plugin’s functionality. WPMU DEV is a good example of this. It gives you a regular income but you may lose some users when renewal time comes around.
- One-off payment: Users pay a one-off fee for lifetime access to the theme or plugin. There’s a guaranteed up-front income but over time you won’t be able to charge as much as you would with a subscription model.
- Affiliate programs: Users are encouraged to promote your theme or plugin and receive an affiliate fee when people buy via a link you provide. An example is the Genesis framework. This has the benefit of getting others to do your marketing for you, but the downside that people don’t always trust affiliate links.
- Paid support and/or installation: The theme or plugin is free, but users who want support or help with installation or customization must pay for it. Examples are the Hybrid theme and the Yoast SEO plugin. This way you can reach a bigger market by offering your code for free, but the proportion of users paying for the extra service will be low so you may not make as much income as you would from selling your code direct.
- Free plugin, premium extensions to enhance it: Your main plugin is free but if users want to get more from it they have to pay for extensions. WooCommerce is an example of this model. It has the benefit of giving you access to a larger market but again, the downside that the proportion of users buying the extensions might be low. You also need to find the balance between features included in the free plugin and those that are paid for: too many free features and you won’t sell extensions; too few and you’ll lose the trust of your users.
- Selling via theme and/or plugin vendors: A third-party theme vendor sells your themes via their site and you get a percentage of the revenue. Vendors include ThemeForest for themes and CodeCanyon for plugins. This saves you having to do any marketing or manage the sales process, but you won’t get all the money people pay for your code.
- Free and “pro” versions (or freemium): A free version is available via wordpress.org, while a paid version offers premium features and extra support. Examples include some of our own plugins including Domain Mapping and WP Smush. Your user base will be higher because of the free version, but again the proportion converting to the premium version will be lower. And you’ll need to find the right balance between the two.
- Price based on number of sites: Users pay for a set number of installations and access is controlled via an API key. Gravity Forms is an example of this. It gets you extra income from large-scale users while not putting off smaller users who can pay less (or nothing), but users may be reluctant to pay extra of they don’t feel they’re getting value for money.
So there are plenty of different models when it comes to deciding how to charge for your code. There are two main things you need to decide:
- Will you sell code direct or via a third party?
- Will you use one of the freemium models or a straightforward premium model?
What’s right for you will depend on your code, your users and your sales and marketing experience. Take time to talk to your potential users and gauge what works for them, and be wary of assuming you’ll sell a lot more than is realistic.
You users will have greater expectations from premium themes and plugins than if they had downloaded your code for free, which you’ll need to take time to meet. It isn’t a case of writing the code, releasing it, and waiting for the dollars to come rolling in!
Whether you’re selling your code or releasing it for free, it must be of high quality.
- Make sure your code follows the WordPress coding standards.
- Validate your code. Use a validation service such as the W3C’s validation site (for HTML) and its CSS validator (for CSS) to ensure that your code validates. In some cases your code may not validate for good reasons (e.g., you’re using HTML5 or CSS3, which aren’t part of the spec yet)—if this is the case, be sure that you understand why the code isn’t validating and fix it so that it won’t cause any problems.
- Debug your code. Use
WP_DEBUGto verify that your code doesn’t throw any errors, including deprecated function notices, PHP errors, warnings, or other notices.
- Browser-test your code. Confirm that your theme or plugin works across the major browsers, and avoid using browser hacks to achieve browser compatibility where possible—it’s far better to write clean code that supports multiple browsers and then add “extras” such as CSS3 goodies that aren’t necessary for effective use of a site running your theme or plugin.
- Test on multiple devices. As more and more users access WordPress sites on mobile devices, your code should work across these. Consider whether your theme should be responsive and ensure that any interactions in your plugin work across devices and don’t break the layout.
- Test in the front end and the admin screens.
- Test your code on multiple WordPress installations, including installations on different server platforms and those running Multisite. Test on installations running other popular plugins such as BuddyPress and some of the big theme frameworks if you can, to ensure there are no incompatibilities. Ask other developers to help you with this so you have as wide a range of testing environments as possible.
It’s a legal requirement to release premium themes and plugins under the GPL license. If you release a free version of your plugin via wordpress.org, the “pro” version that people pay for must also be GPL-compliant.
Protecting Your Work
You might want to provide a way to ensure people can’t use your code without paying first. The most common way to do this is by using an API, activation or license key. This means users can upload your plugin or theme to their WordPress installation using a zip file, but in order to activate it or access updates to it they need to enter the key. An example of a plugin with an API key is Akismet—the key is free for personal users but paid-for for commercial use.
Updates and Maintenance
From time to time you’ll need to release a new version of your theme or plugin, for a variety of reasons, including the following:
- bug fixes
- updates for compatibility
- improvements and enhancements.
When WordPress itself is updated, test whether your code still works, and do this on multiple installations, browsers, and platforms—as you did before releasing the code. Keep an eye on the trac site to anticipate upcoming releases and test your code on an installation running the beta version of an upcoming release—that way, you can identify any problems in advance of the release and prepare a new version that users can update to as soon as possible after the new release.
This compatibility check will also enhance users’ trust in your code when they’re downloading it for the first time—users are less likely to download themes or plugins that aren’t compatible with the version of WordPress they’re running.
If users run into problems with your theme or plugin, they’ll need help. How you provide this can vary, and will depend partly on the distribution model you’re using.
- Direct support via support tickets on your website – which gives users a feeling of getting a personalized service. Our Support System plugin helps you set this up.
- Forums on your website – these have the benefit of letting other users see the solution too.
- The support system used by the third party vendor you’re selling through.
- Paid for support of your plugin or theme is free, as part of a freemium model.
- A mix of forums for users of the free version of your code and one to one support for playing clients.
- The WordPress support forums (only applicable to free versions of your code).
Talk to your users and find out what their expectations are. Look at other plugin and theme vendors who use a similar distribution model, and see what they do. And above all, use a system that is easy for your users to interact with and that notifies you when someone raises a ticket, so you don’t miss anything.
Selling Your Code Can be a Great Career – But It Isn’t Easy
The thought of ditching your day job, abandoning your clients and selling your themes and plugins can be very tempting. For those who’ve made a success of it, it can be lucrative.
But it isn’t as easy as you might think. Once you’ve written and released your code, the work isn’t over. You’ll need to market it, keep it updated, test it regularly and provide support. You won’t be sitting on the beach watching your bank account fill up.
But if you follow the advice above, your career as a theme or plugin vendor will be more successful and you’ll provide something of real value to the WordPress community.