It’s 3 months since I launched FirstOfficer SaaS Analytics and it has 28 customers at the moment. It’s not only new to the market - it’s new to me too and I’m still learning how to live with it.
I had this preconception of what running a SaaS would be like and how it would affect my life. But lots of things went differently than I expected.
The first times are precious
The first times something happens are special. The first signup. First recurring revenue in your bank account. First customer leaving. First angry customer. First server crash.
They are special. It takes very short time to get used to things.
I’m writing this as much for myself as for you. Six months from now I will probably have forgotten how it felt at the beginning.
The 2 weeks of hell after the launch
People say that you should launch early. That when the first customers are in, you really start learning. It’s a great advice - but there’s a downside.
When you launch early, your app is not going to be ready for the real-world pressure. That means long nights of coding, technical problems and apologizing to customers.
About half of my early Stripe imports either failed or didn’t categorize MRR right. It took me several weeks to get to the point where all the dashboards worked alright.
Categorizing MRR isn’t easy, so I implemented a cross-checker that shows a message to customer when there are errors.
That feature saved my ass, because pre-launch I had no idea how many different ways there are to use Stripe API. As customers were able to see where the errors were, they were able to start using their dashboards even when everything didn’t work perfectly.
Another life-saving feature was NOT having automatic account activation & charging. That bought me time to fix the problems without customers being charged, getting mad at me and asking refunds.
The baseline stress is here to stay
In my dreams, my new business was location-independent and I had freedom to choose when I work and I was taking things easy.
In real life, running a business has this constant tension - it’s like there would be a certain baseline stress that it creates.
Yes, I can choose where I work, but I need to have network connection each and every day. Gone are the days where I would go off the grid for days at a time.
It’s not the amount of work that stresses me. At minimum I only have to check things 2 times per day and it takes just a couple of minutes. I’ll check the support emails and that everything is green in the master dashboard.
The possibility of things going wrong and the unexpectedness is nagging me. Whenever something happens, I’ll have to be ready.
Don’t get me wrong. I don’t have a performance-critical app - I chose deliberately not to build one. But when HeartBleed hits, you can’t really wait. And when you see that your customers are having problems, you don’t feel like waiting even if you could.
Fortunately there are articles like this where Thomas tells how they monitor Freckle. So I have set up the systems that notify me when things go wrong. Polling is mentally straining compared to being notified.
Loving the customer support
I thought I wouldn’t enjoy doing the customer support and was planning to outsource it as soon as possible. In reality, my customers are awesome and I enjoy emailing with them.
I get the best product improvement ideas and invaluable feedback from my customers. They also have really interesting use-cases for different metrics that I love to hear about.
It seems like FirstOfficer just doesn’t attract the kind of people I’ve heard some entrepreneurs complain about.
The only customer who has been really angry at me was the fellow whose refund request emails went to spam and I didn’t see them. I think that’s very valid reason to get a bit pissed off. I got lucky and he reached out to me via Twitter instead of disputing the charge. My ears were red from shame when I went through of all his emails in the spam folder.
Some people love the product - some don’t
One fine day, the first email I opened said something like this: “This is useless, I’m canceling my account.”
And the next one said: “I just wrote you to tell that our team loves FirstOfficer. It’s invaluable.”
Gee. But this is just the kind of feedback that I need. When a product is a perfect fit to someone, it’s automatically not suitable for someone else in a different situation.
Saying “sorry”, “I apologize” and “no”
During the last 3 months, I’ve probably said those things more often than ever before. Especially “no” is hard.
Customers don’t tell you if things go wrong
I was expecting the customers to tell me when things don’t work. For certain types of bugs they don’t, even when they are suffering.
Like when I messed up the authentication tokens while trying to scale up the servers - no-one could sign in to the app. Or when I forgot to do the timezone conversion in tooltips and the chart labels showed one month and the tooltips another.
It’s not like my customers wouldn’t talk to me or do bug reports - they do. But when a bug seems to affect everyone, people seem to assume that someone has reported it already.
Crazy focus and selective laziness needed
Previously I wondered why so many entrepreneurs are throwing away money by not doing things that would clearly advance their business. Now I understand the pressure of possibilities.
There are so many things to improve, features I absolutely should have and marketing tactics I must try. There are just too many things to do.
I think this contributes to the baseline stress too.
I can do just a fraction of the things that should be done and would be good for my business. The hard task is to pick the things that I really must do and then live with the fact that those other tasks will not get done.
But the hardest thing right now? Giving enough time to marketing and writing, when there are so many features I could build.
I’ve done online business before, so I didn’t expect all this. But it’s been a great experience and a wonderful opportunity for growth and learning.
I wonder if getting started with a SaaS is like this for everyone, or if every SaaS business is different?