What is a Headless CMS?
A headless content management system (CMS) is a CMS that is backend-only. What that means is that a headless CMS has its focus solely on the administrative interface for content creators, the handling of collaboration and content workflows, and the configuration of content into taxonomies; it doesn’t deal with presentation layers, templates or design of a site.
In a traditional CMS you have a body and a head that is dependent on each other, where the body is the backoffice and the head is the presentation layer, where you can see how your content will look to your users. These are connected and coupled together, so when you create or edit content in your backoffice - your CMS’ body - you can see how it looks in the frontend - your CMS' head. This is the best and easiest way to work with a website, since the coupling of body and head makes it easy to preview and publish content to your website.
This is very different in a Headless CMS, where you do not have this relationship between body and head. The reason is simple - the head is completely cut off from the body (thereby the name headless). That means you are left only with a backoffice, where you can create all the content you desire, but do not have a built-in function to preview your content through the CMS.
Why use a headless CMS, if it just cuts off functionality?
If you are only creating and maintaining content that has one head (a website for example) then a headless CMS might not be the best solution for your needs. But if you have multiple heads, e.g. a website, mobile app, smartwatch and POS screen, then updates to your content has to be done in multiple different places. This can be solved by switching to a Headless CMS.
Another reason to go Headless is to give your front-end developers the freedom to choose any language or platform they prefer to display the content.
Hit publish - your content is now live everywhere.
Frontend agnostic CMS
One of the main benefits of going Headless is that you can build all your content on one platform and have it ready to be attached to any number of heads that you desire. By using a Headless CMS you can focus on the body, that is, on the quality content you’re sending out on multiple devices and have it update on all the heads you attach. If you need to make updates to your content you no longer have to worry about updating it several places. With a Headless CMS all you have to do is update it once and hit publish - then it will update everywhere.
Since the CMS is frontend agnostic, your front-end developers can build heads for different platforms or devices and attach them all to the same body without worrying about compatibility issues across devices or systems. Often the only requirement to a frontend is that it supports HTTP. This also means that the body and the head does not need to be using the same platform or language and there are no strict restrictions from the CMS for the front-end developer to worry about.
If your back-end developers prefer to use one language for the body and your front-end developers prefer a different one for the head, then they can easily do that by using a Headless CMS. This also means that your content will be shown as your front-end developers want it to on everything from websites and apps to billboards and smartwatches - and you can be sure that the content is the same across all platforms, since all the content is created in the same CMS.
The core feature of a Headless CMS is the architecture of the technology. Headless Architecture is in essence the split between the raw content management and the content presentation. All content management - creation, updating and deleting - is handling by the Headless CMS, but is not coupled with the frontend presentation of the content. Because the Headless CMS platform doesn't handle any content presentation, it's necessary to have another platform to handle that part.
So if you go with a Headless CMS, the headless architecture demands that you use (at least) two different platforms: The headless CMS for handling all of the content and a frontend platform to present the content.
How does a Headless CMS work?
A Headless Content Management System is all backend and is essentially a content repository built from scratch, that you fill with all the necessary content. Since it has no frontend layer, the content built will simply be waiting in your backend until it is used by one or more heads. So if you do not attach a head to display the content it will not be visible anywhere - neither to preview nor live.
In the backend of a Headless CMS you have the essential functions to create, read, update and delete (CRUD) content, but that is also all you can do. When you go headless you will no longer get a nice WYSIWYG editor or any templates for your content, which means previewing your content is not an option.
To be able to preview any of your content, you will need to attach a head (or multiple heads). Connecting a head is done through a RESTful API, where the content is made accessible from the Headless CMS. To access the content a head has to make calls to this API, which enables the content to be displayed on the given device. That means the content created is idle until any API calls are made from a head and it will not actively be distributed or made viewable without a head specifically calling for the content to be displayed.
Is a Headless and Decoupled CMS the same?
Headless has obvious differences from a traditional CMS, but is often compared to Decoupled CMS' (sometimes referred to as Decoupled Architecture). This is not without reason, since a Decoupled CMS is closely related to a headless CMS as they share the same independence from the head.
While the basic principles behind the two are the same - a body communicating with the head through an API - there is one key difference between the two. Whereas a Headless Content Management is completely headless, a Decoupled CMS is a hybrid of a headless and a traditional CMS. They are both API based CMS', but a Decoupled CMS also includes a default content publishing frontend.
This effectively means that a Decoupled CMS has more frontend features included. The backend and frontend of a Decoupled CMS is not “coupled” through a database like a traditional CMS, but the two parts do communicate through API calls.
By making these API calls you are able to use simple templates to see how your content will look and actually publish your content and not just make it available through an API.
To simplify the difference, a Headless CMS can be seen as reactive, where it only displays content when API calls are made. A decoupled CMS on the other hand is proactive, as it makes content visible through a specified delivery environment. The power of a Headless CMS is the flexibility and control over your content, that is unmatched by traditional and decoupled CMS’.
What is an API-first/API based CMS then?
An API-first or API based CMS is essentially a pure Headless CMS, which does not offer any form of preview or frontend functionality. But any headless CMS - even a decoupled CMS - can be called API-first, as they both rely on APIs to deliver the content to the frontends. Most modern Headless solutions today offer some level of previewing your content, which lowers the technological barrier for working with it. This is especially important for marketers, who will need to preview content to ensure it looks right - on any device - before publishing it.
Headless CMS security
One of the key concerns for anyone using a CMS - Headless or not - is security. So naturally it's worth it to ask: Is a Headless CMS secure?
While it can vary greatly depending on an individual level, on an overall level the headless architecture makes a Headless CMS more secure than a normal CMS.
The first reason is due to the backend and frontend being decoupled. This effectively means that any security flaws that might be exploited in the frontend code won't mean a security breach in the backend application. These are separated by an API and will often be hosted on two different servers. So even if the frontend code is flawed, the most that will be exposed is the API. And since that is mostly read-only, it won't allow anyone to create, edit or delete any content from the Headless CMS.
And the second reason is simply due to the flexibility and options you get yourself to increase security if you find it necessary. Since the backend and frontend are separate applications you can choose to pull them further away from each other and add security layers in between. This will effectively hide your Headless CMS behind an extra security layer of code and make it even harder to breach.
When should I use a Headless CMS?
The decision of Headless CMS vs. Traditional CMS depends on your needs and how you are going to use it.
But let us be clear - if you are only looking to create a beautiful website then headless is not the best fit for you. For that you should still use a traditional CMS such as the Umbraco CMS.
If you are looking to power other types of websites such as Single Page Applications or making your own application for a smart home device, then Headless CMS is the way to go. The Internet of Things (IoT) world is moving at the speed of light and new devices are showing up faster and faster. To be able to deliver a truly great experience for all of these new devices it is important to have a CMS that does not hold you back.
By going headless you can concentrate on creating great content for your users and let your designers make it fit perfectly across all platforms. This is why the headless technology is built for omnichannel, where one update to the content is instantly published across all your devices and displays.
Ready to try Headless?
Do you want to give Headless a go? Then you should try Umbraco Heartcore - our very own Headless CMS.
Umbraco Heartcore is everything you love from our friendly CMS and with the new flexibility of a headless architecture, that enables you to build amazing things.
With Umbraco Heartcore you get the best of the Umbraco CMS and Umbraco Cloud combined the added flexibility of the Headless technology.
Umbraco Heartcore is supported on Umbraco Cloud and was released in December 2019.