TL;DR: These are the before-and-after charts after turning things around.
Before (~$100 of this MRR was actually from our team)
After (steadily growing)
We were about to give up. We had spent a year building the product, but had no tangible results to show. We had zero real customers. The users we did have were the wrong types. Sales was tough, nothing was sticking. Worst of all, our product was not good enough and it didn't truly solve any customer problems. We felt defeated and were ready to give up.
This is the story of how we turned things around for our SaaS business. We are bootstrapped, which means we have no outside investors or funding. Our monthly recurring revenue (MRR) is currently $24k.
The journey has been a long one with iterating through learning and feedback.
So how did we get here?
Derek and I are the founders of GrowSurf, referral software for tech startups. We both have technical backgrounds, having designed and built web apps together in the past.
I handle marketing, design, and front-end development for GrowSurf. Derek handles server-side architecture and development.
While working on various projects together, I would always be searching for referral software that we could use. There were always multiple options on Google, but nothing that really fit our needs or budget. That's when we decided to build it ourselves.
We started building GrowSurf in mid 2017. It took us a few months to build the first version. We used tools like Firebase, Heroku, and SendGrid that helped us launch quickly.
We were trying to build it as quickly as we could to launch, test, and to reduce risk.
When we chose Firebase as our database we were able to launch super fast. However, later on, as we tried bending Firebase to our will, this cost us months in development time (not to mention the paradigm of writing queries to control costs and avoiding the dreaded 100% load, which halts Firebase).
If we were creating a simple CRUD app, Firebase could have made sense. But as a platform that would need to handle users on behalf of users, choosing a proper database could have saved a lot of pain and headache.
The technical recommendation is to really examine the needs of your SaaS and understand the necessary tools and tech stack. What saves you time and money now might cost you in the future.
The original vision was to create a self-serve, affordable product that tech startups could quickly plug and play to get referrals. We wanted to design a system that would streamline the amount of work involved for implementation.
Most people think of Airbnb and Dropbox when they envision referral program success. These companies built their programs in-house with significant time and engineering resources, which very few businesses have. We wanted to make the core referral software available to the masses.
Because we were looking to launch quickly, we ended up creating a highly generic product which was compromised on multiple levels and ultimately did not help marketers nor solve the problem.
We didn't start with an audience. We didn't have personal networks we could tap into to get connected with target customers. There was also no email list of subscribers or "coming soon" landing page. And we never did any cold outreach for product development (we found it impossible to get responses from cold outreach).
We instead placed a heavy emphasis on exposure. When we launched the first version of GrowSurf in late 2017, I posted all over the internet to well-known outlets like Hacker News, ProductHunt and BetaList. If the action item was on a startup marketing checklist somewhere, you can bet we did it.
Enough exposure could make all the difference. For example, getting a top-five spot on ProductHunt would get you in their email newsletter, which could make or break a product. Getting exposure at this early stage was highly beneficial and also helped with social validation.
Recommendation: Although you shouldn't rely on places like ProductHunt and Hacker News, don't underestimate what a good amount of traffic can do for you. Hope for the best, but expect for the worst. For a long-term approach, we've now invested into things like SEO and content. If you're an early-stage SaaS, I recommend doing the same.
This is what our v1 product looked like:
On the outside, it was pretty simple. Nothing unique or out of the ordinary. But it was really bad when it came to handling customer use-cases.
The product didn't do a good job because it had no clear customer profile in mind. Our landing page copy was generic, and so was our pitch. There was no appeal.
We took the freemium business model approach - our plan was to launch a free product, gather customer success stories, and then eventually create a paid plan with premium features.
We spent about a year working diligently on GrowSurf on a part-time basis. We were making product improvements, adding features, reaching out to users, getting feedback, and hustling on marketing to get more users.
We were doing whatever it took to find meaningful traction. The embellishment of weekly check-ins started to wane, as we reflected on what was working and what was not.
This period was extremely tough. We weren't getting anywhere meaningful no matter how hard we tried and floundered around for a long time as the result.
The image below is of our first year in trying to make revenue with a "Premium" plan at $49/month --- we only had $294 in gross sales and one customer who was bound to churn.
There was no real traction, growth, or promise after a lot of efforts on our part. And this was after about a year of working really hard on GrowSurf. Derek and I decided to take a long break.
For a month, we reflected on how things were going, what our options were, and what we could do to find success.
We had to decide to either shut GrowSurf down for good -- with heavy sunk costs having spent so much time on it, or we could keep pushing on to find a way to the promised land of MRR and honey.
When Derek and I touched base, I was ready to throw in the towel and call it quits, but Derek persuaded me to give it another shot. I agreed as long as we didn't make any more product compromises -- the road ahead was going to be tough, and we needed to get back to roots.
We looked at what we had, and decided the best option was to rebuild the product from the ground up. This ended up taking a year.
In order to turn things around, we needed to be honest with ourselves, and start with asking the right questions, and digging further.
Does our product suck? Yes. Why? Because it's built with so much compromise.
Are we attracting the wrong types of users? Yes. Why? Because our messaging sucks.
If we can help users grow their business, could we succeed? Yes. Why? ROI for customers.
Once we asked reflective questions like this, and dug at the roots, we could identify our problems. In hindsight, the issues were glaring, but at the time, everything felt like a shot in the dark.
During our revamp, I went full-time on GrowSurf. Considering the amount of work ahead of us, I couldn't see a pathway to success on a part-time basis.
We learned a lot with version 1.0. We knew we had to get back to the original vision: make it easy for startups to tap into referrals. We had to work backwards, starting from understanding what customer success looked like: seamless integration and referral growth. We analyzed popular referral programs extensively, and worked backwards to rebuild GrowSurf from the ground up with this mentality.
Our new product had to make it easy for users to build a referral program into their product. This time around, the user experience (UX) would dictate the product design, and not the technical constraints.
Next, we needed to have an ideal customer in mind. We had enough data from sales prospects, users, and support tickets to identify the areas we needed to fix to make this the product that we had in mind.
The customer persona we used was one of the prospects I talked to. They were our ideal customer that we used to determine design decisions for GrowSurf 2.0. - i.e. head of growth for a well-known B2B SaaS startup, with a blend of technical and marketing skills.
It took us one year to rebuild from scratch and focus on the customer use-cases from our learnings.
When we first launched, we held onto a "Beggars can't be choosers" mentality. We welcomed any and all sorts of users in order to get traction. But none of these users were really ever long-term, sustainable customers.
First mistake here was thinking that our market was the entire world of online businesses. We were trying to build a single software for all businesses. But in the referral space, there's a reason all the players have a certain focus (e.g, eCommerce, DTC, Enterprise).
Recommendation: Be selective with your customers. Our software isn't for everyone, but this works out much better for everyone in the end.
When we decided we wouldn't compromise on the product anymore, we meant it.
GrowSurf is heavily inspired by some of my personal favorite MarTech tools and SaaS experiences -- products like HubSpot Sidekick and Stripe. Conventional features like email notifications and user accounts are designed pretty standard, but when it came to streamlining our integration process, we combined the good stuff from other SaaS and combined it with our own product.
Since day one, we've held onto the concept of simplifying the complicated process of a referral system. Everything we designed and built would need to be simple, flexible, and solve a pressing use-case.
On several occasions, we'd get caught up in the technical implementation and efforts it would take to build a feature. And because this time around we were dedicated to the user experience, the voice of the customer would guide the conversation. This is another area where there is a thin line in balancing between over-building and under-delivering. My recommendation would be to use your judgement, but absolutely become the biggest customer advocate you can be. All it takes is making sure that you step into the shoes of your customers.
Even today, our customers enjoy our simple interface and workflow, and will mention this at times in reviews, on social platforms, and in our support chat.
Combined with our customer personas and use-cases, we created a product that returned to its roots in vision: a tool that gets out of the way and does its job right, invisibly running in the background when set up right, brings some amazing results.
A bit deeper on the technical side of things: GrowSurf 1.0 suffered terrible issues and couldn't handle server load. There was one time a memory leak issue was so bad that it took down our entire system. We didn't know what was causing it, and we didn't have the right tools to debug the issue. Downtime caused really unhappy customers. We later found the issue and fixed it, but moments like this reflected the feeling of anxiety of not being able to diagnose issues properly.
Other times, we experienced load from "hackers" hammering our API. This goes on, with headless browsers and level of sophistication of attack.
It was a long road ahead, and we've had to learn and reactively implement the right technologies and design decisions that fit our SaaS. When it comes to using core SaaS services, spend some time understanding whether to build vs buy. For example, we now use advanced visibility and reporting tools like Datadog. It's one of our largest expenses, but makes up for it in the value it provides.
Big props to Derek for leading our architecture through tough times, among the countless other items we were blocking and tackling together. To fix the wings of an airplane while it's in the air, on fire, describes the type of work required. Our platform required some specific technologies like ranking, advanced querying, message queues, and Kubernetes. It would have been impossible to scale without Derek! The takeaway here is to work with talented people where you can divide and conquer.
We launched with a megaphone pointed at our audience (the "marketing"-first approach). This means that all the language used on our landing page and emails attracted the wrong types of users because it might have been general gibberish. If we had started with a "sales"-first approach, that would have saved at least a year in learning how to speak the language of our customers.
"Marketing" is a one-way street. You present something to your customers, and they decide if it's for them or not. [Good] "Sales" is when you let the customer talk to you. Then you're able to present how your product can address their needs. If there are concerns, you can ask what they are.
Because GrowSurf 1.0 missed this messaging, our landing page sucked.
Once I updated the marketing copy on our homepage to speak to our ideal customers, the more ideal customers filtered through. If we had focused on doing this a lot earlier we could have saved years of wasted effort.
When we had launched GrowSurf 1.0, I cold emailed perhaps 50-100 people, and got only a few responses of interest.
Here's a screenshot of one of the emails I did get back, and what I would do to change the messaging:
This is the same ideal customer persona I referred to in this post: the head of growth at a growing SaaS company.
My first go-around at improving marketing copy was using insights I had from taking 600+ demo calls. I learned how prospects approached the buying process, what they were saying, and what they were looking for.
This is because people find us primarily through a Google search and set up demo calls with the referral solutions on the page. As a result, I got a chance to speak with prospects and understand what they were looking for. What use-cases they needed, what features they wanted.
We also hired a B2B SaaS copywriter who was able to translate customer data and quotes into converting landing page copy. Better copy helps our audience learn why we're the right product for them.
After spending years on marketing language, and endless revisions and cycles, it's nice to see results like this:
Out of all options suggested, Growsurf has the clearest value proposition. Thanks for sharing Stefan!
--- Ben Issen (@creative_ben) November 1, 2020
@GrowSurf has a nice framework. Haven't used it yet but have been researching it as well as many others and gs seems pretty robust and API capabilities.
--- Lizelle van Vuuren (@heylizelle) March 6, 2021
My recommendation is to continue working on your messaging to resonate with your customers.
As a tiny company, one of the advantages we had in our corner was being able to control our customer support experience. One of the big things we did was remove customer support options for our free plan, and have support be paid. This helped us allocate our time on real customers.
Later, as we started to gain traction, Derek and I got inundated from juggling all the hats. Half of our time spent would be helping customers.
We ended up creating a lot of internal processes and FAQ docs for providing support (to avoid the bus factor). We also had an unsuccessful first-hire for a customer support role and learned a bit from that experience (never ignore the red flags!).
After a more thoughtful search, we hired Sudi as a full-time technical support specialist last year and things improved significantly. We were able to transfer product training and knowledge, and Sudi has been doing an awesome job in helping our customers.
Because we put so much time and energy into making customer support work, it's rewarding to see results like this:
Social proof played a huge part in growth. It got the ball rolling. No one wants to buy a product that has no other customers. The journey to gathering ratings, reviews, customer success stories, case studies, brand logos, and testimonials was a long one.
Because we started from scratch, it took a painfully long time to build up social proof. From setting up referral programs to seeing results, customer success stories take time and energy, and outputting a case study out of it, while balancing the rest of the business is pretty effortful.
The results of slowly building out the product and doing sales and marketing is what helped us to get close to our customers. When I would request a review, lots of customers would generously provide us with them. When we would reach out for case studies, it was a pleasure seeing how happy our customers were in the results they were getting.
My recommendation is to talk to customers and establish relationships. We learned first-hand, our customers are the best advocates we have.
We just had our best month of revenue growth in March. But we also took a large hit this month from a large customer changing to a smaller plan.
In recent months, churn has increased. We're currently averaging 7% churn. If we reduce this, we could be growing much faster.
Our SaaS is performance-based so if customers don't see results, they churn. That means we need to get our customers results.
Considering we used to have double-digit churn, our current average is a major improvement. But it's not good enough. After we analyze this round of data and implement a strategy, I'll write a detailed post on this topic in the future.
On our backlog, there are many items that we have yet to do. Keeping focused on building features that improve success is what we're going to keep doing. At the end of the day, customer success means finding success with referrals and having a good experience with setup, implementation, and support.
As we look for opportunities to accelerate and improve returns on customers' referral marketing programs leveraging the expertise we have gained so far, we'll continue to have conversations from customers and get their feedback.
I hope you enjoyed this story.
If I could sum it up into a few key takeaways, here they are:
Find customers and solve their problems. Don't fall into the trap of "if I build it, they will come". Talk to potential users. Once you have your customer profile, speak their language.
Stick to your product vision. When we returned to a focus on our target customers, our product fit these companies much better than any other type.
Create the best product that you can for your customers. Don't compromise to go quick. If you're starting from scratch, really uncover the true use-cases for customers, or what's really holding them back. This is tougher said than done.
Be selective with your customers. Our software isn't for everyone, but this works out much better for everyone in the end.
Work with talented people where you can divide and conquer.
Be prepared for a lot of time, effort, and self-doubt. Our progress was slow and steady. There was never one thing that really catapulted growth -- it was a combination of a lot of different things. Hang in there, stay alive long enough to find what you need to change.
Follow me on Twitter for more content like this.
Awesome, thank you so much for writing this! It takes a lot of courage to write your story in such details, with all those failures and successes, and make it so useful to many other startups.
A quick question: did you try educating your customers on how to make their referral programs work? I think the churning customers could blame you for their programs not working, while they just don't do it the right way, or expecting too much.
Thanks, glad to hear!
To answer your question, initially, we didn't educate customers enough. Great self-service customers came in knowing exactly how to use our SaaS to get results, but a lot of customers are not like that. So educational content helps and this is something we're still working on and testing today.
This is an absolutely fantastic read. I think it's really interesting to see how you transitioned from a 'compromise' mindset to a 'no compromise' mindset.
That's at odds with a lot of the received startup SaaS wisdom, but it really makes sense in terms of:
Really enjoyed this, thanks for writing it up, Ethan.
Very comprehensive read, glad you made it :)
Very inspiring story Kevin. Good luck to you both - Venkat
Hi,
Thanks for sharing! Learned a lot.
How were you able to source so many interviews?
What I've found, especially when you target the wrong audience, is that it's terribly hard to get your users to jump on an interview. This creates a negative cycle where it's hard to learn about your users.
Any tips?
I was able to get sales calls b/c of the nature of our product. Prospects who Google for this solution typically hop on calls with the top search results. So we were competing with established players (more Enterprise) in the sales arena. Even though these aren't our target customers today, this is what built the base of talking to people.
It was a painful process, but over time I learned how to improve and get decent on sales calls. I sought advice, got advice, read as much as I could, and iterated.
My advice would be to keep going through it. You're going to learn a lot in the process (qualified/unqualified prospects = molds your customer persona). Usually, you have a gut feeling of whether the people you're taking to are the right people, but try to keep improving that angle so that your trajectory lands you with speaking to the right people.
Thanks for sharing, Kevin. How did you keep motivated through those times when it just wasn’t working?
It was very tough times. Being determined to make a SaaS work and listening to things like IH podcasts and reading essays helped. Chugging along, knowing it was going to be a long-winding road, but if we could make it past the 0-1 stage, then we could take it to 1-10. That initial stage was the hardest because it was really starting from scratch. But man, was it tough and it still is, but it also gets more fun as you start to get the boot off your throat. Staying healthy is also important
Much respect for keeping at it. I agree about listening to IH podcasts. Hearing what others are going through really helps. That’s one of the main reasons I’m hear on IH! Thanks for sharing your story.
Great post! I have a few questions if you don't mind:
I just hurriedly checked the load on my Firebase RTDBs and my web apps are all under 5% (my Android app has hit a peak of 13%). It's all basic read/write in my case. At what scale, broadly speaking, should one begin to worry about hitting 100% load?
This isn't the first time I've read about hackers hammering a SaaS company's API. What's the deal with this? How do they figure out your endpoint(s) and what's the game for them?
What were the red flags you ignored with your first hire?
Thanks!
Thanks! Here you go:
It's been quite a while since we've had those FB issues, but whether it's RTBD or Firestore, FB is not something I would recommend anymore. If you can swing it, migrating to a proper DB like MongoDB can save a lot of headache in the future. Little things like how to handle "count"s seemed to just be too combative. The fact that load is another issue to worry about is a pain (can't remember what, but may have spiked due to fraud activity). I also wasn't a fan of the FB performance CLI tools for debugging.
Basically, they'll make a JavaScript call from a browser console. And/or run a script to make XHR calls. To combat this, you'll want to make sure you rate limit all endpoints (external and internal), and to be safe, at all levels -- DNS and application. Based on sophistication, there are cookies at play with server-response, but for the most part, we learned and played whack-a-mole reactively by observing bad actor behaviors. Using a tool like Datadog can bring comprehensive visibility on affected endpoints -- it costs $400-500/month but worth it.
One red flag for example was just not having difficulty meeting the expected levels of communication and transparency. As a remote company, we need to be on the same page, but that rapport was not there.
I read this today from your post on Twitter. It’s one of the most authentic and inspiring stories I’ve read in a long time. You keep it real, and the insights you provide especially about customer service were like 👍🏾🤯. When I read that part I was like OMG brilliant that must have saved sooOOoo much time and headaches. What I loved most about the story is that it wasn’t filled with tips and tricks and hacks of the day, just common sense problem solving and empathy for your customers and peers. Thanks for sharing this. It made a difference
Thanks man!! Hope it was helpful!
Thanks for sharing your inspiring story! It's a great example of perseverance, Kevin!
When did you able to live out of the SaaS revenue? How you funded yourself before reaching the numbers?
I'd say we are still working on getting to market-rate salaries :)
After a year after we launched, I decided to go full-time and was burning through savings. We were about $4k MRR when I started paying myself $3k/month.
Awesome, great post. Thanks for sharing. I didn't know GrowSurf was bootstrapped! :)
How much did you spend on the SaaS copywriters? I found several writers and this writer appears on the top rank. Is the rate affordable for startups?
Our thinking was that we knew how powerful copy could be, and it was time to pay a professional to do what they do best.
Depends on your LTV. If a copywriter has the potential to even bring a few solid customers (our LTV averages in thousands any given month), then it was worth it in the long-run.
We only updated core pages like the homepage + some others to stay within budget too.
Great read, thanks for sharing.
I also think that there is an actual trend about all the newsletters, and your tool is a great fit to increase the number of emails in the list.
That trend was less powerful few years ago..
Awesome post Kevin, thank you for sharing your insights to the community!
Nice, perseverance pays!
Great read, thanks for sharing and congrats on the massive turnaround!
this is super awesome. thanks man
This is amazing! Thanks for sharing such a detailed walkthrough of the whole journey.
Looking forward to seeing what's ahead.
This is very inspiring Kevin!