Developing Successful OpenCart Extensions

Written by in Articles on July 15, 2012  |  7 Comments


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.

  • Demonstrates value

    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.

  • Increases sales

    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:

  1. Landing page
  2. Product description
  3. Product tour/demo
  4. Documentation
  5. Pricing
  6. 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.

  • Provide value

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

  • Don’t focus

    Focus on competition too much and you end up diluting your own vision. (37Signals’ book Rework)

  • Out teach

    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.

  • Better marketing

    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.

Tags: ,

About the Author

Rumen Dimitrov is the creator of OpenCart Mobile Framework.

View all posts by

7 Comments on "Developing Successful OpenCart Extensions"

  1. swed May 26, 2014 at 7:49 pm · Reply

    Thanks m8 this article contains some impressive stuff Rumen, and much good thinking. As a matter of fact one could peel away all the programming references and implement your list and recommendations on any business of choice. I really like the down to earth and cool attitude you show throughout this article. All the best and keep it up!

  2. David March 16, 2014 at 4:20 am · Reply

    Wow, really good opencart extension post. I wish I´ve read much before. Its a way with good advices. My question is,… How do you manage to enter inside the opencart developers world, that seems to be a jungle where there is no space for new ideas or people? I dont know if you have this experience, but I´m having it, where seems that ANYTHING IS FAIR TO DO TO THE OTHER :(.

    As summary, great post, ¨Maladiechs!¨

    • Rumen Dimitrov October 12, 2014 at 12:09 pm ·

      David, to answer your question I would say that when you focus on the wrong things: ideas and competitors the OpenCart marketplace will seem a “crowded and unfriendly space”. Actually, every business endevour will seem impossible if you think that the market is “oversaturated” or there is no space for you. There always is more space. And you can find it. I started writing a detailed response but got carried away and it turned into an article where I share how I got started with developing OpenCart extensions:

  3. Kamran Shah January 31, 2014 at 11:40 am · Reply

    wow wow wow great jani, thumbs up

  4. Fortune Consultants January 31, 2014 at 11:39 am · Reply

    Grate information
    im going to implement all the instructions thank you buddy.. ;)

  5. Ogun October 19, 2012 at 10:51 am · Reply

    Great article.

    One more tip for VQMods is not to modify existing lines of code unless you really have to.

    A good example would be SQL queries. If Opencart has just performed an INSERT and you need to populate the extra column that you’ve added to a table, add your new code after the INSERT as an UPDATE instead of replacing or modifying the INSERT.

    The Opencart database class is bare-bones, but it does provide “getLastId” which you can use to get the ID of the record you want to work with.

    Working like this means that other VQMods are far less likely to conflict with your own.

  6. Qahar July 16, 2012 at 1:38 am · Reply

    Thanks for share this, very useful!

    Provide tutorial/ additional snippet to make your extension work seamlessly with most used extensions by users. It helps user decide to buy your extensions.

Leave a Comment

comm comm comm