Last year, during one of our discussions on how to scale the Frappe Cloud business, I suggested we focus on marketing to boost sales. While that made perfect sense, we could not ignore the fact that numerous quality and operational problems were adversely affecting our business. Just as a leaky bucket fails to retain water, a business with operational inefficiencies struggles to retain customers and sustain growth. So, we agreed to fix these problems first before we could focus on adding more to the sales funnel.
Fixing bugs in operations
While it's easier to see sales impact directly on the revenue, operational impact is seldom seen clearly. Small operational fixes gradually add to making your business more stable, but direct revenue impact is not easily quantifiable. These include delivering great customer experience through customer support and consultation, ensuring timely renewals, and building strong internal systems to handle your day-to-day business operations. This is essentially what the Operations team at Frappe does. Last quarter, we spent time fixing some billing issues on Frappe Cloud. This exercise not only brought operational excellence to the way we handled billing, but also it was one of the few instances where we saw direct revenue impact by building better internal systems.
I enjoy identifying issues and resolving them. However, in operations, problem discovery is not an outcome of sitting down and contemplating the issues; rather you stumble upon them while trying to fix one thing, and suddenly there's a bunch more that need fixing.
While checking one of our partner’s outstanding invoices, I realized that some invoices were due for months. I then checked other partner invoices and found the same pattern. So we created a report to check how many partners have outstanding invoices. To our surprise, there were many such invoices, some unpaid for the last 4-5 months. On digging deep, we discovered that we did not have site suspension implemented on non-payment for all partner sites. It probably made sense when we first set this up, but as our Partner model scaled, we forgot to revisit this.
We extended this exercise to non-partner sites as well and found many edge cases were missed. These edge cases were probably not even foreseen when we first set up Frappe Cloud billing in 2020. Back then, we had a small number of sites. Today, we have almost 7000 sites on Frappe Cloud!
When we further investigated, we found other problems such as payment mode syncing and card validation issues as well. In certain cases, some free Frappe Cloud credits were given away to customers due to an internal bug too! A kind customer brought this to our notice.
How did we fix the problems?
We started by identifying that we needed a full-time team to work on these issues and monitor them proactively in the future. Shadrak and Rutwik joined us to get this started. Saqib volunteered to help us whenever we faced a bandwidth crunch. We then had multiple discussions to identify the problems and possible fixes for them.
Creating tasks and tracking timelines
After we figured out the major areas that needed to be fixed, we created a project roadmap on GitHub and started noting down all the issues one by one so that they didn’t get lost. We then added timelines to each and assigned priorities. Once this was done, each of us picked tasks that we could do within the specified timeline. This gave us visibility into the complete project and kept us accountable.
Reporting and analysis
We also created multiple reports on Frappe Insights. This helped us find patterns in the data and find potential problems too. We also created a billing dashboard to track our progress. What motivated us even more was seeing the outstanding figure go down as and when we pushed each fix. We could see our efforts translate to something that all of us could understand, i.e. revenue.
While we did have a site suspension policy mentioning site suspension after 10 days of non-payment, the implementation was for 20 days. Along with this, there were other edge cases where suspension wasn’t applied. We fixed those issues. We also went through all our policies again to ensure the implementation was in sync with the terms published. Implementing stricter termination and suspension policies ensured customers paid us on time to avail of uninterrupted services.
Automatic reminders for payments
We realized automatic payment reminders play a huge role in the SaaS business, especially when you scale. This benefits both the parties. As customers, you know how much is your upcoming payment and when it is due so that you can arrange funds and pre-fill your wallet, and as vendors, we receive timely payments. We set multiple automatic payment reminders to customers to remind them to recharge their account balance and settle the payments.
Daily automatic billing audits
To ensure there are no billing leakages, you must keep auditing your billing system periodically. As Frappe Cloud follows a daily usage-based billing cycle, invoices are created and updated every day as per the customer’s usage. Manual auditing is cumbersome, sample-based, and usually prone to errors. So we set up an internal Telegram bot that runs a scheduled job every day to send us lists of sites, invoices, teams, etc. that have failed the audit as per the defined policy. Here’s a snippet of the audit.
While we are currently manually fixing them post-audit, we plan to even automate these fixes.
Billing dashboard for customers
Though this wasn’t exactly part of this project, the refactoring came in at the right time. We now have a clear billing dashboard that shows the customers their current billing amount, unpaid amount, account balance, and all the invoices, which gives them a clear picture of their billing and upcoming payments.
This project was insightful, and there were many valuable lessons. Sharing a few below:
- Systems once set may not always work as you scale. You need to constantly tweak them to suit your current business needs.
- Automate everything! One of the key goals of the Frappe Cloud operations team now is to automate all processes to leave little room for manual work and error.
- Periodic audits are imperative. They help you find deeper problems that are not easily visible on the surface.
- Constantly monitor and report your key metrics when it comes to revenue to identify patterns and changes.
- A stitch in time saves nine! Always fix small trivial issues as soon as you find them. They later pile up and turn into bigger problems.
- You need to have motivated team members who are genuinely passionate about driving operations. Shadrak, Rutwik, and Saqib played crucial roles in this project and they did a great job! Multiple brainstorming sessions, short sprints, and milestone tracking contributed to the success of the project.
Though these may appear as minor issues on the surface, they have been accumulating over the years. Due to all these issues combined, our total outstanding over the years for Frappe Cloud alone amounted to over USD 70K, most of which is now lost money.
On the bright side, these fixes along with the efforts put in by our partners and the sales, product, and support team contributed to a 13% increase in Frappe Cloud revenue for November 2023. While December’s accounting is still in progress, it has already crossed the revenue earned in November. On average, it has been growing steadily at around 6% each month. Frappe Cloud also crossed USD 100K in monthly revenue, which was another huge milestone!
While billing fixes give a momentary boost to the business, we understand that ultimately it is the product and the customer experience that sustain our growth. At Frappe, we are working hard to improve the stability, uptime, customer support, and product experience of Frappe Cloud and your feedback helps us in this ongoing process. Share your thoughts, experiences, or suggestions with us in the comments below. We are confident that with your input, Frappe Cloud will continue to scale up and meet the evolving needs of businesses!