Websites and content management systems (CMS) have gone through a great evolution over the years. We started with static HTML and evolved to heavy, full-featured CMS, which works as gateways to your website.
Although we achieved progress in terms of how easy it is for non-technical people to create and manage websites, it came at a cost: most of the time you are limited in terms of customizing your site with third-party tools, e.g. an image editor, a web analytics tool or whatever you want to plugin.
These days, the "headless" website architecture is quickly gaining popularity. Headless CMS are decoupled from what is known as "head" - usually a monolithic CMS with lots of features. Here's everything you need to know about headless websites.
What is a headless CMS?
A headless CMS is a back-end-only content management system (CMS). It doesn't require a front-end, as it's designed to deliver content with JSON and REST APIs.
The term "headless" is a play on the word "decoupled." What you do with this content is entirely up to you. You can use external front-ends or custom-built ones running on different devices and platforms.
Content Management Systems (CMS) were introduced to manage websites, replacing old HTML editors. Over time, they have evolved to become a fully-fledged back-end for content publications, complete with options and configurations. The main downside is that the front-end code is usually tied to the CMS. So if you want to change something, you'll have to modify your back-end code first.
This has caused a huge problem for content management professionals, as it's nearly impossible to accomplish custom front-ends in most cases: e.g. try building a HTML email template using an old-style CMS.
A decoupled CMS, or headless CMS, works without a front-end. You can use different front-ends to access data through JSON and REST APIs. They also allow you to build custom UIs tailored for your needs. The main benefit of this type of system is flexible in terms of content publishing.
What Are the Differences Between Headless CMS vs. Decoupled CMS Architecture?
The difference lies in their backend - headless CMS are back-end only, while decoupled CMS have both front-end and back-end. Front-ends can be anything from an HTML email template to an iOS application or touch screen kiosk.
A headless CMS is different from the classic content management system (CMS). Headless CMS are back-end only, while the classic ones have both front-end and back-end.
A decoupled CMS is different from a headless CMS in that it has front-end parts. A decoupled CMS can be part of your website or can have an independent route. It works by simply sharing content via APIs. The decoupled Drupal solution with Angular is one of the more powerful decoupled solutions.
What are the advantages of headless CMS?
Headless CMS offers much better custom functionalities for websites, apps and emails, when compared to traditional CMS. Here are some examples:
Custom front-end can be built easily
You can't do it with traditional CMS simply because they are monolithic systems. Headless CMS delivers raw data in JSON format, allowing you to create any front-end you want - from apps and web services to native app UIs or killer email templates. The only limit is your imagination.
Additionally, headless CMS can be used with content management tools you already know and love, like WordPress or Drupal. It also allows you to take advantage of rich front-end development tools like Node.js, AngularJS, Meteor.js etc.
Big data visualization made easy
You can create custom dashboards using JavaScript frameworks or other types of client-side applications. For example, you can use headless CMS with Google Charts to build data-driven infographics. If you need something more industrial, there's always D3.js - a popular JavaScript library for visualizing data using SVG, Canvas and HTML5 technologies.
Moreover, headless CMS works well with web analytics tools, enabling you to get the most out of your data. You can build custom reports or integrate them into third-party applications like Google Analytics for even more insightful results.
Flexible content delivery
Being able to deliver structured content via JSON and REST APIs opens a door for all sorts of content distribution possibilities. You can take advantage of a wealth of content delivery technologies and protocols, from the traditional website to native apps or emails to push notifications via a web service or mobile app.
When it comes to delivering content on different devices, most organizations (including IBM) agree that a mobile-first strategy is the way forward. There are already many headless CMSs designed with a mobile-first approach in mind, like Contentful and Prismic.io.
Content security is better
As content management becomes more and more complex, many companies resort to storing content in a database. Traditional CMSs don't do that when it comes to the front-end code - all they need is a set of templates and plugins. However, headless CMS can easily be used with databases through their rich API suites.
You can control user permissions by associating them with an API key, which is a common practice when it comes to web security. However, you can also associate user accounts with their social media profiles or local storage IDs - anything that works for you.
Enables simultaneous collaboration
When you have a lot of people editing the same content, things can go wrong pretty quickly. That's why a headless CMS enables simultaneous collaboration among users. They also offer versioning and other advanced capabilities to ensure everything works smoothly.
It also allows for efficient content distribution, making it easier to integrate workflows among different teams. What's more, it helps you keep your data consistent and avoid conflicting changes.
Use Cases for Headless CMS
A headless CMS can be used for pretty much anything - from websites to apps to emails, all the way to native apps and push notifications. Here are some of its biggest use cases:
Websites and apps
You can create any kind of front-end, from websites and web apps to native apps. There are many headless CMSs that offer this functionality, including Contentful, Prismic.io, Apiary.io, StackEdit and others.
Additionally, you can decouple your website or app into services using APIs, which is pretty common with microservices architecture.
Dynamic websites
If you need to update your website's content on a regular basis, headless CMS might be the right fit for you. You can use it as a single source of truth and update the front-end without changing any back-end code.
A good example would be having a blog or an eCommerce site with information that changes frequently. In this case, keeping the content in a headless CMS makes it easier to add new content and update metadata, even daily.
Abundant personalization
Dynamic websites are not the only way you can use headless CMS for personalization purposes - they can be used whenever you need to change content based on user preferences, location or other data.
A good example would be personalizing product recommendations for visitors of an eCommerce website. Since most headless CMSs offer rich APIs, you can update your front-end code without having to touch anything else.
Headless CMS vs Traditional CMS
While the idea of a headless CMS might seem similar to a traditional CMS, there are quite a few differences between them. The most important ones include:
Decoupled content delivery
A headless CMS is decoupled from its front-end code - not all of them do provide templates and plugins, but they all enable you to change the content through an API.
A traditional CMS, on the other hand, needs to be properly built into your website or web app in order to work as intended. This means that all changes go through a back-end user interface (like WordPress' dashboard), which can slow down development and make it harder for developers who are unfamiliar with the CMS to work on it.
On the other hand, with a headless CMS, there's no need for back-end developers - you can focus on front-end development without having to deal with anything else.
Static content delivery
Since traditional websites are more popular than apps these days, this is one of the main differences between headless and traditional CMSs.
Even though you can use a headless CMS for websites, they don't provide much value for static content delivery. That's because the front-end is decoupled from the back-end and making changes requires developing a new backend API, which might not always be worth it depending on how frequently your content changes.
Big Questions to Consider
Every business has unique needs, which means there's no such thing as a perfect solution. That's why, as a rule of thumb, you should ask yourself the following questions before choosing between a headless CMS and a traditional one:
What kind of content do you have?
If your primary focus is on dynamic content that frequently changes, you'll get more value from using a headless CMS. Similarly, if you need to create personalized experiences, headless CMSs are also worth considering.
On the other hand, if you mostly deal with static content (like an online magazine or a blog), using a traditional CMS like WordPress will be enough to care for your needs.
What's more important - speed or personalization?
If speed is your biggest priority, you'll need a front-end app that can handle most of the heavy lifting. In this case, a traditional CMS might not be the right solution, as it's going to be slow and require building a new back-end before making any changes.
On the other hand, if personalization is what you're after - for example, adding content based on user location, preferences or behavior - a headless CMS is the way to go.
How many developers do you have?
If you're still in the process of building your business and don't have much experience working with web technologies, using a traditional CMS will be easier than dealing with API integrations and decoupled content delivery.
On the other hand, if you already have a team of developers familiar with front-end technologies (like React or Angular), getting value out of a headless CMS is easier - they usually provide more stable APIs and are suitable for both back-end and front-end development.