Clients often come to us with a software idea that will modernize or even revolutionize the way their industry does business. Once they see first hand the impact that their software will have, they start to think about offering the software to others in their industry. To do so, they will ask us to incorporate white labeling into the product.
If the term white labeling is new to you, the concept is fairly straight forward. By incorporating white labeling into your product, you allow others to use your product as their own, so it looks as though the software is created and owned by them to both their internal staff and their customers.
White labeling is a great idea when creating a new product, but what software owners may not realize is that there is a lot more to adding white labeling than meets the eye.
In this article, we give you a behind the scenes look at what white labeling means for a software product and why it is better to consider building white labeling into your product from the start.
Software Design Considerations for White Labeling
The goal of white labeling is to implement the needed configuration and architecture in your app so that it can:
- Look and feel like it is owned by your client with their branding, imagery, and text
- Be configurable and customizable in key areas so that it can be adapted to your customer’s needs
- Keep your client’s data separate and secure from other clients
- Be scalable and performant as more and more users access the system
- Be robust with adequate business continuity and failover systems in place
Below we look at these considerations in more depth.
The first consideration is branding. How will you incorporate your client’s logo, font, images and colors into your product? How will these items be set up when a client comes on board? Will it be done behind the scenes by your team or through a set-up process that the client goes through and can continue to administer later?
If it is a web application, how will you handle the URLs so that it appears like the application is hosted by them, not you?
Configuration & Extensibility
Each of your clients will have a unique way of running their business and using your product. To be more ‘sticky’ and to better fit the uniqueness of your clients, you may want to consider how your product can be customized, configured and extended outside of brand, look, and feel.
Can clients change reports, or integrate their own third party services like payment gateways and credit check providers? Will you allow them to modify certain processes or forms to add custom fields so they can track data that is important to them? Can clients build external systems that interact with your product through an Application Programming Interface (API)?
The third consideration is how to segregate the data of different clients who are on the same system. This is often called a multi-tenant model as multiple clients are occupying the same software application at the same time.
For example, Client A’s data will be stored in the same database as Client B’s and Client C’s data. How do you ensure that Client A can not see Client B’s data and vice versa?
When a user logs in, how do you associate their account to Client A vs. B or C?
Tieing a user to a particular client and segregating client data is something that the entire application needs to understand. Below is just a few examples of how an application needs to change to incorporate a multi-tenant model for white labeling.
- The data model needs to be able to tie each piece of data to a specific client
- The login logic needs to know how to identify which client a user is associated with
- There needs to be branding logic that knows how to display the correct logo, style sheets, images, and text
- Each page or function of the application needs to evaluate the security client-specific security setup for that user and his or her associated groups
- Based on the client, the system should evoke any client-specific customizations whether that be in displaying additional fields, forms, menu items, workflows, etc.
- All available APIs need to request the information that identifies the client so that the responses can be client specific
When you add multiple clients to an application, there are several additional roles and levels of security that your application needs to consider. Depending on the type of application you offer, your clients will want different users to have different levels of access.
Clients may need admin users who can configure the product without needing your help, and take care of common maintenance tasks for their users like forgotten passwords or enrollment.
Your help desk users may need to access all clients and their user accounts, but not have the same functionality as the users themselves. To better respond to client and/or user help questions, you may consider having functionality where call desk users can ‘log in’ as someone to see what they are seeing, but again have limited capabilities to take action on their account.
You may also want to consider specialized roles and security for super admins, development operations, guests, auditors, company owners, etc. The type of security you offer will depend on your product and the needs of your client. Once you have defined your system’s security needs, these groups, roles, and permissions will need to be weaved throughout the entire system so that each piece of functionality knows how to behave based on the particular functionality and client settings for that user.
Scalability & Robustness
High-performance cars tend to have stronger brakes, more controlled steering, and better aerodynamics to help handle the stress of high-speed driving. The same holds true for your system. As the number of concurrent users grows, and as the number of data transactions per second increases, your system will need better ways of handling the load so that it does not slow down and create a negative impact for your users.
There are both software and hardware considerations to build an application that can scale and be robust under load. Most of the design and architecture principles for scale are beyond the scope of this article, but we list a few below to give you an idea.
If your system has reporting capabilities, you will want to consider a data warehouse solution to move your reporting system off of your transactional database. You may want to consider batching some of your heavier processes or implementing a message queue technology like Kinesis to allow for better parallel processing of high data loads.
You will also want to evaluate your infrastructure and look at the number of servers (virtual or physical), load balancing, hosting in multiple zones, failover, and disaster recovery.
Monitoring your system from both the inside and the outside also becomes increasingly more important. It isn’t just enough to know your server is online and your database is online. You want to know if your application is responding the way it should in the timeframe it should so you can cut off any issues at the pass.
White labeling is a great idea when you have a software product that can benefit others in your industry. Although white labeling can be added after the fact, it is a bit like re-plumbing a house after it has been built. Each part of the application has to know how it should act differently based on the user and that user’s associated client. Branding, client-specific configuration and security are all things your application may consider different when it comes to white labeling vs. when it was written for your company alone.
In addition, because more users will be on your system and that number may continue to grow, making sure your application is primed to scale and has a robust architecture and infrastructure around it are critical to your success.
If you would like to learn more about white labeling in general or with regards to your specific product, then let us know. We have helped dozens of companies implement white labeled solutions both from the start and after the fact.
The 5 Pillars Of A Successful Software Project
We want to help every software project begin on solid ground. In The 5 Pillars Of A Successful Software Project, we share the five essential ingredients of every software project.