When you have a growing business, it’s important to track all your clients’ details in one place. But just keeping it saved in a document is not enough, as there is a risk to loose it. So when there are a lot of contact details, there should be a CRM system to have all needed contacts along with a growing number of leads in one place.
New system of Project Manager CaRaMel now solves such problems:
- organization of all Company contacts;
- differentiation of contacts by type and source;
- assignment of clients to proper Account Managers;
- notifications/reminders to Sales associates to follow up with prospects;
- status tracking of every lead;
- communication with clients directly through the system;
- decreased time spent on email communication;
- report on sales team KPIs.
Now none of your contacts can be lost, as our back-end development team took care of the lead tracking system CaRaMel. If you are ready to scale your business to the next level, get in touch with us to discuss the CRM development for your business: https://mobilunity.com/contact-us/
Manage Your Internal Sales - XRM Development Project
DEVELOPMENT CASE STUDY
A story of building a custom CRM that fully
covers internal Sales needs and adapts to any
“It was a complex project, but I loved
how we dealt with it!”
“It was a CRM system development
project that was based on our own
experience of system usage for
in-house needs. The step-by-step
improvements led us to excellence,
but we never stop improving and
provide custom CRM development
for customers’ projects.”
As an outsourcing company that deals with a large
number of clients daily, the Mobilunity Sales team
faced the problem of tracking those clients in a way
that was simple and non time-consuming. Our story
starts years ago, with a simple spreadsheet that the
team used to keep track of leads and clients via
Google Drive. The ﬁle was growing exponentially and
within a year was unable to provide answers to a
number of important business questions.
The desire to have all contacts along with a growing
number of leads organized internally led to CaRaMel,
our custom CRM development project. Key problems
the new system had to solve included:
With the motto “no contact is lost” in mind, our back-
end development team started crafting the product,
what would be the beginning of our new lead man-
2 Backend PHP Developers
1 QA Engineer
Organization of all Company contacts
Differentiation of contacts by type and source
Assignment of clients to proper Account Managers
Notiﬁcations/reminders to Sales associates to follow up
Status tracking of every lead
Communication with clients directly through the system
Decreased time spent on email communication
Report on sales team KPIs
As with any project, our Project Manager began
researching and comparing existing CRM solutions on
the market. We looked at the industry giants and deﬁned
what our Sales team might be lacking with those client
THE CASE STUDY
Requirements Zoho Hubspot Bitrix24Insightly
Analytics per project
Analytics per client
records for emails,
closed and opened
up to 10 members -
free, more - $25/user
very simple to
use and similar
from $12/user a
chat, complex UI
free for up to 12
Based on market analysis, feature requests received from research department, and the
needs of our project and sales teams; our Project Manager closed the project deﬁnition
phase with creating a full technical requirements document along with the CRM system
wireframes. It was crucial for the system to be able to handle large volumes of contacts -
currently the database includes over 30 000 contacts, while technically the system is able
to handle over 1 000 000 contacts.
Technical requirements to the lead tracking system
System database architecture
User flow and user stories
Reporting Manager - is allowed to view all clients and
users, as well as generate reports
Researcher - is allowed to create and edit information
about clients, and can manage clients added by users
Manager - is allowed to create and manage all clients
Admin - is allowed to create, edit, and delete information
about all clients, add users, and change CRM settings
The concept of the whole system was based on optimizing sales
processes and promoting interaction of Sales and Account Man-
agement Teams with contacts.
Our Project Manager deﬁned the following user roles for
User proﬁles covered all relevant information including name, email, gender, and position. Client proﬁles
included more detailed information such as the source, Researcher, Account Manager, date of creation,
contact email, phone number, LinkedIn proﬁle, company name, position, industry, and website, as well as
ﬁelds for comments, and an ability to attach ﬁles. Clients were separated by the following types:
Leads (found and added by research team)
with the statuses:
Attempted to contact
Prospects (clients, who agreed to a meeting;
physical or a call) with the statuses:
Potential (clients, who received our
proposal after a call) with the statuses:
Customer (clients, who signed a service
contract) with the statuses:
Inactive & Potential
Inactive & Lost
The ﬁrst version of the customer relationship management system had the following features:
Ability to add new clients and assign them any category
Importation of MS Excel databases
Ability to Filter by date, source, Researcher and Account Manager
Ability to Filter by client statuses
Execution of the logic that changes the status of the client, who is not replying for a week, to Idle
Reports on the number of new clients added and lost within a speciﬁed period
Further versions of the lead follow up system included the development of an advanced calendar
and reporting features along with a separate HelpDesk module. This would enable communication
between users and clients, allow for the creation of email templates, provide functionality to do
mass mailing, deﬁne SLA’a, allow automatic follow-ups to be sent, and receive reminders.
Email attachment wireframe suggested by the Project Manager
The Project Manager deﬁned the custom workflow for the whole CRM project in Redmine in line
with Scrum Agile framework methodology for development, splitting the development into the
Screenshot of the CaRaMel project in Redmine
Our CRM designer suggested mockups to meet the
acceptance criteria deﬁned by the Product Owner, and
focused on creating an intuitive interface for lists and
cards of users, clients, tasks and tags. The UX design for
the CRM was done using Photoshop and presented in
CRM clients list design
CRM clients list design
The project involved 2 PHP backend developers, who
coded it from scratch and who continue to work on
improving it now. Technologies used in the development
of the CRM include:
Yii2 PHP framework due to its fast speed, stability and flexibility.
Apache Lucene-based ElasticSearch was used for quick records discovery.
Thanks to Ajax scripts our Yii developers enabled quick refreshes of data
without the need to reload the page.
MySQL and MariaDB systems were used to manage the databases.
Emailing was implemented through Sendgrid SMTP service, our developers
used its API to send continuous queries and ﬁght spam issues particular to
module to enable the creation of aesthetically appealing emails.
The QA Lead prepared a Master Test Plan and Smoke
Checklist for the CRM project. Along with basic client
and user cards testing our team thoroughly worked out
possible test cases for security vulnerabilities.
Deployment environments included development, testing
and production servers.
CRM clients list design
Custom CRM development lasted 4 months and was quite a challenging experience for the
team. Our backend frontend developers and Project Managers came across the following
To implement convenient email communication, our PHP backend developer had to split emails into threads.
To solve this issue we developed thread identiﬁcation algorithms, which checked every email for the thread
and subject ID and of course emails of users involved into communication.
Slowly loading pages
Our team detected a bug with the theme used in the ﬁrst release of the CRM MVP, which loaded a long list of
contacts on every page, thus, causing issues with the page loading speed. To ﬁx the problem we disabled the
calendar and stopped showing clients on every screen.
Having the whole system depend on one email server always raises the risks of possible downtimes and
even bans, due to the large volume of emails and spam prevention AI algorithms on the server side. To avoid
such issues our team implemented 2 independent mail servers.
Possible SMTP downs
Usage of any third-party service creates dependencies on the service uptime. To be aware of possible SMTP
service downtimes, our CRM developers applied the system of SMTP service status notiﬁcations.
KPIs of any mailing campaign includes a number of replies, the open rate, and click through rate. To have this
information in the CRM our team wrote an algorithm, which retrieves this data through Sendgrid API.
To optimize the work of the research team and diminish the need of manual client data entry into the CRM,
we developed an “Import of contacts” feature. Now any user of the system can download a csv template,
which includes all required columns in the system, and then upload lists of contacts from an Excel spread-
sheet. The system will validate them and automatically create new clients.
CHALLENGES & SOLUTIONS
The New custom CRM system turned out to be a successful project with implementation of
such technologies as:
Despite that fact that the system was developed based on our internal Sales team’s request,
the ﬁnal CRM system is fully customized to the needs of any industry from an ecommerce
startup to large manufacturing corporations.
Yii2 PHP framework
MySQL and MariaDB
Are you ready to scale your sales to the next level? Let’s develop a CRM for
your business together!