Implementing a CaaS/Headless CMS documentation for the dotCMS Content Management System

Content as a Service (CaaS) #CaaS

Deliver the same content across multiple different platforms, including web sites, web and mobile applications,

dotCMS can be used for CaaS whether or not your web site is actually delivered (presented) using dotCMS. The dynamic ontent features of dotCMS, including presentation for multiple platforms, …, and personalization can be

single-sourced content central content creation and management regardless of the means of delivery

multiple levels of redundancy

  • content platform
  • delivery platform

What is a “Headless” CMS? #HeadlessCMS

Separation of Concerns

Management vs. Delivery

Content vs. Presentation {ContentPresentation}

dotCMS Content Delivery Platform

The built-in dotCMS web server can be used to render dynamic content “on-the-fly” based on various conditions, from platform to user behavior.

All dotCMS content is rendered into HTML by the dotCMS server and then delivered; this is true both when content is accessed as part of a Page and when it is accessed directly. For example, if you access a Widget directly, all code in the widget is evaluated on the dotCMS back-end and pure HTML is delivered.

In addition, content in dotCMS can be accessed in JSON or XML format through the REST API.

This allows you to access fully dynamic dotCMS content from multiple applications and platforms.

Third Party Web Server

AWS S3 Simple Web Server

Static or Dynamic Rendering for Different Platforms

The Static Publishing feature can be configured to deliver different versions of static content to different buckets or endpoints, allowing you to segregate content rendered for different platforms, purposes, and languages automatically.

Dynamic vs. Static Content

One of the most important decisions you must make when implementing CaaS with dotCMS is how dynamic you want the content in your CaaS repository to be when it is accessed from outside dotCMS. dotCMS has powerful features to create, manage, and deliver dynamic content which changes based on different users, conditions, and behaviors (such as Personalization); but these features are only fully available when dotCMS content is retrieved from the dotCMS backend.

There are multiple options for providing dynamic dotCMS content as CaaS content, including:

  • Providing access to fully dynamic content through the dotCMs backend (via the dotCMS REST API for example).
  • Providing static versions of the content through a Push Publishing Static Endpoint.
  • Providing access to some content (such as HTML pages and files) in static form, while providing access to certain types of content (such as ) through access to the dotCMS backend.

For more information on static vs. dynamic content, please see the Dynamic and Static Publishing documentation.

Dynamic CaaS


You can access dynamic content in dotCMS using the dotCMS RESTful API.

Static CaaS

Content Delivery Network (CDN)

CaaS Strategies

There are a number of different ways to implement CaaS using dotCMS. Which strategy is best for your content and your organization will depend on how you plan to use the content, including:

  • What types of content you wish to store and serve from within dotCMS.
  • What level of dynamic content you have and want to support (i.e., what content is served under what conditions, how frequently the content in the front-end content store needs to change, etc.).
  • Which applications, databases, and users/groups need to have access to the content.
  • What format(s) you want to use to store and deliver the content.
  • The quantity of content you need to store and deliver.

The following are several common strategies for implementing CaaS using dotCMS.

File Content Store {FileContentStore}

REST API Access to dotCMS backend

Static Endpoint

JSON Formatted Content


  • Static content served via CDN, dynamic content served via a dotCMS cluster or cloud instance