How I grew my Shopify micro-SaaS to $25k MRR and 20k users in 14 months

July 4, 2020

Update: I've written an extensive guide for people building their first micro-SaaS app on Shopify.

14 months ago, my co-founder Sankalp and I set out to build a business that can sustain our livelihood while allowing us the freedom to live life on our terms.

When we started, we each had roughly 12 months of savings to survive on, assuming we made $0. Hence our minimum goal was to make $1,500/mo and the case where we would be celebrating with champagne was set to $3,000/mo.

We launched our app on April 24, 2019. The first paid plan was launched on June 4, 2019. Around the same time, we got featured by Shopify. Here's a link to the app if you want to check it out.

14 months later, we grew past $25,000 in MRR while remaining a 2 person team.

Note: Earnings reflect after a 1 month delay

I’m so proud of what we have built here.

If life is a video game, and there’s 100 levels to it, I feel like we have finally crossed level 1.

Here's what we've been up to in the 14 months since launch:

  • 20,000 active merchants (users) on the app
  • 1,500+ paying merchants (customers)
  • 450,000 automated WhatsApp messages sent in June
  • 2.2 million WhatsApp chat messages initiated in June
  • Highest rated 5.0 🌟 app for all things WhatsApp with 500+ reviews
  • Users from 50+ countries around the world

We did a lot of things right, but we also messed up here and there. I've tried to capture an honest and accurate account of our journey so far.

11 key learnings and mistakes from our journey

1- Learning: Always keep moving the needle

Running your own business and having 100% freedom and flexibility is a gift or a curse, depending on how you use it. It’s easy to get lost in building, polishing, bringing your ideas to life. But remember, the only things that matter are what move the needle.

For every decision related to your business, you should always run it through a set of questions that help you filter out whether your idea is aligned to your business goals.

  • Does it help our app get more users
  • Does it help convert more users to paying customers
  • Does it help users derive more value and ROI from the app
  • Does it meaningfully improve user experience
  • Does it reduce our support ticket load
  • Does it have any unintended 2nd order consequences that can bite us later

Ultimately, you want to keep making decisions that move the needle for your business - by bringing you more customers and revenue, or making it easier and less time consuming to run the business (if that’s one of your goals, it is for us).

2- Learning: Help users realise value as soon as possible

From our research, we learnt that Shopify merchants are mostly solopreneurs or teams of 2-10. They are always time and resource crunched.

We wanted to enable our users to start using the app with the least amount of setup time or steps. This reflects in in the user experience of the app.

For example, when a first time user enters their phone number and hits the “Save” button, at this time the user is looking to test our app and see if it fits their needs. We speed that up by automatically enabling the chat button on first save, along with the best default configuration for all chat button related settings.

Another example, when a user wants to start sending automated messages, all they have to do is click on the “Enable” button. All the app’s default configuration is automatically applied and the user can start seeing value immediately.

3- Learning: Care about your users, they can feel it

Users are on a mission to achieve their goals. They typically need your help when there’s something that stops them from getting there.

From day 1, we were clear on providing the best possible support. Our users would be thrilled to see bug fixes deployed in 15 minutes, WhatsApp & email replies in 5 minutes, and so on. We were fast, we were responsive.

This worked in our favour - users showered us with positive reviews which is how we managed 500+ reviews while staying 5.0 star rated.

But customer support isn’t only about getting reviews. We’ve had users who prefer using our app instead of competitors because

A- We reply quickly

B- We proactively provide information beyond the immediate premise of the query

Your users can feel when you genuinely care about them

4- Learning: Be smart about managing and reducing support ticket volume

The downside of trying to be a customer support hero is, you only have finite hours in the day, and you don’t want to spend most of it replying to customers.

We took 3 specific initiatives to reduce support tickets.

1- Embed FAQs within the product

We found that users would have FAQs around specific features, and they wouldn’t really go to the help center and reference it. To them, it’s simpler to ask for help.

To solve this problem, we embedded FAQs inside the product itself.

Here are a few examples where we included the most commonly asked question beside the feature configuration.

The results were always immediately noticeable. Where we would get 10 questions a week about X, would drop to 1-2, thereby freeing us up from answering repetitive support questions.

2- Fix repetitive bugs

If a bug appears more than thrice in a span of days, the third time is when we go ahead and permanently fix it. Why thrice? That way we don’t overwhelm ourselves with trying to fix every single bug, but only the ones that appear repeatedly and take up support time.

3- Remove WhatsApp chat support and go with Email only

During initial days, we found it useful to let our users contact us on WhatsApp. It lead to tons of conversations which shaped our understanding of the user’s needs and how we can better solve them.

But having WhatsApp as a support channel had 3 issues:

1- With time, we discovered that people find dropping a message on WhatsApp to be very low barrier. Which means they wouldn’t take a moment to look around, be patient enough to find out how the issue that they are about to describe has already been solved inside the app. It’s just easier to WhatsApp us.

2- We also discovered that users had an unrealistic expectation of quick replies and quick resolutions on WhatsApp. Granted, we would be quick whenever possible. But if it’s 11pm at night and the user asks if a bug is fixed 10 minutes later, it can get a bit annoying.

3- I started dreading picking up my phone, seeing it full of support tickets every morning.

To solve this, we removed the WhatsApp chat button from our own app, and replaced it with an Email support button instead. All 3 problems listed above got resolved to a great degree.

We also made numerous smaller tweaks to optimise our support flow. One of the tiny but powerful tweaks was to automatically populate the email subject line with the user’s Shopify store url. That made it so much faster for us to look up the specific user instead of a meaningless back and forth of “what’s your store url”.

Our efforts have paid off. Unless we’re building new features, we spend only about 15-30 minutes per day on customer support.

5- Learning: Say No, often

Users ask for all sorts of functionality. It doesn’t mean you should build them.

Whenever we get feature requests, we add a card in our internal Notion board and judge the card against 3 factors

1- how many times do we receive the same request

2- does the feature align with the rest of our product

3- does the feature add core value to the user

Many times, we found users requesting features that would save them the hassle of using another app. Now, if that functionality enhances the rest of our app, it’s the right feature to add. But if it doesn’t, then we politely decline.

There are 2 types of responses we give to customers regarding feature requests:

1- Tell them that this feature isn’t requested by other users that much, and since we are a small team with limited resources, we may not be prioritising this feature in the near future.

2- Tell them that this feature is already part of our roadmap, and that we will reach out to them whenever it’s ready. I generally avoid giving timelines, to account for “life happens, plans change”.

This learning extends beyond just feature requests.

In the past year, we have received tons of business proposals, partnerships, integration requests, collaborative marketing invitations etc. Saying No allowed us to remain focused on what’s really important.

6- Mistake: Optimise top of the funnel

I was under the impression that during build phase, we shouldn’t focus too much on optimisation. After all, you don’t want to get busy squeezing another 10% when the potential is to 10x.

In most cases, I think I made the right call. One place I made the wrong call was the user onboarding flow.

Until March 2020, users would install the app and directly land on the chat settings page, which is the starting point of the user’s journey. We were getting a steady flow of 10-15 paid trials initiated per day.

Adding a step of friction before this would be counterintuitive, right? It couldn’t possibly increase trials, right?

Sigh.

When we added one screen which asked the user upfront whether they want to continue with the Free plan, or start a trial for the Paid plan, daily paid trials DOUBLED overnight, while trial-to-paid conversion rate remained steady at 50%.

The experiment took us a day to build, and after a week we concluded what was clearly the winner.

I normally advocate for focusing on building vs optimising in the early stages, but in this case I didn’t know that optimisation was waiting to unlock 100% increase in trials.

My takeaway here is - always keep your eyes open for bottlenecks at the top of funnel.

If there’s copy on your website, or a specific sign up flow that might be holding you back from getting 2x the users, you need to unblock it early and realise compounded gains over time.

7- Mistake: Competition will copy, don’t completely ignore them

In the past year, we’ve seen competitors copy our app interface, in-app descriptions, button designs, app listing text word-for-word in many cases. Initially we were furious, but instead we kept our head down and focused on customer’s needs.

Eventually we started ignoring our competitors, which was a mistake. While we were not looking, competitors gained ground on the huge lead that we had built up.

While I recommend entrepreneurs to not pay too much attention to competitors, I don't recommend ignoring them entirely.

If you had to split your attention, give 95% to your users and 5% to competition.

You want to remain informed about your competitor’s moves, whether that’s them copying you, building new features you haven’t yet implemented, or changing their pricing.

In today’s competitive landscape and low barrier to tech, all tech can get copied. Hence, build your moats beyond just your product.

I now understand better the value of building a brand.

8- Mistake: Charge according to customer value

I think we really struggled with charging correctly. Based on a few conversations with other app developers, we assumed that the right approach was to straight up raise prices. We raised our top plan from $14.99 to $19.99 to $29.99. Our paying user base kept growing, albeit very slowly.

Where did the other customers go?

To our competitors who were busy catching up.

The vast majority of our users are small merchants who barely have a few hundred orders a month. By becoming more expensive, we were alienating the 90% of potential paying users coming our app.

After realising this, we dropped subscription pricing to $10/mo. We make a healthy margin on messages and thus larger customers end up paying us more.

We also moved all chat button features to the Free plan, and combined all other paid plans into one plan.

This greatly simplified things for the customer, for whom there were only 2 choices to be made in the pricing page.

9- Mistake: Don’t get complacent

What do you think happened in that flat part of the graph?

Ecstatic about our initial success, we took the foot off the pedal for a few months where we pretty much allowed things to run on autopilot. It was a great time, I thoroughly enjoyed earning money while I ate, slept, read, watched, and relaxed.

But during the same time, our competitors were hard at work copying our app features. They incorporated many of our basic paid features in their free plan, which slowed down our user growth.

We were happy with the revenue we were making, which had already surpassed all our expectations before the slowdown, but we started flatlining around January-February of 2020.

That's when we decided to take back charge of the situation.

We made rapid changes to the product and more importantly pricing, which I’ve covered in previous points. This helped us retake merchants, get back to growth, and plug the leaky bucket.

10- Mistake: Expand your distribution channels

If we had to go back in time, one thing we would do differently is go beyond Shopify. At the very least, we should have diversified into the Wordpress and WooCommerce ecosystem.

Initially we thought our rating and reviews volume would be enough to keep the #1 spot. Alas, we were mistaken.

There are many ways to game reviews, one is by forcing your users to leave a review. Unfortunately, the Shopify app ecosystem is riddled with more such apps everyday, and one of them set their sights on us and overtook our ranking in less than 3 months.

Thankfully, the effect we had on trials initiated barely registered. We are mostly losing users seeking a “completely free” solution to our competitor. But it can get worse in the future as competition continues cloning our app (down to our code snippets).

My takeaway from this is - depending on 1 distribution channel can be dangerous, especially if that channel is an app marketplace which you don’t own.

11- Learning: Keep your expectations low, and keep surpassing them

Sankalp and I kept enjoying everything this app gave us because it would always surpass our expectations. For example - we expected to hit $3k MRR by end of 2019, but we crossed $8k by then.

This kept happening time and again. And while there’s a risk of setting the bar too low, as long as you’re aware that you’re not doing that, it’s far more enjoyable than setting the bar too high.

Ultimately, we didn’t quit our jobs and start a business to lead stressful lives.

We want the businesses we build to work around our lives, enabling us to live more freely and be more happy.

For the most part, I think we have achieved that.

--

If you enjoyed this post, do share your thoughts with me on Twitter.

I sincerely hope this post will help new entrepreneurs who are building a Shopify app, or a micro-SaaS product to grow their business. And also give ideas to help entrepreneurs who like us are somewhere in the messy middle.


By the way, I teach a course called Learn Programmatic SEO to help grow Google search traffic.

Programmatic SEO is a methodical and data-driven approach to finding keywords, understanding user intent and creating dozens or hundreds of pages of content.

Learn how to apply this framework to your business, whether it's ecommerce, SaaS, or even a side project. No prior SEO knowledge required.

Learn more about the course
💌 Enjoyed reading?

I write a weekly newsletter called ☕️ Sunday Coffee where I share my learnings about building profitable SaaS businesses and living a good life. Check out the newsletter archives. I think you'll like it!

You'll be joining 863 others who read my newsletter every Sunday morning. Best had with a cup of fresh coffee ☕️

You can also subscribe to the newsletter via RSS feed.