This custom full-feature CRM system was built for a Turkish Marketing Startup based in Istanbul, Turkey. Thanks to its well-designed architecture, this CRM system is a highly extensible and maintainable software system that can be easily and quickly adapted to the new and changeable requirements of a marketing company in a very competitive business environment. Its architecture is completely object-oriented, and it has been fully developed based on MVC design pattern. Its core is based on TPS framework, a PHP framework which has been developed for implementing extensible, flexible, and highly customizable business applications.
This CRM system can handle many complexities including but not limited to Localization and Multi-Language usage, Flexible Access Control Management, User Management, Customer Management, Contact Information Management, Product Management, Request and Order Management, Event Handling and Event Reports for orders, customers, users, and products, Agent Management, Shipping Management, Landing Page Integration, S2S Post-back Integration (with the Referrers), API based Integration, Affiliate Accounts and Management, Conversion Policies, various types of Report Generation Tools, considering non-functional features and requirements including Scalability, Reliability, and Security.
Leads are generated in the system either directly through the integrated landing pages or are entered into the system by other third parties through the system API. Generally, a lead consists of customer full name and phone number. The generated leads can be approved by administrators and converted to orders, and then the created orders can be assigned to different agents to start processing them.
Customers are separated from orders in the system. Each customer can have more than one order over time, and a customer can be assigned to an order. When agents start processing a new order, they can use the "Find Customer" tool which helps them to find the customer of the order among all existing customers based on the lead full name and phone number. If there is already such a customer in the system, they can assign it to the order, and if there is not that customer information in the system, they can create it as a new customer. Customer profile information can be saved in the system in multiple languages that means each customer can have more than one profile in different languages. Each customer can have more than one contact information. Contact information can also be multi language.
When an agent gets the approval of customers for their order so that the order items can be sent to the customers, if the shipping information of a customer does not already exist in the system, the agent must create it as a new contact for that customer. Then the agent must select one contact from the customer's contacts list for shipping purpose, the contact which has been approved by the customer. Then that contact will be assigned to the order and submitted to the shipping department for shipping related processes.
The quality control and shipping managers can check and inspect the orders approved and submitted by the agents for shipping, and if they approve them, then the orders will be sent to the shipping queue in the system. In a predetermined time during each working day, the excel export of the orders existing in the shipping queue is created by the shipping manager to be sent to the shipping company, and then the status of those orders will be changed to shipped. The system can automatically get the shipping status of the shipped orders by connecting to the server of the shipping company through its corresponding API. Then the final status of the shipped orders whether it is delivered or undelivered can automatically be obtained and set by the system.
Products are also created in the system as multi language entities, and they can be organized in hierarchical groups. Product groups are also created in the system as multi language entities, and they can be organized in a hierarchy. Multi language entities can have more than one profile in different languages. Customers and contacts as mentioned above are also multi language entities. Departments which can be assigned to the users of the system are also multi language entities which can be organized in a hierarchy. It is also possible to attach files and images to the profiles of customers, products, product groups, and departments. The attached images might be automatically cropped and optimized by the system based on the system configuration parameters before they are saved in the system.
For each order, the agents can easily find a product from a list to add it to that order. They can add more than one product with any amount to each order. The final subtotal of the order will automatically be computed by the system based on the price of the products. But the agents can also manually set the subtotal and discount of the order, and then the total of the order will automatically be computed by the system. The price of the products and the value of orders can be easily viewed and processed in multiple currencies. The main report generation tool allows changing the currency to see the revenue and cost values in different currencies.
The web address of the integrated landing pages and the address of the API leads are stored in the system if they are sent by the client apps. If the lead requests contain some new referrer information, that referrer information will also be stored in the system. The system can generate various types of reports for every referrer or landing page.
Affiliate entities can be created in the system, and then landing page addresses existing in the system can be assigned to them. For each landing page of an affiliate, a payout value can be set in any supported currency. That payout will be paid to that affiliate for each conversion occurring for the leads come from that landing page. Then the system can automatically compute the total revenues of the affiliates in various time periods and separately for each landing page assigned to them.
User accounts can be created in the system in one of the two classes "Employee" and "Partner". Also, a user group must be assigned to each user that determines what information that user is authorized to access and what actions it is authorized to do in the system. User profiles are also multi language, and users can have more than one profile in different languages. Also, users can have more than one contact information in different languages. Also, users can attach some files and add their photo to their profiles. Landing pages, referrers, or affiliate entities can be assigned to partner accounts, and then those partner users can see the leads and orders come from the assigned landing pages or the landing pages of the assigned affiliate entities or can see the leads and orders referred by the assigned referrers. The partner users to whom some affiliate entities have been assigned can see their revenues and statistics in various time periods.
All events of any type including create, update, and delete in orders, customers, products, and users are recorded in the system and can be easily accessed and reviewed at any time in the future. So, in the system it is always clear which user at what time has caused which changes in which fields of orders', customers', products', and users' data. Also "Check in" and "Check out" actions have been implemented in the system to prevent editing entities such as orders, customers, and products by more than one user at the same time.
An almost full localization is supported by the system including languages, currencies, countries, zones, cities, and districts or areas. The system is multi language at its core, and new languages can be easily added to the system. New countries, zones, cities, and districts can be added to the system to be easily used in creating the contact information of customers or users in the system. New currencies can be added to the system to be easily used for setting the price of products and the value of orders.
This CRM System has been developed based on TPS Framework that is a highly extensible and maintainable software development framework. The system is highly scalable and has a good performance considering the large amount of data which has been being processed and stored in the system during about one year after the marketing company has started using this system.