Headless or traditional — which problem are you actually solving?
A traditional CMS owns the page: content, templates and rendering in one system, so an editor changes something and sees the result. TYPO3, Contao and Kirby work this way. A headless CMS owns only the content and hands it to whatever front end you build, so the same text can feed a website, an app and a screen in a shop. Strapi and Contentful work this way.
The cost of going headless is usually paid by the editors. Content becomes fields in a form, and nobody can see what the page will look like until it is built — which is why marketing teams end up asking a developer to publish a landing page, and why headless projects stall.
Storyblok is the tool in this category that refuses that trade. Content is component-based and delivered over REST or GraphQL, but the editing interface shows a live preview of the real page, and editors click the element they want to change. That is why Storyblok is where marketing teams land when a purely headless build has already failed once.
The decision rule: go headless when content genuinely feeds more than one destination. If there is one website, a traditional CMS will be faster to build and much easier to run.
What does self-hosting actually protect you from?
Repricing, discontinuation and acquisition. A hosted CMS can change its plans, its limits or its owner, and your content is on the other side of that decision. Strapi (MIT core), TYPO3 (GPLv2+), Contao (LGPLv3) and Ghost (MIT) can all be run on your own infrastructure indefinitely, and Kirby is self-hosted with a one-off licence.
It also settles the jurisdiction question permanently. A self-hosted CMS holds its content wherever you put it, so there is no processor to assess, no data processing agreement and no transfer analysis. That is the reason TYPO3 and Contao dominate German and Swiss public-sector work.
The cost is that you own uptime, backups, security patching and upgrades. Strapi says so plainly, and adds a warning worth heeding: major version upgrades can require real migration work, so a self-hosted CMS is a commitment to maintaining it rather than a one-time saving.
Storyblok and Contentful offer no self-hosting at all. Both provide EU data residency, which answers the compliance question without answering the ownership one.
Why do public-sector sites in Europe keep choosing TYPO3 and Contao?
Because they solve two requirements that consumer CMSs treat as afterthoughts: permissions and accessibility.
A university or a municipality has dozens of departments editing one estate. TYPO3 runs many sites and many languages from a single installation, with permissions granular to page and field level and workspaces for staging and approval — so a faculty administrator can edit their own pages, in their own language, and nothing reaches production without review. Contao offers the same granularity without the enterprise weight, which suits a municipality rather than a ministry.
Accessibility is now a legal duty across the EU rather than good practice. Contao produces accessible output by default, and TYPO3 has serious accessibility support in core. Retrofitting that onto a CMS whose themes were never built for it is far more expensive than choosing one where it is the starting point.
The third factor is time. TYPO3 has been developed since 1998 and Contao since 2006, both with LTS releases and extended support options — which matters when a procurement cycle assumes the system will still be maintained in eight years.
What does a CMS actually cost over five years?
Rarely the licence. Kirby is €109 once per production site and free for local development, which over five years is a rounding error. TYPO3 and Contao are free. Strapi and Ghost are free to self-host.
The real costs are hosting, maintenance and specialist labour. TYPO3 is complex enough that it usually needs an agency that knows it, and that dependency is the largest line in its five-year total. Kirby and Contao are simpler to run but still assume someone competent is available when PHP needs upgrading.
The hosted products invert this. Storyblok starts free and reaches about €99 a month for teams, rising sharply with team size and traffic. Contentful is the outlier: a free tier and then a jump to roughly $300 a month for Lite, which is the steepest step in this category and catches teams that grew out of the free plan without planning for it.
Ghost(Pro) is about $9 a month with no revenue share, which for a publisher earning subscription income is the cheapest arrangement in this entire comparison by a wide margin.
If you publish for a living, what should decide it?
Who takes a cut, and who owns the relationship with your readers. Substack takes a percentage of subscription revenue permanently, and the reader list lives inside their platform. Ghost has memberships, paid tiers, newsletters and Stripe integration in the core product and takes no revenue share at all — a publisher earning €100,000 in subscriptions keeps €100,000 minus payment processing.
Governance matters as much as the percentage. Ghost is owned by a non-profit foundation, which means there is no owner who can accept an acquisition and change the terms afterwards. For a business whose income depends on the platform, that structural fact is worth more than any feature.
The honest counterweight is discovery. Substack recommends publications to each other and that network genuinely grows audiences; Ghost has no equivalent, so growth is entirely your own work. Ghost supports ActivityPub, which points at federated distribution, but that is not the same as a recommendation engine.
Ghost is also a full CMS rather than only a newsletter tool, with themes and a content API, so the site around the newsletter is a real website rather than an archive page.