Over three years ago, I left a full-time job and decided to do Joomla development full-time, starting SourceCoast with a business partner. At first, we started doing custom client work: Joomla installations, site setups, content insertion, site structure, etc. However, early on, we realized that we enjoyed the extension creation and support portion more than the client back-and-forth. What we didn’t know was the best way to start turning extension development into a business.
In 2008 and 2009, we went to multiple Joomla-related events and attended every session we could on how to create a business around Joomla extensions. While all the sessions were great, they all focused most on the GPL aspect of Joomla, what its requirements were, and ways you could go about ‘selling’ your services. However, each discussion stopped right where the actual business setup, structure, how to manage extensions and users, and everything else I wanted to know should have been.
So, this chapter is our attempt to contribute back what we’ve learned initially by observing other developers and, eventually, by trial and error on our own. Hopefully, it will provide a general overview of the day-to-day tasks that we go through in the development, support, promotion, and continuing operations of SourceCoast.
The 4 Major Roles of An Extension Business
At SourceCoast, there are 4 major areas that we focus on: Product, Support, Business Model/Pricing, and Promotion. This excludes some of the more mundane things, such as bookkeeping and accounting, but as we progressively manage to get each of those 4 areas executing better, our business has thrived.
The most important thing when running an extension business is obviously having a good product. There are many ways to come up with ideas for extensions, but there are no guarantees that it will gain the traction needed to turn it into a full-blown business.
For us, our main product, JFBConnect (a Facebook integration tool for Joomla) was originally proposed by a client of ours. They wanted to add a Facebook Login button to their site to make logging in simpler for their users. We started development on the extension right away, and by the time we had the initial prototype, the client decided to go in a different direction. In an effort to make a little money back from our time investment, and because we thought it was a great idea in a non-filled market, we decided to start selling it. The extension was basic, but was a great starting point.
When starting out, first and foremost, you need to start small. Yes, it'd be great if you could make the 'next' shopping cart that handles all currencies, all shipping, and a slew of other things. However, it's unreasonable to assume you can do this when: you're still small, you're not making any money off of the new product yet, and you're not getting feedback yet from your users. If you shoot too big to start, you'll end up hurting yourself in the long run, if you even make it that far. You need early adopters that want a lower price and less features, so that you can go on to add more features, bug-squash, get more customers and eventually, even raise prices.
Once you have an extension that you think has a market and is worth selling, the next, and possibly most difficult thing for developers, is actually starting a business around it. Pricing is the first step in this process, and there are a ton of different ideas on how to price something the best:
- Free "Community" version with paid support
- Free "Community" version with a supported 'pro' version
- Paid version only, with support
In all cases above, the paid version is on some 'subscription' period basis. Once you plan to include support for a payment, you must set a time limit on the duration. After that period is over, since the extension is GPL, the user is free to continue using it. However, if they want support or need an upgrade (if not available as a free version), they'll need to re-subscribe. A duration based on a time period, a version number, or something similar is critical or else you could end up supporting some users forever. A 'lifetime' subscription sounds like a great selling point, but it will burn you in the long run.
At SourceCoast, we have a simple philosophy for our commercial extensions: We don't offer 'community', or free, versions. For us, offering a free version of your extension devalues the overall experience, and it causes a lot more problems than (ideally) it would solve. What we've seen and heard from other developers we've spoken with is that when they have a free version, it generally causes the following issues:
- 'xyz' is a necessity! - Users have their own ideas of what should be in the free and pro versions. If you dictate something is pro-only, some users will be very upset that such a feature isn't included in their version.
- Users don't read the feature list first - If it's free, they'd rather just install and try it before understanding the features and limitations. This is a poor overall experience for the users, doesn't give your extension a fair shot, and may end up hurting you in reviews.
- Extra time costs - If you have a free and pro version, you're increasing your effort by developing, packaging, and testing both versions. That time could be better spent on one better version.
- It's harder to sell the upgrade - When users are going from free with 50 features, it's harder to sell them the extra 25 features. When they're paying for all 75 features, they feel like they're getting more (for the same price!)
- Free can give the wrong experience - If users run into issues with the free version, but there's no support, how can they trust that paying will solve their issue?
While there are some huge extensions out there that offer free versions, it's simply not how we could operate on our budget and on a team of only 2 developers. That's not to say our way is right for everyone, it's just what works for us.
Now that you've decided on a model for your extensions, you actually need to determine the price. Again, from our experience, and contrary to what you might expect, there's one equation that we firmly believe in when it comes to pricing:
It may sound crazy at first, but ideally, you can get the same amount of total money, from less users. While you may think you want tons of users, think of the benefits that you, and your customers, would gain from a higher price and less users:
- Lower overall support - For a small team, this gives you more time to focus on those users that need support. The support section details this more, but support will be *the* most critical aspect of your business.
- More time to develop - Less support allows for more time for other things: documentation and development.
- Users think before they buy! - Again, if your extension is free or promises the world for $5, users will buy without hesitation. If an user's experience isn't great, regardless of the price, they won't be happy.
- Paying customers understand value - If you've ever read some reviews on the JED, they're wildly inconsistent. Some users bash free extensions. Others lump praise on overpriced extensions that underdeliver. When you price it correctly, you at least get the users that understand that free isn't always better. Those are the users you want. They'll understand that a bug-fix may take 2 days or that conflicts occur. Unreasonable users are not good customers. Unreasonable users a lot of the time only use free (or the cheapest) extensions. Let them use something else.
Of course, higher price doesn't mean an exorbitant price. Every market is different. Look at your competitors. Look at their features. Look at their price. When we started with JFBConnect, it was $15 for a minimal set of features. That was a 'high' price in a non-existent market at the time and for an extension that didn't do much, in all honesty. As features were added, we steadily increased the price from $15 to $20, $30, and are now at $50 for a 6-month subscription.
When we first started out, we had the same feeling we hear from so many other developers: It's GPL, you can't give refunds or users will steal your stuff! Because of this, we, like many other extension clubs, had a strict no-refund policy. It made sense. It's GPL software. There are no license checks. There is no way to return the extension if an user gets a refund. How could we possibly allow for refunds? There are 2 great answers: Chargebacks and customer trust.
Chargebacks are the bane of any digital seller. When users purchase a product through PayPal (or any other merchant), if they dispute those charges, you are responsible for proving you shipped the product or delivered something to them. Download logs and IP addresses almost never work as proof, and a no-return policy doesn't either, so what do you do? Nothing. And what happens? The merchant decides against you, refunds the money to the user and also hits you with a $20-$60 chargeback fee. This is a fee from the credit card companies for doing a dispute against the vendor.
Without a refund policy, this is the course of unhappy users. It not only nullifies their sale and leaves you with an unhappy customer, it ends up costing you extra money!
Users want to be assured that you have faith in your product and are willing to offer a refund if it doesn't fit their needs. Having a refund policy breaks down just about all barries to the sale and builds that customer trust.
Our Results of a 30-Day Refund Policy
At the end of August 2010, we increased our rates by 60%, going from $30 to $50 on a 6-month subscription and $50 to $85 on a 1-year. At the same time, we instituted a 30-day money back guarantee. At that point, dollar volume of sales had been increasing about 20% per month. In September, sales were up by 13%, and in the following months, they returned to a 15-25% monthly increase on average. The overall picture was that a 60% increase in pricing did not have a substantial impact on income. Additionally, it directly led to less customers, which from a support and development standpoint, was a great win for us.
It's impossible to say that our refund policy was the main reason that the pricing increase didn't affect our overall revenue. Since then, however, SourceCoast has seen only one chargeback in the last year, whereas we would have received one or two a month previously, saving us about $20-50 in fees. Refunds have consistently stayed below 5% of sales, and generally are under 1% of total subscriptions every month. Even with those refunds, we've ensured that anyone who tries to use our extension is happy, which is great for good-will and publicity. If an user is unhappy, you want to ease him so he doesn't complain publicly about the extension or your business. Let him simply request a refund and go on his way.
Far and away the most critical aspect of an extension is the support you provide for it. Even if your extension has all the bells and whistles possible, and even if it's extremely simple to use, users will run into issues. Server configurations, Joomla settings, extension conflicts, you name it. Not all will be your extension's fault directly, but most users won't know that, won't understand it when you tell them, and most of all, won't care. They paid for your product - they, rightfully, will expect you to help resolve the problem however you can. It can't be overstated that your customers overall happiness will come from the support they receive. Without happy customers, you will receive poor reviews and lose out on essential word-of-mouth promotion, thus hurting your overall business.
There are multiple facets of support, and providing great support doesn't mean you have to be strapped to your computer all day answering questions (though you will need to be at times). To do support correctly, you need to be prepared for your users support needs beforehand, through documentation, and also at the time of need through "tech support".
Very few, if any, people like writing documentation. When done right, having great documentation will make your users happier and save you an immense amount of time. Documentation is all-encompassing. Your extension itself should have clear descriptions of parameters and what each setting will do. There should be installation and configuration guides for every feature of your extension that users can skim through. There needs to be common support questions answering issues that you hear commonly from your users (server, configuration, conflict, styling, etc), or anticipated questions for a new release. Depending on your extension, there could possibly be 'advanced' guides for using some of the function calls or information on how to extend some of the functionality.
Above all, remember that documentation is an ongoing process. With each release, you should evaluate what information you have available and revise it where necessary.
Will your users read your documentation? For installation and configuration, probably. For support, probably not. When they come with questions, you need to be ready.
SourceCoast uses a forum-based technical support area, because it allows users to try to find their own answers. If you use a ticket-based system, questions and answers are hidden, which results in many repeated questions. Forums aren't perfect, and your method of tech support will depend on your needs.
Once you start getting tech support questions, the process should be simple. If your documentation is perfect, you'll be able to simply point them to their answer, instead of repeating the same answer for each user. If the answer isn't readily available, figure out the solution helps that user. Then, determine if this is a question that may be asked again or has been asked before, and if so, document it for later reference.
If you've already written a detailed response, and it's fresh in your mind, that's the time to document it!
Once you have an extension available, you need to get the word out about it. This can always be a daunting process, and there's no perfect way to do it. The main point of promotion isn't necessarily to make a sale immediately. It's to make sure your brand is known and that when an user needs to purchase from you, they already feel familiar with your company or brand. Promotion is a long term endeavor, and like everything else, needs to be refined with time. The following are just a few critical, yet free, ways to promote your products.
Joomla Extension Directory
This is the most obvious, but can't be overstated. Being listed here doesn't guarantee success. However, without a JED listing, potential users will question why you're not listed, and may find other competitors that are. In addition, the reviews received here are moderated and a great way for prospective users to get an unbiased opinion before their purchase.
Use a blog to post about new updates, what you're working on, sites that started using your extension, or just about anything related to your products. Some users will subscribe to your feed to stay up-to-date. More importantly, you can submit your blog to Joomla content aggregators like Joomla Connect (http://connect.joomla.org) and Joomla Reader (http://joomlareader.com). Each blog post can reach thousands of users, and each one of them is a potential customer!
Hard Work and Discipline Pays Off
It's extremely generic to say, but hard work, dedication to your users, and constantly refining your process is the key to success. While everything above has worked for us, it's taken us years to get to this point. It's also possible that different choices along the way could have worked out better. Use the above as a guide for your own business, but don't feel it's etched in stone.