38
19 Comments

Making $15K/Month By Switching My Freemium Product to Paid
IH+ Subscribers Only

Hello! What's your background, and what are you working on?

Hey there! Alvaro Trigo here. I'm currently working full-time on fullPage.js — a Javascript open-source component that helps developers create full-screen vertical and horizontal sliders. It has been used by companies like Google, eBay, McDonald's, Coca Cola, Nikon, EA, and British Airways, among others. For the past few months I’ve been making an average of $15,000/month (working alone). I’m currently fifth on the list of top Javascript developers in the UK and 84th worldwide according to git-awards.com.

fullPage.js homepage

It started back when I was 16 and created my first website using Microsoft Word. My interest in web technology increased with time and I later graduated with a degree in Computer Science while living in Spain (where I was born), and a few months later I got a job in Cambridge, UK. I spent five years working as the sole full-stack web developer on a small team with eight other developers. I created fullPage.js as a side project in 2013 while I was working there. Three years later after creating fullPage.js, I began charging for extra features; six months after that I quit my full-time job as my earnings began to surpass my salary.

What motivated you to get started with fullPage.js?

It was the desire to learn new things and make something useful for others. I know this sounds very cliché but it is the truth. Making something is nice and all but it's an entirely new level when you see people actually using what you've created. That's where I got my motivation from, and it's the reason I continued to improve my product over three years without charging a single penny. As makers, we want others to value our efforts; this motivates us to keep improving our work. Much like a trainer who pushes you harder and harder until you bring your best.

I came up with the idea for fullPage.js when I had to build a website based on a full-screen slider effect. At that time there weren't any components designed to help developers in this task, so I had to code it all by myself.

I had always wanted to create a jQuery plugin but I didn't have any ideas for what to build. Once I completed the website with the full-screen slider I thought it would be nice to develop my first jQuery plugin around that effect. This would ensure that other developers wouldn't have to repeat the same work if they wanted to create something similar.

I uploaded it to my Github repository and open-sourced it. I sent the Github link and my website out into the world. About a week later I noticed the stars on the Github repository were increasing by hundreds and developers started opening issues. That was the beginning of it all.

What went into building the initial product?

I don't remember exactly how much time it took me to create the first version of the free product, but it was probably a week or two and about 300 lines of code. (Bear in mind that I had experience coding a similar site and therefore had gained some knowledge from that.) At that time I was still working full-time as a web developer so I could only use my free time to dedicate to the project. That’s literally all I needed. There was no need for funding; all I needed was the time to code it.

Something I kept in mind from the very beginning was making it simple to use, something accessible for non-experienced developers. I was tired of seeing open-source projects with poor documentation that assumed a good knowledge of the language. So I started creating a product that was as simple as possible.

I decided not to add certain features that I didn't think were necessary and I documented everything in detail. After some time, customers started to ask for new features that were not originally planned. It was at that point I realized I could charge for that kind of extra work.

After about a year of customizing code for customers, I decided to provide those features as paid extensions. I spent about a month or two thinking about the way I could go for it — the pricing model, the license system, and how to protect the code of those client-side extensions from potential thieves. I also researched different Javascript libraries in the market and took ideas from their pricing models and strategies.

I remember talking a bit with Dave DeSandro who also used to work full-time selling similar products for web developers. He was encouraging and we exchanged a couple of private messages on Twitter. That proved very helpful with my decision: I asked my boss if I could work on my product during my free time and got permission after talking with HR. A few days later I contacted some tax consultants and registered myself as self-employed.

FullPage.js started as a jQuery plugin and later became an independent Javascript component. I’ve expanded it to other frameworks by creating some wrappers for Vue.js, React.js, and Angular. I’m also currently collaborating with another developer to create a WordPress plugin.

How have you attracted users and grown fullPage.js?

After I created the Github project I thought it would be beneficial to share it with others and find out if it was useful for them as well.

So:

  1. I created a landing page to serve as a demo.
  2. I wrote a blog post.
  3. I did a quick search on Google for web developer & designer blogs and a list of web resources and jQuery plugins. Then I sent an email to each of those sites with some information about my product asking them if they were interested in publishing an article about it. I did this from time to time.
  4. I added it to web resources websites like http://www.unheap.com/.
  5. I answered questions at stackoverflow.com and recommended my free product if it was the right solution. (This tactic also helps others find your product when searching for related things without having to directly position the product’s site.)

The ball kept rolling as word spread around the internet and the stars for the Github project kept increasing. Github even featured me as a trending developer along with my product.

But I didn’t stop there. I continue to promote years after the launch. I wrote an article for BindPress, created a couple of Youtube tutorials, and kept up the conversation on StackOverflow and Twitter. I also was interviewed for articles and podcasts and was a guest speaker on remote webinars.

Even today I'll Google my product to see how I can expand my market (or even gain the trust of the people trying to use it). I want to hear about the struggles, provide solutions, and consider potential new opportunities.

I’ve tried using Google Adwords and Facebook ads, but I didn’t get good results. It may be that my product’s SEO is already quite good and people who want to find it usually find it without ads. That is the benefits of having many sites pointing to yours with articles and tutorials.

What's your business model, and how have you grown your revenue?

Initially, I had no intention to commercialize the project since the product was totally free and open-source. After about three years I started to think about commercializing. Once I'd positioned the product as a source for these kind of components in the market, I was able to breathe and relax a bit more as well as attend to requests from people who wanted to enhance the code with some specific features I hadn't included in the free product. Now that I had more time, I offered them the option to pay me for a custom build of the product.

I did this for a while and I began to notice that people were asking for the same features. Manually customizing the product each time took a lot of time, and I had to wait for those customization requests to come in. I'd go back and forth in email, negotiate the price, attach the files, explain how to use it, etc.

I thought that if I could get rid of all these manual tasks making these customizations available on my website, I wouldn't have to do anything. No emails, manual changes, price discussions, no payment issues...

So about a year and a half later, I decided to start charging for the product itself (as well as the customized extensions to the original product) to see how it would do. I opted for a low price of around $11 for a continual license and provided two more package options for Teams and Organizations. Today these sales make up more than 50% of my revenue (on top of the extension's sales).

At the moment I'm benefiting from three different sources:

I use the Gumroad platform for selling the extensions. It internally uses Stripe and Paypal and saves me from having to deal with the EU VAT craziness in addition to other things, such as generating invoices only four times a month instead of one per client.

I also use an affiliate program provided by the WordPress Theme company, which at the moment provides 40% of the earnings sold through my affiliate link.

All of these combined equate to an average of $15,000/month, but it wasn’t always like this.

Month Revenue
Aug. '17 7013
Sept. '17 6143
Oct. '17 5174
Nov. '17 6820
Dec. '17 5207
Jan. '18 6001
Feb. '18 6777
Mar. '18 6055
Apr. '18 7290
May '18 7119
Jun. '18 7634
Jul. '18 12248
Aug. '18 14361
Sept. '18 14289
Oct. '18 12412
Nov. '18 15078
Dec. '18 12415
Jan. '19 15514
Feb. '19 13701
Mar. '19 16084
Apr. '19 14906

In July 2018 I decided to start charging for the product itself, going from a freemium model to a licensed model (still free for GPLv3 though). I almost doubled my income.

My margins are quite big with almost no expenses besides hosting, VPN, tax assistants, newsletter, ads, and social security taxes.

My advice? Start charging from the very beginning; though this does depend on the product. For example, in my case, coming from a world in which most Javascript web components are free, it is not unreasonable to start slow. Earn your place in the market, make yourself a name, and get others to help spread the word about your product. Once you have a good amount of people using your product start charging in some way or another.

In my case, it would have been relatively easy for the competitors to gain market share if I started charging for it starting on day one. It's easier to make a name for yourself and your product when providing something for free. But again, this might be a result of a market in which software is expected to be free for the most part.

Regarding pricing packages, experiment with different names and ways to present them. There’s a lot of psychology and marketing that goes into it. I only scratched the surface when reading this great article on Stripe by @patio11.

fullPage.js pricing page

What are your goals for the future?

In terms of revenue, my goal is to finish out this year at 20K/month. To meet this goal I have a few things in mind that I need to work on:

  • Create new extensions for the product
  • Start selling HTML templates based on the product
  • Building some kind of editor for the product
  • Finding a way to implement recurring payments in order to maintain a more predictable income over time
  • Begin new projects/products (I have a couple in mind and half-baked!)

I’m also collaborating with another guy to create a WordPress Plugin for fullpage.js. I don’t know the Wordpress community very well and I don’t know how will they react to it, but I hope it will be helpful.

I also try to focus on what I consider the "goal of all goals," which is basically keeping up the growth. Sometimes I get too absorbed in my daily work with things like customer support, fixing bugs, dealing with technicalities…and I feel like I'm not really innovating anymore. I’m not building new things or adding any more value to my product. I believe it is important to step back from time to time, take a look at the big picture, and create a roadmap with new goals that will lead not only to a better product but also to a wider market and increase in revenue. This is something Patrick Bet-David talks about in several interesting videos.

On a personal level I would like to keep enjoying the life I’m living now; work is not a burden and I’m free to travel or take off days whenever I want. I don't want to sacrifice my life and free time in order to increase revenue.

What are the biggest challenges you've faced and obstacles you've overcome? If you had to start over, what would you do differently?

Because my product is an open source Javascript component, the biggest problem I had was having to “fight” with developers that believed every client-side product should be free for everyone. Which is why when I started selling the extensions, I had to make it very clear that they would not be open-source.

Client-side code is not 100% bulletproof and I’m sure there are still many people using them illegally with some ugly tricks. We frontend developers are much less protected from piracy when we sell a product, more so than backend developers or service-providers. Companies usually care more about licensing, but solo developers and freelancers don't always. Recently I had to send a DMCA takedown notice to some software marketplace after I found out someone was distributing a product without the appropriate license. I guess it’s true when they say a B2B business model can be easier!

Month Users
Aug. '17 167
Sept. '17 178
Oct. '17 132
Nov. '17 190
Dec. '17 130
Jan. '18 143
Feb. '18 167
Mar. '18 158
Apr. '18 174
May '18 157
Jun. '18 199
Jul. '18 456
Aug. '18 523
Sept. '18 520
Oct. '18 513
Nov. '18 538
Dec. '18 526
Jan. '19 639
Feb. '19 648
Mar. '19 706
Apr. '19 683

The “anti-scroll hijacking” movement is another battle I still have to deal with. Basically, it is the belief that no website should — under any circumstances — “hijack” the expected scrolling behavior and overwrite it with a non-default one, which is basically what my product does. I understand this to some extent, but I strongly believe there are no good or bad technologies but rather good or bad uses of the technology.

Another challenge I faced was when other developers started creating similar components. Some had quite good marketing and a good developer behind them, to the point where I saw some of those projects becoming more popular than mine on Github. But keeping up with the market and trying to survive was a huge motivation. I pushed myself harder and tried to develop new features to differentiate myself from others. Nonstop. I think that's what finally made the difference.

In terms of what opportunities I may have missed, some people would say that I should have started to charge sooner. But I think I did the right thing there. The client-side world is full of free stuff and I had to make a place for it in the market. Charging for my product right away may have slowed its growth and made room for other free solutions to establish a stronger position.

What I regret is not creating a plugin for WordPress from the very beginning because I know there’s a big market there too. I should have learned WordPress skills or even hired someone to do it for me.

Other than that, there are probably many things I missed and will never realize. It is not always easy to notice those things from the inside or in the moment. So far, I’m doing well, and that’s what matters to me. Now I’m trying to focus on the long term.

Have you found anything particularly helpful or advantageous?

I think part of my product's success in the early days was due to the fact that Apple released a site for the iPhone 5C with very similar behavior to the one that my product helped to achieve. I launched it only a few days after Apple launched the iPhone5C. It was a total coincidence since I had been working on fullPage.js even before their launch.

And the fact that my product got quite popular on Github helped establish trust and increased my project's visibility. Blogs and websites started talking about it and made tutorials, and my website became very well positioned in search engines like Google. It was (and is) quite easy to end up on my site when looking for a web component to create full-screen sites. As I said before, I don’t think this would have happened if my product was not totally free and open-source at the beginning.

When I started selling extensions for my product I also decided to create an email list. I knew from experience this was a good way of keeping in contact with customers and letting them know about new features or products.

What's your advice for indie hackers who are just starting out?

A few tips:

  • Build something you enjoy working on.
  • Build something fast and validate the market fast, as suggested in The Lean Startup.
  • Don't waste much time with technicalities. Set a release date and go for it. Leave all the unnecessary stuff behind.
  • Great products can be made with almost zero knowledge of technology. Do not waste time trying to learn everything or attending every conference. That’s just a “nice to have” but not required to build something useful. Pieter Levels will tell you exactly the same. Check out his talk here.
  • If you are planing to go solo, promote your personal brand. Gain followers on Twitter and create content to position yourself as a trusted person.
  • Answer emails and do support by yourself, at least in the beginning. It helps to see potential markets, new opportunities, and where there’s room for improvement.
  • Always be nice to customers. Treat them like your boss. No matter what they do, don’t stop being polite.
  • Think small and set reasonable targets. Build something you can start building by yourself, do not start looking for investors or thinking you should hire 50 people to achieve your idea. Otherwise, you'll be stuck just dreaming about it. Make it happen!

Where can we go to learn more?

You can check all about fullPage.js on the fullpage.js site: https://alvarotrigo.com/fullPage/.

I’m also on Twitter and in case you are interested, you can also check my blog and subscribe to my newsletter to get the latest news about my products, posts, etc.

Any questions about me, my product, or earnings? Feel free to ask me in the comments below!

and
  1. 1

    I remember using your plugin a few years ago, now I'm seeing how much it extended with all the new features and extensions, amazing! Wish you good luck with the project :)

    1. 1

      Awesome to hear!!!
      You were one of those motivating me to work harder on it! Thanks for that!

      And thanks! ;)

  2. 1

    I find it really nerveracking to change pricing schemes. Did you feel the same way when going from freemium to licensed? Were you worried at all that users would backlash, or that MRR would drop? How did you ultimately decide to change pricing albeit those risks and concerns?

    1. 1

      Hello Adrian! Good question!

      To put you in context: I made the change in the major upgrade from version 2 to version 3. A new version in which I re-wrote the whole library and extensions and in which I believe I added more value to the product by removing a jQuery dependency.
      For some time I was thinking about moving away from the MIT license for a while and I thought this was the right time to do it.

      I guess we all are a bit worried when taking decisions like these, but I though leaving it open sourced would help on that matter.
      Whoever is VERY upset about it and still want to use it, they still can illegally.
      And for the rest, I went with a very cheap price (around 11 USD) for the very basic license to see what people's reaction would be.

      In my specific case I believed people would be more willing to pay if the price was not very high. I thought otherwise they could look for alternatives or try to build their own solutions. Of course, this depends on your product's nature and complexity and each case is different.

      Something that also encouraged me to go for it was seeing other libraries doing a similar thing and being able to generate a good enough income or even grow to bigger companies. Such as Flickity, Highcharts, Handsontable, CKEditor etc.

      Having said this, the only way I had to test it was trying it myself. I though "What is the worse thing that can happen? That I have to revert back to freemium? Not a big deal!".

      I haven't change the price since then. I'll probably do at some point, (at least for testing purposes) but I still working on other things and I prefer to go one by one :)

      I would say testing is the only way we have to see if things go well or not. Get enough feedback and react on that.
      It is really true when they say every fall is a learning! It is all a matter of perspective. The good thing here is that falling doesn't physically hurt! :)

  3. 1

    This is really nice & motivating story.

    Well I actually wanted to release a project in codecanyon.net but it got rejected by the review team. (it's a high quality as I can say from my 8 yrs of Web development experience). So was thinking to open source it or sell it myself. Reading this post confirms that I should open source it to get good traction and add premium modules to it.

    1. 1

      Thanks for the comment!

      That's one option :) Or you can even do both, provide it as an open source project and charge for licenses.
      I would encourage you to take a look at other commercial Javascript libraries like Handsontable, ScrollReveal, Flickity, Highcharts, CKEditor, Froala editor, Filepond...

      But surely, if you manage to build an audience and positionate your product well in search engines, your income will be greater if you run away from marketplaces like Envato. Those take a big percentage and prices are so low in there that it kind of forces you to lower your product's price too.

      1. 1

        Hello Alvaro,

        Thank you for your suggestions.

        You're right on the points that they take a big percentage and the price are so low in there, it's because they have an audience/customers always looking for products.

        I'm a bit confused about the licensing (open source & commercial license) you said. If it will be nice if you can help me with it a bit.

        The product I'm developing is a Project management tool (something like basecamp) which is mostly used by freelancers and small teams.

        1. If we open source it, devs can simply clone and use it. What is the use of a commercial license?

        2. Don't you think people can violate license terms & use it for commercial purposes with an open source license, because we don't have a way to track it? or do we have a way to track/protect it?

        What I'm thinking is having the base products as open source & free to use. But there will be some optional premium modules(addons), that way we have clear licensing terms.

        Please let me know your thoughts, sorry for long queries, but need suggestions on it from someone experienced like you.

        Thank you in advance

        1. 1

          Hey Nikhil,

          If we open source it, devs can simply clone and use it. What is the use of a commercial license?

          My perspective on this is that commercial licensing on software that is open source is valuable because of the enterprise support and continued maintenance of the product by its core developer / team. There is a lot of value in the guarantees and implications that come with this.

          At first it seems like "If someone can just get a copy and run it, then...", which is true to an extent, but if anyone is serious about using and re-using the product for business, then placing all of the maintenance burden on themselves by maintaining their own fork or clone is counter-productive, thus the license is valuable.

          Take a look at any number of Apache open source products, and find the corresponding distributor(s) who offer commercial support licensing for example.

        2. 1

          Good questions!
          You are right, as I mentioned in the article, it is not always easy to have an open source project and charge for it.

          There will always be people using it illegally without the proper license. Usually freelances but can also be companies. For example, Burger King is violating the fullPage.js license terms in his Russian website: https://burgerking.ru/bitva
          You'll see the error in the JS console.

          So answering your questions:

          1- Companies usually want to do things the legal way. Specially 1st world companies. You can focus on those as your clients.

          2- I'm not sure about your project, but if it is client side like mine, there's no 100% bulletproof way of tracking or imposing a proper license system.
          In my case, fullPage.js extensions are more protected than the open source code. They require a different license key per domain in which they want to use them. But a clever dev can bypass that restriction if they dig into the code.
          The fullPage.js code also requieres a license key, but not per domain. And again, it can be hacked by reading and modifying the code.

          Having said this, companies like HighCharts, Handsontable, CKEditor, Froala editor etc managed to survive using this same concept of Open Sourcing their code. You should too :)

          What I find so interesting about open source is the fact that people is willing to help or to at least report issues and contribute with their own desired features. Perhaps even more when the product is totally free at first. They feel more involved.
          This can be quite powerful and allow you to create a better product in less time specially in the very beginning.
          Also, spreading the world around blogs / pages is much easier if your product is totally free. So that will help you on that regard too if you decide to start with a free product.

          What I'm thinking is having the base products as open source & free to use. But there will be some optional premium modules(addons), that way we have clear licensing terms.

          Sounds a bit like what I did at first!
          I would say that's a good way to start with it. Then, with the time, you can turn your whole project into payed for non open source projects like I did. See how it works, get feedback and responde to it :)

          Something's for sure. We don't know how things will work out unless we try, and if we try and we fail, we can always revert! :)

          1. 1

            Thank you for the response. Looks like going with a freemium model is better than commercial licensing.

            I will give that a try. Thank you 👍

      2. 1

        This comment was deleted 5 years ago

      3. 1

        This comment was deleted 5 years ago

  4. 1

    Outstanding! Congratulations. So this is the right way to build a bussiness out of an open source project.

    1. 1

      Thanks @Cosme12!
      That's my story, but I'm sure there are others ways too! :)

  5. 1

    Congrats on your success! Very inspiring story for other developers. Couldn't agree more on starting to charge early on. Also, keep raising your prices until that no longer improves total revenue.

    1. 1

      Thanks @webbie!! ;)
      I appreciate your comment!

      I haven't started raising prices yet, but I guess I'll give it a try sooner or later to find that "sweet spot" !

    1. 1

      Gracias @eltintero!! Un saludo!!

  6. 1

    Congrats! I used your product a few times when I was working as a web developer and liked it a lot. I first found it by looking at the source code of another site (back in 2016). I did once pay for a plug-in; never actually used it but wanted to support what you were doing.

    1. 1

      Awesome to hear @delicado!! I really appreciate it!
      Thanks to people like you I was able to get the motivation to keep working on it!

  7. 1

    This comment was deleted 5 years ago

    1. 1

      First of all, thanks for the feedback! I appreciate it!

      Now answering your comment:
      Well, fullPage.js was totally free for over 5 years almost and over about 3 years if we take into account the optional payed extensions.

      Donations have been available all the way in case anyone wanted to "invite me to a coffee" :)

      Even now, when fullPage.js is provided under a commercial license if required, I still have people who want to donate. Reasons may vary, from those who use it for free in their open source projects, from those who appreciate a quick fix or a good customer support.
      I just don't close myself to that.

      However I do not think I'm trying to positionate fullPage.js as a free/nonprofit package at all?
      If you got that idea from any text in the site, would you mind sharing it so I can correct it?
      There might be remainings of the past 5 years that I didn't notice?

      "seeking code contributions from over 100 people "

      That's the whole point of having an open source project. So others can contribute to its improvement. Not for my benefit, but for theirs and everybody's else. If they find a bug and fix it, they'll want it to be available in future releases too. And they want someone who maintains it and integrates it with the whole for as long as the project exists.

      "seeking code contributions from over 100 people (roughly 10-15% of his commits)"

      From the basis that contributions are the main purpose of an open source project, I don't see anything bad in it. In fact, it is quite normal to get some contributions if you see any open source project. Let's not forget that open source doesn't mean free.

      In any case, I'm not quite sure how you did the maths here. But a contributor changing a typo in the documentation counts as 1 commit / contributor.

      If we count lines added (when a line can also be a single character)

      • Contributions are: 5.3%
      • My code is : 94.6%

      If we count the removed lines:

      • Contributions are: 2.3%
      • My code is: 97.6%

      You can get the data from the Github repo:
      https://github.com/alvarotrigo/fullPage.js/graphs/contributors

Create a free account
to read this article.

Already have an account? Sign in.