Rejoiner started back in 2011 by three friends who, while working together at a SaaS company, discovered that one of the biggest problems facing all eCommerce companies is cart abandonment.
They searched for a solution to help them overcome this problem, but discovered that such a solution didn’t exist. So they decided to build Rejoiner.
Rejoiner now offers eCommerce stores of all sizes the ability to regain some of their lost potential revenue caused by low cart-abandonment rates. Clients can create a series of customized email campaigns sent to customers who abandon shopping carts during the sales process, containing the products the customer added to the cart before leaving the site.
The average recovery rate for Rejoiner customers is between 10% – 20%, which, depending on your monthly checkout visits, average order value, and abandonment rate, could mean receiving anywhere from a few thousand to a few hundred thousand dollars in recovered revenue – a pretty great result for just sending a few emails!
The Rejoiner team approached us with an existing solution that was still in its infancy. They faced a lot of performance issues relating to data reporting and lacked the technical resources to improve, develop, and maintain a quality solution that could be scaled to handle their growing client base.
The Project’s Goals
Once we identified the challenges, we came to the conclusion that it would be more feasible and financially viable for Rejoiner to optimize its current platform instead of replacing it with a new solution. The project’s goals were created from both the user and technical perspectives.
After confirming the project’s goals with Rejoiner, our team set off to make the necessary improvements and develop the required features.
We identified the challenges and outlined the project’s requirements:
- Improving code quality
- Setting up a deployment-automation process
- Reorganizing the production environment
- Correcting the platform’s design and database schema
- Developing new features and improving the reporting process
Improve the platform’s performance
to increase its stability and allow it to handle the growth of the client base.
Give users more flexibility
in changing the settings of their campaigns and accounts.
Build a reporting feature
in the platform that allows users to create email campaigns and analyze their performance.
Enable users to create user segments
and create campaigns that targets these segments.
Allow users to create and manage multiple campaigns
Develop A/B testing tool
that allows users to create different variants, test the variants, and then view their performance in the reporting section.
Automate the billing process
to increase conversions.
Resolve issues relating to false positives
(e.g. as a result of spam) and make the email campaigns more reliable.
After confirming the project’s goals with Rejoiner, our team set off to make the necessary improvements and develop the required features. Here’s a breakdown of the main solutions and the results they achieved:
Refactored the code base
The code base is now much easier to work with, the platform performs better, and it is easier to run tests on the code.
Developed new features and continued refactoring and optimizing the platform
The platform is now highly extensible, and adding new features is much easier and carries much lower risk than before.
Automated the billing process
Eliminated a lot a manual work that would otherwise have to be performed by the user. Now, the user is billed on an automated basis, which saves them a lot of time.
Optimized the platform
Increased the platform’s stability.
Introduced automated deployment
Eliminated repetitive deployment, which saves time, reduces deployment errors, and allows the developers to release new features and functionality more frequently. By introducing automated deployment, we were able to reduce deployment time from 30-60 minutes to a few minutes, even a few seconds, depending on the change.
Redesign the platform’s infrastructure and migrated it to another hosting provider
Built better infrastructure and created a better approach to organizing the platform on a different staging environment. The major change was introducing database replication, which in turn created redundancy. This means that in the event the master database goes down, we can use an alternative database and therefore increase the platform’s availability.
Changed the schema in the database
Faster queries and the ability of the platform to retrieve the data from the database quicker and more efficiently, which eliminates lag in displaying reports, allowing users to view reports instantly.
Set up a continuous integration (CI) server
Created a separate testing environment to keep it independent from the local environment. This allows our team to save time on testing code, avoid destroying the platform’s existing logic, detect and fix bugs much earlier to save time in the long run, and ensures the new pieces of code will be compatible with the rest of the code base.
How we delivered a successful project to Rejoiner
The keys to a successful project are often a combination of technical knowledge, skills, experience, and soft skills, (such as communication, trust, and a mutual commitment to achieve success).
Here are three main areas that allowed us to deliver a successful project to Rejoiner:
Our strong cooperation with the Rejoiner Team
We’ve built a strong relationship with the Rejoiner team as their Technology Partner.
- We provided the Rejoiner team with full transparency into their platform’s progress and encouraged them to be constantly involved.
- We kept the communication channels open and were responsive in answering questions and queries.
Our experience in building analytics platforms
The fact that the Rejoiner platform was closely connected with our areas of expertise greatly impacted the success of the project. Our experience allowed us to:
- Easily solve problems that we’d come across in the past.
- Develop the platform quicker by applying our skills and experiences gained from previous, similar projects.
- Quickly understand the project’s requirements and limitations, which resulted in us starting the project sooner and maintaining a fast pace of development.
Our proactive and agile approach to software development
Our agile approach to software development enabled us to:
- Identify potential issues early, which allowed us to either solve them or avoid them completely.
- Quickly change and improve the project’s direction when better solutions became available.
- Suggest better solutions to Rejoiner that would allow us to deliver a better result.
To date, Rejoiner’s customers have generated over in revenue.
Rejoiner has attracted a number of high-profile clients:
The platform has helped its clients recover over 225,082 abandoned carts.