As the platform which runs your website, a Content Management System (CMS) is obviously going to be an important part of your digital strategy. But while this platform is going to be incredibly important in ensuring that your website provides your audience with the information they are looking for and a satisfying user experience, you shouldn’t try to make it do something it’s not designed to do.
At Diagram, we’ve performed a multitude of website redesigns, and the issue of where to store data is one that we encounter often. One type of situation that is particularly common is involves websites which have implemented overly complicated integrations with third party systems, storing an abundance of data within the CMS or e-commerce platform that shouldn’t architecturally have been there.
Why Is This a Bad Idea?
The idea that some types of information should be stored externally might seem counter-intuitive, since one would expect the data that people access through a website to be stored within the website’s CMS platform. However, this often isn’t the case (see below for examples). Trying to make a CMS into something that it’s not designed for can cause issues in the following areas:
Often, when you would like to store a lot of relational data within a CMS, it requires you to store that data in CMS fields that may or may not be indexed properly for ideal retrieval and display on the site. The time that the site has to spend retrieving this custom data will result in slower load times, which will not only result in frustration for its visitors, but can also negatively impact SEO. If you need to store a lot of relational data within the CMS, be aware of how that data is being stored within the CMS database itself in order to prevent website performance issues for occurring.
Forcing a CMS to store data that it is not designed to store can require a great deal of customization, e.g. modifying the CMS database to store database columns that do not exist natively. Since these types of customizations modify the core CMS database structure, upgrading to a new version of the CMS may inadvertently cause those customizations to cease to function correctly, or even hinder the ability to perform an upgrade altogether.
Adding more complexity to the CMS and the data that it stores can lead to issues as the size of the website and the amount of data stored increases exponentially. Many CMS platforms store metadata for each piece of content in every language enabled for the site, and they also track the history of changes to each field. If data is stored within the CMS unnecessarily, the size of the database can grow so large that it not only causes performance issues, but also hinders synchronization across multi-tier environments. Always be aware of how the data is being stored within the CMS database. If you aren’t utilizing a localized language variant, be sure to turn it off to prevent unnecessary storing and tracking of this information.
What Types of Data Shouldn’t Be Stored in a CMS?
While a CMS can most likely be customized to add any manner of functionality desired, it’s important to give careful thought to whether certain types of data should be stored within the CMS, or whether an external system should be used. Here are three example scenarios in which it’s best to store data in a third party system rather than the CMS itself:
E-Commerce Product Data
Depending on the products or services sold on a website, the configuration options that customers will need to choose can become complex, especially when these options aren’t always fully defined at the time of a product’s launch. While some CMS platforms are a good fit for advanced product data (such as EPiServer’s Commerce platform), others don’t allow for this level of configuration. In this case, it might make more sense to store product data in a relational database table rather than try to bend the capabilities of the CMS to accommodate for this configuration.
Being able to offer specific prices to certain customers, such as discounts for long-time members or coupons for people in certain geographical areas, is a common tactic of e-commerce sites, but it can be difficult to handle using only the data that is stored within a CMS. Rather than trying to control every customer’s individual pricing within the CMS platform itself, it is a good idea to store customer data within Enterprise Resource Planning (ERP) and/or Product Information Management (PIM) platforms and sync that data to the CMS. While some CMS platforms natively support customer specific pricing (such as EPiServer’s Commerce platform), others don’t allow for this level of configuration. If they do, it is often so cumbersome to manage that the data itself becomes stale and rarely updated.
Advanced Membership Data
Certain organizations, such as associations, track a lot of data about their members. While it’s best to use a Customer Relationship Management (CRM) or Association Management System (AMS) platform to store this data, some websites try to use their CMS platform as a replacement, storing hundreds of data points about each member within the CMS’s database. This can vastly increase the size of the database, leading to slow performance times. Instead, it’s a good idea to store this data within a CRM or AMS and either tie the website directly into this system using a web service or store information in relational database tables through a nightly sync. This will allow updates to happen as close to real time as possible, while performing them in the system that is most appropriate for them.
The Right System for the Right Function
While companies may be hesitant to spread their data across multiple systems in hopes of avoiding data silos, using each of these systems to do what they were designed for and properly configuring the synchronizations between them will lead to a much more efficient and manageable solution. Do you have any questions about what you should and shouldn’t include in your CMS? Do you need help configuring these systems to work together in a way that will improve your company’s online efforts? Please contact us to speak with a Solutions Engineer, and we can help you solve your problems and make the best use of all the opportunities available to you.