Developing Successful OpenCart Extensions
This is a list of some of the many things I wish I had known when I started developing and designing OpenCart extensions. I assume that you have an idea for a problem to solve by creating an extension or a theme, or even better, you have an existing product.
1. Change Less
Change less of OpenCart’s core files. Add less code. Actually never edit the core files directly. Use vQmod to patch them in real-time.
When you add code consider separating it in an outside file to be included or create a new class instead of dropping all of your source in the already existing controller or template. This will save you hours of troubleshooting compatibility issues with customers of your extension.
- Less code needs less support
- Less code debt
- Easier support — you have fewer places to look at when something messes up
- Reduced dependencies — the lesser code you have the faster you can react when a new version of OpenCart is out. Also the higher the chance is for you not to have to change a thing on new OpenCart Release.
2. Add Less
Bloating your product with every feature that a customer suggested is not going to make it better.
Most people need the basic functionality. Focus on what makes your product unique. Be the best on the basic level instead of having 10 exotic features and none of them good enough.
As the guys from 37Signals say: “Build half a product, not a half-assed product”.
- Faster and simpler project to support and develop which in turn brings happiness to its developer.
3. Everything is Marketing
From the comments on your page to the way you designed your landing page, the text describing your extension on the OpenCart extensions page, the images you use, your price, the comments in your code, your documentation.
People do judge the book by its cover. You may never have the chance to make a second impression. Through marketing you can impute to your customers how valuable your product really is. Explain how they can make use of it, focusing on the benefits they will get instead of the features your product has.
Being aware of the messages you send to your potential customers you can start to adjust them and track how this affects your conversion rate, aiming to increase of sales eventually.
Marketing can “make or break” your product. It is half of the work of creating a commercial product. Everything you do tells your customers something about the way you do business. This can attract or repel people. It all depends on you. Don’t neglect this part.
This could be a whole article on its own. There are so many aspects of the marketing and promotion of a product that can be covered. So far I would limit myself only to list some of them:
- Landing page
- Product description
- Product tour/demo
- The way you respond to support requests
4. Create a Support Forum
Creating a centralized place for support has many benefits both for you and your customers.
- It is searchable and users can help each other.
- It brings a sense of community, a place where users put their trust. Your behavior here will determine a big part of the image your customers have of you.
- You can easily get someone (from your team or a friend) to help you. Email is cumbersome if multiple people need to manage one inbox.
- You bring traffic to your site where you can promote your other products
5. Use vQmod
If you really need to patch some of the core files it is imperative that you use vQmod, but again, patch less and only the unique segments of code(hooks) so that you reduce the change of possible interference. From my experience the average OC user has 5-7 vQmod based extensions. Again apply the principle of less here: the less code you have to maintain the better.
- Quickly disable and enable part of your extension or the whole
- Acts as a centralized place to keep your modifications
6. Use a Versioning Tool: svn/git/mercurial
Your project is growing. You need to be able to capture that growth in a system that lets you track the changes(useful for release notes) keep your source files safe from loosing any changes and ease the integration.
- Acts as a back-up for your project code
- Easier to track what changed and when
- Allows for easy collaboration on the source code
- Eases the process of preparing a release or patch
7. Have an Online Demo
If a picture is worth more than a thousand words image what a profound effect can showing the real thing to your customers could have. People need to see, touch, feel your product before committing to purchase your it. The higher the price the more convincing you need to be. The online demo is the first place to start.
If customers can test your product and see the benefits it provides they are one step closer to imagining how it may integrate in their existing business, thus one step closer to a purchase.
8. Provide an Admin Panel
If you have any variable that influence the behavior of your extension you need an admin panel. The admin panel is the place where you can let your users set the parameters of your extension. Also it would be a good thing to have some options for testing your extension and temporarily disabling it.
Avoid sending users to fiddle with files through FTP—it takes longer for the not so experienced (and most of shop owners are not experienced yet big part of them buy themes and extensions).
Keep it simple. Give control in the hands of the users and they will be happy. You can never know all the ways people plan to use your product. Do you want to have to support everything that deviates from the way you thought of your product?
Tha admin panel is another kind of marketing tool, too. Why? You can show your skills there by designing a usable interface that is straight to the point, gets the job done and displays your logo thus ensuring brand presence. More than everything focus on the experience. Think like your user. Count the number of steps they needs to do in order to achieve the goal. Think how can you reduce that.
- The admin panel will greatly reduce the questions about customization of your extension/theme
- Integrating a help panel in the interface will save you more questions on the forum or support e-mails later
9. Respond Quickly
Everybody hates to wait, right? Don’t let your customers/yet to be customers associate the negatives of waiting with you. This doesn’t mean that you need to be online 24/7 or respond to email 25 times a day. Leave that for a support person if you have a dedicated one, but checking email twice a day in work hours is usually above what an average extension developer will do.
While we are at it, some thoughts on support by email: if you have a forum completely get rid of it. Solving problems publicly (without sharing sensitive data, of course) is better because others can learn from the solution. This way you save time.
Provide solutions in your communication, don’t wait for you troubled customer to lead the conversation. Have a script for support(not canned material) but deviate from it whenever needed. The human touch is also valued higher.
This creates more delight for your customers: having problems solved faster than they had imagined. More value to you.
10. Dealing with Competition
Sooner or later you will face some competition. The usual reaction of people will be to start constantly spying on “their rivals” and react. Reacting to what your competitors do sets you back. You start to follow their actions. Lead instead. Innovate, optimize and provide value the way you would do if you wanted to create the best product.
You can have less features than your competitor and yet have people like you. It is all in the value that you provide to the people. Think of ways you can increase that(try to stay away from adding features that your competitor has).
Focus on competition too much and you end up diluting your own vision. (37Signals’ book Rework)
Teach your customers how to use, customize and troubleshoot your product through a series of short tutorials. It’s highly unlikely your competitors have though of this.
Highlight the things your product does best. Explain the benefits people will get by using your product and don’t focus on features. Show people how good is your product actually. Differentiate yourself by taking a clear position on some issues which will further set you apart from your competitors.
Create better service
Provide better support, be kind and people will start to notice it. It shows in the comments. Everybody likes to be treated good. Be nice to people and the word of mouth will spread fast.
11. Exceed Expectations
Provide more than expected and people will be delighted. As a result they will buy your products. Delight associated with your product/brand will increase the perceived value of your work. Some ways to create delight in users:
- Have small hidden features that are not advertised in your marketing materials but can be noticed
- Make everything possible to reduce the time people spend configuring/fiddling with your extension yet give them the ability to do so
- Provide bonus products or features that no one else does that are of particular use by your customers
- Provide better documentation
- Provide tutorials (your competitors are usually too lazy to do that)
What about you? What is essential to extension/product development in your process and you feel was left out of this list? Share it in the comments below.