Headless CMS - The Best of Both Worlds

A bot without an attached head. Headless, courtesy of Gemini AI

I hate complicating systems for no reason. When I heard about Headless CMSs for the first time I thought it was a tool perhaps useful for Nike in its chase for providing the same content on multiple devices (think desktop, mobile and a smartwatch), but since I had no use for that, and most of my LPs were siloed from one another, I archived the term and moved on with my life.

Months later, though, my system started getting out of hand, mostly due to it not really belonging to anyone. Marketing would create pages, for whatever reason, which were mostly clones of one another, and Engineering would support them. A couple weeks later the experiment for which the landing page was created went out of fashion, and the page was left as a remnant of an idea that was not to be. Funnily enough, I ended up with more of those pages than with real, supported pages. I started inventorying how many pages we had, and ended up with something like 160 landing pages in total, with about 80% of them not really being used. THAT’S CRAZY!!! What’s worse, it was nobody’s job to clean them up, so they remained there, forever.

I started working with my team to think about a strategy to solve this problem. I’m not a huge fan of centralization for multiple reasons, but this seemed like something we should centralize a bit. After all, many of our pages’ sections were coming from a centralized system (think about Privacy Policy and such). We weren’t really exploiting components much since these pages were built on WordPress, so we had a lot of repeated code, and a lot of repeated content. We wanted to kill two birds with one stone on this one.

Enter a Headless CMS

We started playing with Headless technology to see how we could solve this problem. Before it wasn’t possible because the team was in love with WordPress and their page builders, but in reality they couldn’t use the builders as much as they wanted, always needing Engineering’s help, and Engineering was doing a ton of maintenance and drowning on tech debt. We played with a few candidates, like Strapi and Contentful, eventually doing a good POC with StoryBlok. Its SDK allowed us to use whatever frontend technology we wanted (a huge boon for engineers), while the visual editor allowed the marketing team to see the changes of their work in real time. A win-win. Also, the customization of each element seamlessly integrated in the UI was huge. We could enable the team to change whatever “props”/attributes we wanted on the UI, restricting those we thought were dangerous, or overly complex. That allowed us to create custom components in whatever language we desired. One engineer switched all components from Vue to Svelte in a weekend. That’s how simple the integration was!

Why Headless?

Headless worked for my use case because I had a lot of LPs without structure, but when I started paying attention, there was a structure there, just a bit deeper than on the surface. We helped the Marketing team organize their content how we thought it should exist, drafted a schema that would work for all landing pages, and then implemented the pages on that schema. We had a dummy LP running in a week, and a whole site migrated in 2-3 weeks after that. Leveraging a Headless CMS meant we no longer needed to have other microservices just exposing some data via API. After all, that’s what a Headless system is: a database that holds data in a certain structure. We were able to simplify our setup and remove existing backend systems just because we got a simple system that did it all. What’s more, we were able to get rid of WordPress and all its tech debt. That’s a huge boon!

A Headless system might look overly complex, and it is, if you have just a couple LPs to manage. There’s some good tech involved in ensuring it renders as fast as possible, doing as much server side rendering (SSR) as you can, optimizing “queries”, etc., but if your system is large enough (meaning you have enough tech debt), it could be the right solution for you. I don’t think this hammer is good for every nail, but if you have enough nails, it may just be the right solution.