(November 2016 - January 2018)
Lorem Ipsuma CRM is a custom, full-featured CRM system built for a marketing startup company 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 changing requirements of a marketing company in a very competitive business environment. Its architecture is completely object-oriented and it was developed entirely according to the MVC design pattern. Its core is based on the TPS framework, a PHP framework developed to implement extensible, flexible and highly customizable business applications.
This CRM system can handle many complexities including but not limited to localization and multilingualism, 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, representative management, shipping management, landing page integration, S2S postback integration (with referrers), API based integration, affiliate accounts and management, conversion policies, and various report generation tools, and it does all these by considering non-functional requirements such as scalability, reliability, and security.
Leads are generated in the system directly through integrated landing pages or entered into the system by other third parties via the system API. Typically, a lead consists of a full name and phone number. The generated leads can be approved by the administrators and converted into orders, and the created orders can then be assigned to different representative agents to start processing them.
Customers are separated from orders in the system. Each customer may have more than one order over time, and a customer can be assigned to an order. When representative agents start processing a new order, they can use the "Find Customer" tool, which helps them find the customer of the order among all existing customers based on the full name and phone number of the lead. If such a customer already exists in the system, they can assign it to the order, and if this customer information does not exist in the system, they can create it as a new customer. Customer profile information can be stored in multiple languages in the system, meaning that each customer can have multiple profiles in different languages. Each customer can have multiple contact information. Contact information can also be multilingual.
Representative agents call the phone numbers associated with orders to get order confirmations from potential customers. If the potential customer confirms the order and the customer's shipping address information is not available in the system, the representative must create new contact information for that customer before the ordered products can be shipped to the customer. The representative must then select a confirmed contact information from the customer’s contact list for shipping purposes. This contact is then assigned to the order and sent to the shipping department for shipping-related processes.
Quality control and shipping managers can check and review orders approved by representative agents and sent for shipping, and if they approve, the orders are sent to the shipping queue in the system. At a predetermined time during each business day, an Excel export of the orders in the shipping queue is created by the shipping manager to be sent to the shipping company, and then the status of these orders is changed to shipped. The system can automatically get the shipping status of the shipped orders by connecting to the shipping company's server via the relevant API. Then the latest status of the shipped orders, whether delivered or not, can be automatically retrieved and set by the system.
Products are also created in the system as multilingual entities and can be organized in hierarchical groups. Product groups are also created in the system as multilingual entities and can be organized hierarchically. Multilingual entities can have multiple profiles in different languages. Customers and contacts mentioned above are also multilingual entities. Departments that can be assigned to system users are also multilingual entities that can be organized hierarchically. It is also possible to add files and images to the profiles of customers, products, product groups and departments. The added images can be automatically cropped and optimized by the system according to the system configuration parameters before being saved to the system.
For each order, representative agents can easily find a product from the list to add to the order. They can add multiple products of any quantity to each order. The final subtotal of the order will be automatically calculated by the system based on the price of the products. However, agents can also manually set the subtotal and discount of the order, and then the total of the order will be automatically calculated by the system. The price of the products and the value of the orders can be easily viewed and processed in multiple currencies. The main report generation tool allows changing the currency to see revenue and cost values in different currencies.
The web address of integrated landing pages and the address of API leads are stored in the system if sent by client applications. If the lead requests contain some new referrer information, this referrer information is also stored in the system. The system can generate various types of reports for each referrer or landing page.
Affiliate entities can be created in the system and then existing landing page addresses can be assigned to them. A payout value can be set for each landing page of an affiliate in any supported currency. This payout is paid to that affiliate for each conversion that occurs for leads coming from that landing page. The system can then automatically calculate the total revenue of affiliates over various time periods and for each landing page assigned to them.
User accounts can be created in one of two classes in the system: “Employee” and “Partner”. In addition, each user must be assigned a user group that determines what information they are authorized to access and what actions they are authorized to take in the system. User profiles are also multilingual, and users can have multiple profiles in different languages. Additionally, users can have multiple contact information in different languages, add some files to their profiles, and add their photos. Landing pages, referrers, or affiliate entities can be assigned to partner accounts, and then these partner users can see leads and orders come from assigned landing pages or landing pages of assigned affiliate entities, or see leads and orders referred by assigned referrers. Partner users to whom some affiliate entities are assigned can see their revenue and statistics over various time periods.
All events, including creation, update and deletion of orders, customers, products and users are recorded in the system and can be easily accessed and reviewed at any time in the future. In this way, it is always clearly visible which user in the system made what changes, when, and in which fields of order, customer, product and user data. In addition, "Check in" and "Check out" actions are implemented in the system to prevent entities such as orders, customers and products from being edited by more than one user at the same time.
The system supports almost complete localization including languages, currencies, countries, regions, cities and counties or areas. The system is inherently multilingual and new languages can be easily added to the system. New countries, regions, cities and counties can be added to the system and can be easily used to create contact information for customers or users in the system. New currencies can be added to the system which can be easily used to set the price of products and the value of orders.
This CRM system was developed based on TPS Framework, a highly extensible and maintainable software development framework. The system is highly scalable and has good performance considering the large amount of data processed and stored in the system after about a year of the marketing company starting using this system.