After slow but steady growth TeamCal crossed $1000/month in subscription revenue!
To grow more the next step will be to retain and guide new users better. The idea is to have an email flow and a small product tour after signup. I was thinking of using Intercom for it because it supports email flows and in-app notifications. If any of you have used other tools, I would be thrilled if you can leave a comment.
A couple of subscription renewal payments failed, and I noticed that Stripe offers no built-in notifications for that. For now, I decided to send those notification emails manually. I found a great blog article on how to structure those emails, see the link below. Later I will need to automate this - any ideas for simple to setup dunning products are welcome!
More and more customers are asking for annual plans and I decided to add them now. The new annual plans will have a discount by giving two months for free.
Coincidentally there is a great discussion right now on the forum about annual plans:
Added a “What’s New” link to the web app to keep users informed about new TeamCal features. To keep it simple the link points directly to the blog. By using a tag (“News”) on the blog articles, the user will see a nice list will all the relevant updates.
My GoogleAd campaign has ended. Exactly 44 people clicked on one of the Ads and 15 signed up in the end. I don't have the final number yet on how many bought a subscription because of the 30-day trial delay. I assume it will be less than 5.
What I definitely recommend is to link Google Ads with Google Analytics and report back when people buy a subscription. This will give an exact dollar amount on how successful the campaign is. I didn't do it because I was frankly too lazy to set up all this for my free voucher. If I ever decide to buy Google Ads for money then this is an absolute must, otherwise, it will be difficult to control and measure the spending.
Another thing I noticed is that despite 5-10% click-through rate (CTR) Google will penalize the ad when not enough people search for a keyword. I can only assume this is to force advertisers to choose more common keywords and increase spending.
I started the Google AdWords campaign with the $150 voucher I got.
What I learned so far:
Getting the first customer and more importantly, the first paying customer is always a hot topic. Frankly, it's not something I'm good at, but at least for TeamCal, I managed to come up with a good solution.
Twelve customers of my previous side project wrote me that they are looking for something else and GANTTplanner is not what they need. I wrote them about my idea of TeamCal and that I will contact them once I have the initial product ready. I didn't do anything for one and a half years, so I didn't expect any positive results when I finally built TeamCal and wrote them. To my surprise, eight of those people tried TeamCal and some even signed-up for a paid subscription. What I like to add is that I wrote each of them an individual email referencing their previous email - no boilerplate text.
Even if you don't have a previous product, service or mailing list, I think this approach is still valuable. Search for forum posts, tweets, and other places and write those people that you are working on a solution and if you can contact them once ready.
My next update will be about my experience with Google Ads. I received a $150 voucher from Google and decided to spent in on ads for TeamCal :)
When I started my first side project, I wanted to learn as much as possible. That's why I coded everything from scratch and invested a lot of time to create features which weren't even that important.
While this was incredibly rewarding, it took me a very long time. I spent nearly six months to create a Gantt chart JS component (www.angular-gantt.com) before starting the actual business logic of the project.
Needless to say, this isn't the fastest approach to building a side project with the goal of earning money. On the contrary, it's risky because there is a big chance nobody will use whatever you made - not something you want to find out after spending a lot of time.
For TeamCal I took a radically different approach. First of all, I had initial customer feedback confirming that the idea of TeamCal is something they needed. While this doesn't guarantee a successful product, at least I knew there are others out there looking for a solution to the problem I'm going to solve.
On the technical side, I created the first version of TeamCal in less than two weeks in my spare time. I did this by re-using existing and mature ("boring") solutions as much as possible. The Django framework (Python) provides an excellent base for web apps because it includes all necessary functionality to do so. At the time Angular 2 just came out, but I decided to still go with Angular 1 because I knew it well, it was mature and there is a ton of material out there if something doesn't work.
I also decided to buy finished JS components from Telerik. While this requires an initial upfront cash investment, it helped me to focus on implementing the actual business logic. With no previous experience of Telerik I have to say that the components, documentation, and support is very good.
I'm running TeamCal on Heroku. Compared to a Digital Ocean droplet it's more expensive but on the other hand, requires zero operational efforts.
With my first post, I would like to welcome you to my journey of creating TeamCal. TeamCal is my second side project, and I built it based on feedback I received from customers of my first side project GANTTplanner (www.ganttplanner.com).
It always takes a lot of time to sync scheduling tools and events in individual employee calendars. Why is there no scheduling view directly in Google Calendar? To fill this gap I created TeamCal.