Andris Reinman Shares How He Acquired First 40 Paying Users for EmailEngine from His Open Source Work
Table of Contents
- Tell us about your product and what inspired you to start it?
- How long did it take you to acquire your first 50 customers, and what was your growth strategy?
- Which technology stack are you using and what challenges and limitations does it pose?
- What are some of the most essential tools that you use for your business?
- What have been some of the biggest insights you've gained since starting your entrepreneurial journey?
- Your recommended books/podcasts/newsletters etc.:
- What other products are you working on? (if any)
Andris Reinman is the founder of EmailEngine - Software to access IMAP and SMTP servers over REST API
EmailEngine is a tool to access emails on email servers over a simple to use REST interface. Handling native email protocols like IMAP, SMTP, and MIME directly is difficult. These protocols have evolved over many decades into very complex systems and look nothing like the HTTP protocols we are mostly used to.
For example, in IMAP, everything is sequence number based. So if the server notifies you that message number 123 has been deleted, you have to know the exact sequence and update it as well as the message that used to be 124 is now the new 123.
EmailEngine hides away all that complexity and allows you to access email accounts as you would any other resource nowadays - it provides a JSON-based API and sends webhooks about changes on the email accounts. Skipping this complexity decreases development time, which is the main value add from EmailEngine.
I worked on a similar concept in a CRM startup about ten years ago and, after many years, saw that the same problem still exists. It is hard to integrate services with customers' mailboxes unless it's something straightforward, like triggering a Zap for an incoming email. Equipped with all the experience I'd gained during these years working on different open-source email projects, I decided to tackle that issue again, this time under my own company.
So far, I've acquired around 40 customers. I hope to get to 50 in the next 2-3 months.
I initially ran EmailEngine as a free open source project, mainly to gain some traction. I managed to get 3 test customers willing to pay for better license terms than the default open source one, but it took a long time, about a year, so I figured it was the wrong approach. Last November, when I did a new major release, I started requiring a paid subscription from all users.
It took only about a month to get the next ten paying customers. These were previously free open source software users who wanted the paid upgrades. From there, it's been a bit slower but steady growth, adding a few new users every month.
I mainly drive traffic to EmailEngine's homepage from the pages of my open source software, mainly from nodemailer.com and ethereal.email, which are rather popular projects. Combined with other minor sources, this gives around 5k-6k unique visitors per month for emailengine.app.
EmailEngine is downloadable software, so my main concern is to package it in a way that is easy to use. The app is a Node.js application, and I use the pkg utility from Vercel to convert it into a single executable binary for different operating systems. I also provide a Docker build. EmailEngine uses Redis as it's data store.
The use case for the app is straightforward, Node.js is a good fit for such a system that is listening for and reacting to different kinds of events, so I wouldn't say there are any technical challenges. All the real problems are around email protocol handling. Figuring out effective data structures and how to handle these, but this is the bread and butter for EmailEngine. If it were easy, there wouldn't be any need for EmailEngine.
The licensing portal is the only public web component for EmailEngine. This is where people sign up for subscriptions and generate their license keys. It's a straightforward web page and has almost no load at all. As with the web interface for EmailEngine itself (EmailEngine does not have a GUI but a built-in web server for the API interface and administration UI), this is also a Node.js app. But, obviously, it runs on my server instead of on the users' machine.
I use Stripe for all the payment handling. I redirect users to Stripe's self-service customer portal to enter their card details. It is kind of cumbersome because they need to come back to my own site to activate their subscription, but it works. When I started with EmailEngine, then Stripe did not have their tax handling offering yet, so I had to implement subscription selection on my own app due to some VAT-specific issues. If I started now, I would let Stripe handle everything related to subscription activation as well.
I use VS Code for coding. Github for code hosting. OVH servers for the billing portal. Umso.com as the CMS for the EmailEngine's homepage. I also do accounting for the company, and use web based accounting software provided by the Estonian Business Register.
What have been some of the biggest insights you've gained since starting your entrepreneurial journey?
I found out that I'm not a business person – all I want to do is to code email software. On the other hand, I've also discovered that I can perform all the required roles if needed. I have not hired anyone to handle tasks, so far I've done everything myself.
This has been mostly possible due to working with many smart people in the past. I know that I can't do things even nearly as well as these people did, but at least I know what my limits are and what is the stuff that I _can_ do.
For example, I can build and release new free tools and consider it as doing marketing, not coding, as, in the end, these tools will drive new traffic to my company's website.
- Indie Bites podcast https://indiebites.com/
- Boostrapped podcast https://bootstrapped.fm/
I mostly work on different email-related open source projects like Nodemailer (https://nodemailer.com/). EmailEngine is the only project I run as a business.