Insights: Kim Domenick

Contentful, Cosmic, Dato or Prismic? A headless CMS Comparison

You’ve decided to decouple, you’re building your stack, and the options are limitless — but now you have to choose.

Published
April 27, 2021
Contributor
Kim Domenick
Senior UX Engineer, Engagement Practice
Reading time
9 min

This comparison was run in April 2021. Plans and prices at all four platforms have changed since — check their pricing pages for the current numbers — and Salesforce has announced its acquisition of Contentful. What has held up is the method: how to test a headless CMS for editor experience, content modeling and integrations before you commit. Our read on the Salesforce acquisition is its own piece.

You’ve decided to decouple, you’re building your stack, and the options are limitless - oh, the freedom of escaping the LAMP square and the boundaries of the conventional CMS! Utilities that were once lumped together into one unmoveable bundle can now be separately selected, or not selected at all. It is indeed refreshing to pick and choose the individual services best fitted to your project. But now you have to choose.

One of those choices is your backend content storage. Even though decoupling means breaking free from monolithic architecture, certain concepts persist: content modeling, field types, and the content editor experience.

I recently evaluated four headless CMS options: Contentful, Cosmic, Dato, and Prismic. Prior to that, I had no experience with any of them. Fortunately they all offer a free plan to test and trial their software. For simpler projects, that may be all you need. But if not, each CMS offers multiple tiers of features and support, and costs vary widely depending on your requirements.

I was tasked with finding a CMS and plan that met the following specs: - 10 separate content editors - Multiple editor roles (admin, contributor, etc…) - Draft/scheduled publishing, with some sort of editorial workflow, even as simple as limiting a role to draft-only status

Although this doesn’t seem like a big ask for any CMS, these requirements eliminated the free plans for all four services, so cost became a factor.

Along with cost, I focused my evaluation on the editor experience, modeling options, integration potential, and other features. While I found lots of similarities between the four, each had something a little different to offer.

It’s worth mentioning that development is active on all four CMSs. New features and improvements were added just within the span of time it took to write this article. So keep in mind that current limitations could be resolved in a future update.

Contentful

Contentful’s qualifying plan included 10 content editors and 2 separate roles. There was no editorial workflow without paying extra, but scheduled publishing was included.

Terminology

A site is a “space” and content types are “content types.”

What I love

The media library. Media of many different types and sources - from images to videos to documents and more - can be easily organized and filtered. Each asset has a freeform name and description field for searching and filtering. And since you can provide your own asset name, you’re not stuck with image_8456_blah.jpeg or whatever nonsense title your asset had when you uploaded it. Additionally, image dimensions are shown on the list view, which is a quick, helpful reference. Contentful also supports adding media from sources such as Google Photos and Facebook, not just the files on your computer.

RUNNER UP

Dato’s Media Area offers similar filtering and a searchable notes field.

What I like

Commenting. Every piece of content has an admin comments area for notes or questions, with a threaded Reply feature.

My Views. My Views is an option in the content navigation panel. With a single click, you can display only content that you created or edited - very convenient when working with multiple editors and a large volume of content.

What could be better

Price structure. Contentful was the premium option of the four if your project needs didn’t allow you to use the free/community plan. You get a lot of features on the paid plans, but there’s a big jump between the free plan and the first paid tier.

Cosmic

Cosmic’s qualifying plan included 10 editors and 4 predefined roles. It had draft/scheduled publishing, and individual editor accounts could be limited to draft status only.

Terminology

A site is a “bucket” and content types are “object types.”

What I love

Developer Tools. Developer Tools is a handy button you can click at the object or object type level to view your REST endpoint and response. It also shows other ways (GraphQL, CLI, etc.) to connect to a resource, using real code that is specific to your bucket and objects.

RUNNER UP

Dato has an API Explorer for writing and running GraphQL queries.

The Slack Community. The Cosmic Slack community offers a convenient way to get technical support - in some cases, even down to lines-of-code level support - with quick response times.

What I like

View as editor. This is a toggle button in the navigation panel to hide developer features - even if your account is assigned the developer or admin role - allowing you to view the CMS as the editor role sees it. This is useful for documenting an editor’s process or troubleshooting their workflow.

Extensions. Cosmic provides several plug-and-play extensions, including importers for Contentful and WordPress content, as well as Algolia Search, Stripe, and more. I tested the Algolia extension, and it only took minutes to set up and immediately began syncing content to Algolia indexes (though at the time, some field types didn’t pass from Cosmic to Algolia). You can also write your extensions and upload them to your account.

What could be better

Price structure. I found Cosmic’s pricing structure to be the most confusing, with extra monthly charges for common features like localization, backups, versioning, and webhooks. It’s hard to know what you’ll actually pay per month until you add up all the extras.

Content model changes. Changing the content model after you’ve created or imported a lot of content is tricky. Content model changes don’t flow down to existing content without a manual process of unlocking, editing and re-publishing each piece of content, which can be very inefficient and confusing.

Dato

Dato’s qualifying plan included 10 content editors and 15 roles, with configurable options to limit publishing rights.

Terminology

A site is a “project” and content types are “models.”

What I love

Tree-like collections. Dato lets you organize and display records in a hierarchical structure with visual nesting. The other CMSs give you roundabout ways to accomplish this, usually requiring extra fields. But Dato lets you do it without altering the content model. And creating hierarchy is as simple as dragging and dropping one record under another, making things like taxonomy a breeze to build.

RUNNER UP

No other CMS in this comparison offers hierarchical organizing quite like Dato, but Cosmic provides a parent field type, and Prismic has a documented strategy for creating hierarchical relationships.

What I like

Maintenance Mode. You can temporarily disable writes on your project and display a warning message to logged in editors. If you need to prevent editors from adding/editing content - for instance, during content model changes - this is a useful feature.

What could be better

Field types. Out-of-the-box Dato doesn’t provide field types for dropdowns or checkboxes. There’s a plugin available that transforms a JSON field into a multiselect, but it’s presented as a list of toggles/booleans rather than a true multiselect. And managing that field means working with JSON, which isn’t a great experience for content editors.

Dato is also missing a simple repeater field for adding one or more of something. I created repeater-like functionality using the Modular Content field type, but this feels overly complicated, especially when every other CMS in my comparison implements either a Repeater field type (Cosmic, Prismic) or a multi-value field setting (Contentful).

Prismic

Prismic’s qualifying plan included 25 content editors, 3 predefined roles, draft/scheduled publishing and an editorial workflow.

Terminology

A site is a “repository”, and content types are “custom types.”

What I love

Field types. Prismic gives you 16 unique field types for modeling your content, but it’s not the number of types that I love; it’s the particular combination of options: the dedicated Title type for headings, the Media link type, the Embed type, the Color Picker. Plus, the UI is so intuitive, content editors know exactly what they’re expected to do when populating a field.

Take the Title type for example. If you need a heading field in the other CMSs, you’d probably use a plain text or rich text field type. Using rich text almost guarantees you’ll get unwanted stuff (paragraph tags, in particular) wrapped around whatever heading the editor enters. Using plain text doesn’t let the editor pick which heading they want. Prismic’s Title type field solves both of these problems: you choose which heading tags the field allows, and the editor picks from those.

RUNNER UP

This is a tough one, but I’m leaning toward Contentful. What they lack in the number of available field types, they make up for in Appearance settings that allow you to render a field type to the editor in different formats.

Plan structure. Unlimited documents, custom types, API calls and locales were all included in the mid-tier plan, and Prismic offered more packages and support tiers than any of the others.

What I like

Slices. Slices are an interesting addition to back-end content modeling, because they’re essentially components: things you build on the front. Prismic lets you create custom components, or use their predefined ones - blockquotes, a list of articles, an image gallery, etc… I admit I didn’t test how these components render on the front-end, but Slices deserve further exploration.

What could be better

Integration options/plugins. Although Webhooks are included in all of Prismic’s plans, there doesn’t seem to be any development of plugins or ways to quickly extend functionality. Every other CMS in this comparison offers simple, click-to-install extensions and integrations to common services.


A note on Front-end Frameworks

A headless CMS, by simple definition, is a content storage container. It does not provide the markup that your website visitors will see and use. Therefore, your project planning will include choosing and testing a front-end system or framework, such as Gatsby JS. It’s important to find out early in the process what, if any, obstacles exist with connecting your choice CMS to your choice front-end.

At Pare (formerly Oomph), we’ve successfully used both Contentful and Cosmic with a Gatsby front-end, and Gatsby plugins exist for Prismic and Dato as well. Gatsby has since moved into maintenance under Netlify; today the same role is filled by frameworks like Next.js and Astro.

Summary

As with any decoupled service, your headless CMS choice will be determined by your project’s distinct requirements. Make sure to build into your project plan enough time to experiment with any CMS options you’re considering. If you haven’t worked with a particular CMS yet, give yourself a full day to explore, build a sample content model, add some content and media, and test the connection to your front-end.

Does a clear winner emerge from this comparison? I don’t think so. They each succeed and stand out in different ways. Use this article to kickstart your own evaluation, and see what works for you!

First published as Oomph, Inc. Oomph is now Pare & Co.

Contributor

  • Kim Domenick

    Kim Domenick

    Kim Domenick is a senior UX engineer in the Engagement practice, working in Drupal, SASS and front-end delivery and contributing to Drupal as kdomenick. Her builds include the Visit California AI trip planner and the Wingspans career platform, and she spent sixteen years in healthcare as a programmer analyst and web developer before joining.