Professional Email Writing for Client Follow-up Emails
Okay, let's talk about choosing a headless CMS. It's one of those decisions that feels deceptively simple at first, but the downstream effects are huge. Get it

Okay, let's talk about choosing a headless CMS. It's one of those decisions that feels deceptively simple at first, but the downstream effects are huge. Get it right, and your developers and content team will be shipping things faster than ever. Get it wrong, and you're stuck with a tool everyone hates, or worse, a migration project nobody wants to touch.
I've been through this process a few times, from both the content and the technical side. Here's my brain dump on how to do it without losing your mind.
Where this matters most
First off, when should you even be thinking about a headless CMS? If you're running a simple blog or a five-page brochure website, a traditional, monolithic CMS like WordPress or Squarespace is absolutely probably fine. Seriously. Don't overcomplicate things if you don't have to. The whole point of those tools is evidently to bundle everything together—the content backend, the design templates, the hosting. It’s simple and it works.
But you hit a wall with that model pretty fast.
A headless CMS really starts to shine when your content needs to show up in more than one place. The classic example is a website and a mobile app. With a traditional CMS, you'd probably have to manage that content in two separate places. What a nightmare. A headless CMS just provides the content as raw data over an API. Your website can pull it, your mobile app can pull it, your fancy new smart toaster can pull it. The CMS doesn't care what the front end looks like; it just serves up the goods.
This is also a huge deal for teams building with modern web frameworks like React, Vue, Svelte, or Astro. These tools are all about creating fast, interactive user interfaces. Trying to shoehorn them into a rigid WordPress theme is painful. It feels like you're fighting the tool every step of the way. With a headless approach, your front-end developers have total freedom.
They can build the user experience however they want, using the tools they love, and just fetch the content they need from the CMS. This separation of concerns—content management over here, presentation over there—is the key idea.
So, to sum it up, you should be looking at a headless CMS if:
- You need to publish content to multiple channels (web, apps, etc.).
- Your development team is using modern JavaScript frameworks.
- You want more flexibility and control over your front-end design and performance.
- You're building a more complex digital product, not just a simple website.
If you're just running a personal blog, stick with what's easy. If you're building the next big thing, you'll need the flexibility.
How to do it step by step
Alright, you've decided you need one. The market is crowded and noisy, with a new contender popping up every few months. How do you actually pick one? Following a structured process helps you cut through the marketing fluff.
Step 1: Figure out your real requirements.
This is the part most people skip, and it's the most critical. Don't start by looking at features. Start by talking to your team.
- Content Editors/Marketing: What are their biggest frustrations right now? What workflows are slow and painful? Do they need to be able to build landing pages without a developer? Do they need a simple UI, or are they power users who want more control? Do they need a visual preview of their changes? How important is localization?
- Developers: What's their preferred tech stack? How important is the developer experience (DX)? Do they want a simple REST API or a more powerful GraphQL one? Do they care about having a self-hosted option for more control, or would they rather a SaaS product that "just works"? How will they trigger builds when content changes?
Get all of this down in a simple document. Separate the "must-haves" from the "nice-to-haves." Be brutal about it. You might want AI-powered image tagging, but do you need it to get your work done? But your list of must-haves should be short.
Probably not.
Step 2: Make a shortlist.
Now you can start looking at tools. Based on your requirements, you can quickly filter the options.
- SaaS vs. Self-hosted: This is a major fork in the road. Do you want a managed service you pay a subscription for (Contentful, Sanity, Storyblok), or an open-source tool you host yourself (Strapi, Directus)?
- API vs. Git-based: Most popular options are API-driven. But there's a class of CMSs that store your content in your Git repository (Decap CMS, TinaCMS). This is often a great fit for documentation sites or developer-heavy teams.
- Editor Experience: Do you need a true visual editor where you edit content directly on a preview of the site (like Storyblok)? Or is a form-based interface with a separate preview window good enough?
Your goal here's to get from 20+ options down to 2 or 3 serious contenders.
Step 3: Do a Proof of Concept (PoC).
I can't stress this enough: Do not choose a CMS based on a sales demo. Demos are designed to hide all the awkward parts. You need to get your hands dirty.
Take your top 2-3 candidates and give yourself a time-boxed challenge. A week is usually enough. The goal is to build something small but realistic with each one. For example:
- Model and create a "blog post" with a title, author, rich text body, and a featured image.
- Build a simple front-end page that fetches and displays that blog post.
- Try out the editor experience. Have a non-technical person from your marketing team try to create and edit a post. Watch them. Do they get stuck? Is it intuitive?
- Test a key workflow. If localization is a must-have, try setting up and translating a piece of content.
This process will reveal things a demo never will. Or you'll discover weird API quirks, frustrating UI bugs, and surprising benefits. Honestly, one tool might feel great for developers but terrible for editors, or vice-versa. Where does this usually break down? This is where you find that out.
Step 4: Evaluate the "boring" stuff.
While you're doing the PoC, look at the other factors.
- Pricing: Is it predictable? SaaS CMSs often charge based on user seats, API calls, and content records. Try to model your expected usage. A plan that looks cheap today could get very expensive as you scale.
- Support: What kind of support do you get? Is it just community forums, or can you get a real person on a video call if your site is down?
- Security & Compliance: If you're in a regulated industry, this is huge. Do they have the certifications you need?
- Community & Ecosystem: Is there an active community around the tool? Are there pre-built plugins or integrations for things you might need later? A healthy ecosystem is a good sign of a healthy product.
Step 5: Make the decision.
Gather all your findings from the PoC and the "boring" stuff, which is why this matters. A basic scorecard can help, where you rate each CMS against your requirements and give each requirement a weight.
Present your findings to the stakeholders. Because you involved them in Step 1, this should be a conversation, not a battle. You'll be able to say, "We chose Option A because it was the best fit for the marketing team's visual editing needs, and the developers confirmed its API is easy to work with." It’s a decision grounded in real testing, not just opinion.
The Core Trade-offs: What Really Matters
When you're comparing options, you'll find that a lot of the decisions boil down to a few fundamental trade-offs. Or understanding these will help you focus on what's actually different about the products, instead of getting lost in feature lists.
1. SaaS vs. Self-Hosted
This is the biggest one. It's the classic "buy vs. Build" dilemma, but for your content infrastructure.
- SaaS : You pay a company a monthly or annual fee, and they handle everything: the hosting, the uptime, the security patches, the updates. Contentful, Sanity, and Storyblok are big players here.
- Pros: It's fast to get started. You don't need to worry about server maintenance. They often have global content delivery networks (CDNs) for fast performance out of the box. Support is part of the package.
- Cons: It can get expensive, especially as your team or content grows. You have less control over the underlying infrastructure. Data privacy can be a concern for some companies, as your content lives on someone else's servers. You're locked into their platform to some degree.
- Self-Hosted: You take an open-source piece of software and run it on your own infrastructure. Strapi and Directus are the leaders in this space.
- Pros: You have total control. You can modify the code if you need to. It can be much cheaper from a software-licensing perspective. Your data stays within your own environment.
- Cons: You're responsible for everything. Security, updates, backups, uptime—it's all on you. This requires dedicated developer resources. It's a bigger upfront investment in time and expertise.
My take? Most teams should start with SaaS. Or the convenience is usually worth the cost, and it lets you focus on building your product, not managing infrastructure. Only go self-hosted if you have a specific, compelling reason, like strict data residency requirements or a team with deep DevOps experience that can handle the operational load.
2. API-first vs. But git-based
This is a more technical distinction about where the "source of truth" for your content lives.
- API-first: Your content is stored in a database managed by the CMS provider. You interact with it entirely through APIs. This is how most headless CMSs work. It's structured, scalable, and allows for complex querying and permissions. It feels like a "backend for your content."
- Git-based: Your content is stored as files right in your project's Git repository. The CMS is essentially a nice user interface for editing those files. Decap CMS and TinaCMS are examples.
- The appeal: Developers love it because content becomes part of their existing workflow. It versions with the code, it can be reviewed in pull requests, and it's easy to work with locally. It's also incredibly portable—they're just files, you can move them anywhere.
- The downside: It doesn't scale as well for huge amounts of content. Workflows for non-technical editors can be a bit clunky since they're indirectly committing to a Git repo. Things like granular permissions or complex relationships between content are harder to manage.
A Git-based CMS is a fantastic choice for developer-focused sites like documentation, personal blogs, or small marketing sites where the content team is comfortable with a GitHub-centric workflow. For larger, more complex applications with many non-technical editors, an API-first approach is almost always the better choice.
3. Visual Editor vs; form-Based UI
This trade-off is all about the editor experience.
- Visual Editor: This gives content editors an experience that feels like editing the live website. You click on a piece of text or an image, and you edit it in-context. Storyblok is the poster child for this approach. It's incredibly intuitive for marketing teams who are used to tools like Squarespace or Wix. They can build and rearrange entire pages without needing to understand the underlying data structure. The downside is that it can be more rigid. The content model is often tightly coupled to the visual presentation, which can undermine the "write once, publish anywhere" promise of headless.
- Form-Based UI: This is the more traditional approach. Content is entered into a series of fields and forms. You have a "Title" field, a "Body" field, an "Image" field, and so on. A preview pane often sits next to the form so you can see your changes. Contentful and Sanity are great examples. This approach is much more powerful for developers. It encourages creating "structured content" that isn't tied to any one design. You can build highly customized editing interfaces. The learning curve for editors is a bit steeper, as they have to understand the content model, but it offers far more flexibility in the long run.
There's no single right answer here. If your primary use case is empowering a marketing team to build landing pages with no shortage of creative freedom, a visual editor is a strong contender. If you're building a content platform that needs to serve many different front ends and you value structured, reusable content, a form-based UI is the more robust choice.
Examples, workflows, and useful patterns
Theory is great, but let's look at how this stuff actually works in practice.
Content Modeling - The Foundation
The absolute core of any headless CMS setup is the content model. This is where you define the structure of your content. If you get this wrong, everything else becomes a struggle.
Let's take a simple "Article" content type. A bad model might just have one giant "Body" field using a rich text editor. It's easy to set up, but it's a mess. You can't reuse anything, and if you want to, say, feature the first paragraph on your homepage, you have to do ugly string parsing in your code.
A good model breaks it down into logical, reusable pieces.
Article
* Title
* Slug
* Publish Date
* Author
* Featured Image
* Summary
* Content Blocks
That Content Blocks part is the magic. Instead of one big rich text blob, you define a set of components the editor can choose from: a TextBlock, an ImageBlock, a VideoEmbedBlock, a PullQuoteBlock. Each block has its own defined fields.
Now, your content is structured. Your front-end code can just loop through the Content Blocks and render the appropriate React or Vue component for each one. The marketing team can build rich, dynamic articles by mixing and matching these blocks. This pattern is often called "slices" or "components," and it's one of the most powerful ideas in modern content management.
A Typical Developer Workflow
Let's say a content editor publishes a change. What happens next?
- The editor hits "Publish" in the CMS.
- The CMS fires a webhook. A webhook is just a notification sent to an URL you specify.
- That URL points to your build system.
- The build system wakes up, pulls the latest code from your Git repo, and then runs a command like
npm run build. - During the build, your static site generator makes API calls to the headless CMS to fetch all the content.
- It uses that content to pre-render all the pages of your site as static HTML files.
- Once the build is finished, the new version of the site is deployed to a CDN.
The whole process might take a few minutes. The result is an incredibly fast and secure website, because it's just a collection of static files. So this is a huge departure from the old WordPress model of hitting the database on every single page load.
A Marketing Team's Workflow
For the marketing team, the workflow is much simpler. They live inside the CMS.
Let's say they need to launch a new campaign landing page. With a good component-based content model, they don't need a developer.
- They create a new "Landing Page" entry in the CMS.
- They fill in the basic SEO fields.
- They start adding components to the page from a pre-built library: a "Hero Banner," a "Features List," a "Testimonial Carousel," a "Call to Action" block.
- They fill in the content for each component—uploading images, writing copy, adding links.
- They use the preview feature to see how it will look on the website.
- Once they're happy, they hit "Publish." The developer workflow I just described kicks in automatically, and a few minutes later, the new page is live.
This is empowering. It frees up developers from having to build one-off landing pages and lets the marketing team move at their own pace.
Mistakes to avoid and how to improve
I've seen a few of these projects go sideways. It's almost always for the same handful of reasons.
Mistake 1: Picking a CMS for your current issue, not your future one.
You might just need a blog today. So you pick a super basic, blog-focused CMS. But in six months, you need to add a documentation section, and then a knowledge base, and then integrate it with a translation service.
Suddenly, your basic little CMS is holding you back. Think about where your product is going in the next 1-2 years. Choose a tool that has room to grow with you. You don't need to use all the enterprise features on day one, but it's good to know they're there if you need them.
Mistake 2: Letting developers make the decision in a vacuum.
This is the classic one. The engineering team gets excited about a new CMS with an amazing developer experience. They do a PoC, it works great, they pick it. Then they hand it over to the content team — who find the editing interface completely unusable. It's missing a real-time preview, the rich text editor is surprisingly buggy, and it takes 10 clicks to do something that used to take two. Adoption stalls, and everyone is really miserable. The content editor experience is just as important as the developer experience. Your content team are the primary users of this tool. If they hate it, you've failed.
Mistake 3: Not investing in a solid content model upfront.
A poorly designed content model is a form of technical debt. It's tempting to just create a few giant content types with tons of optional fields to get started quickly. But this leads to a messy, inconsistent editing experience and complex, brittle front-end code that's full of conditional logic. Spend the time at the beginning of a project to really think through the structure of your content. Sketch it out. Debate it. It's much easier to change a content model when there's no content in it yet.
Mistake 4: Forgetting about the "M" in CMS - Management.
It's not just about creating content; it's about managing it over its lifecycle. How do you handle archiving old content? What are the permissions and roles for different users? How do you track changes and revert to previous versions? These "boring" content governance features become incredibly important as your team and content library grow. Make sure your chosen CMS has a good story here.
How to improve?
It's simple, really. Involve the whole team from the start. Do a real-world PoC that tests the full workflow, from content creation to final deployment. Start with a simple, clean content model and be prepared to evolve it. And after you launch, schedule regular check-ins with your content editors to see what's working and what's not.
How to compare options without wasting time
Running a full evaluation can be a massive time sink; you can't afford to spend three months on this. You need a process that gets you to a decent decision quickly.
1. Create a Scorecard.
Before you even look at any vendors, create a simple spreadsheet. In the first column, list your requirements—the ones you gathered from your team. Remember to include both editor and developer needs.
Examples:
* Ease of use for non-technical editors
* Quality of rich text editor
* Component-based page building
* API flexibility
* Quality of documentation
* Predictable pricing model
* Community/Support options
Next to each requirement, add a "Weight" column (1-5). How important is this? Visual page building might be a 5 for a marketing team, while GraphQL support might be a 2 for the dev team.
Then, for each CMS you evaluate, you can give it a score (1-5) for each requirement. The final score is just the rating multiplied by the weight. This isn't perfect science, but it forces you to be objective and compare apples to apples.
2. Time-box everything.
Don't let the research phase drag on forever. Give yourself a hard deadline. Day 1: Research and create a long list of 10-15 potential candidates. Day 2: Use your must-have requirements to cut that list down to a shortlist of 3-4. If you absolutely need self-hosting, all the SaaS-only options are out.
Done. Week 2-3: Run your PoCs. Dedicate 2-3 days per candidate*. No more. If you can't figure out how to build your simple test case in that time — that tells you something about the tool's learning curve.
3. Focus on the deal-breakers first.
What's the one thing that could kill a choice? Put differently, Price: If your budget is $500/month, don't waste time looking at enterprise systems that start at $5,000/month. Get a rough pricing estimate early. With that in mind, Core Workflow: If your entire content process revolves around real-time collaboration like Google Docs, a CMS with poor collaboration features is a non-starter. And * Security: If you have particular compliance needs, ask the vendor for their security documentation on day one. But if they can't provide it, move on.
By screening for deal-breakers first, you avoid falling in love with a tool you can't actually use.
For context, 4. Ignore the shiny objects.
Every CMS demo will show you some cool, unique feature that their competitors don't have. An AI-powered content-sourcing tool.
A built-in A/B testing framework. An analytics dashboard.
Ask yourself: "Will we actually use this in the next six months?"
Often, the answer is no. These features are designed to look good in demos and differentiate the product, but they often don't solve your core problems. Stick to evaluating the CMS based on how well it handles your fundamental, day-to-day workflows. The basics—a decent writing experience, a flexible content model, and a reliable API—are 90% of what matters.
Real-World Scenarios and Tool Comparisons
Let's make this more concrete by looking at a few common scenarios and which tools might be a good fit. This isn't an endorsement, just a way to think about the trade-offs.
Scenario 1: The Enterprise Marketing Site
A massive company needs a new corporate website. It will have dozens of marketers and content creators, many of whom aren't technical. They need to launch campaigns and build landing pages quickly. The site calls for to be available in 8 different languages. Security and uptime are non-negotiable.
- Key Needs: Visual page building, strong localization features, granular user permissions, enterprise-grade support and security.
- Contenders:
- Storyblok: Its main selling point is the visual editor, which marketing teams tend to love. It's very intuitive for building pages component by component. Their localization and permissions systems are solid.
- Contentful: A market leader for a reason. It's incredibly robust and flexible. While it doesn't have a built-in "visual editor" in the same way as Storyblok, its "Compose" and "Visual Studio Code" apps are closing the gap. Its real strength is in pure, structured content management and a powerful app framework for extending its capabilities.
- The Trade-off: Storyblok offers a better out-of-the-box experience for marketers who want to visually build pages. Contentful offers a more powerful and flexible platform for managing content as structured data, which might be better if that content needs to go to many different channels beyond the website.
Scenario 2: The Tech Startup's Docs & Blog
A fast-growing SaaS company needs a documentation site for its product and a blog for content marketing. And the content will be written by developers, product managers, and developer advocates. They live in GitHub and want content to be part of their code review process.
- Key Needs: Markdown support, tight Git integration, great developer experience, easy to version content with product releases.
- Contenders:
- Decap CMS : A classic Git-based CMS. It's an open-source React app that you add to your existing site. It gives you a clean UI for editing content that lives as Markdown files in your GitHub repo. It's simple, free, and developers understand it instantly.
- Sanity.io: While it's an API-first CMS, it has an amazing developer experience. The "Sanity Studio" is an open-source, customizable editing environment built in React. You can create highly tailored editing interfaces. They have powerful features like Portable Text and GROQ. It's more powerful than a Git-based CMS but still very developer-friendly.
- The Trade-off: Decap CMS is simpler and keeps everything in Git, which is great for versioning and transparency. Sanity provides a much richer editing experience and more powerful content modeling, but it separates your content from your codebase into its own managed database.
Scenario 3: The Digital Agency
An agency builds websites for tiny to medium-sized businesses. They need a CMS that is easy for them to set up, easy for their clients to use, and doesn't have a high per-site cost.
- Key Needs: Multi-tenancy, affordable pricing, a simple UI for non-technical clients, ability to self-host or a generous free/low-cost tier.
- Contenders:
- Strapi: It's open-source and self-hostable, which is a huge plus for agencies trying to control costs. You can host many client sites on a single server. It's very flexible, has a clean UI, and a good plugin ecosystem. The agency is responsible for maintenance, but they also have full control.
- Payload CMS: Another great open-source, self-hostable option that's gaining a lot of traction. It's built with TypeScript and is very developer-centric, but also produces a clean and easy-to-use admin UI for clients. It's like a more modern, code-first alternative to Strapi.
- The Trade-off: Both are great self-hosted options. Strapi is more mature and has a larger community. Payload is newer but offers a fantastic developer experience, especially for teams using TypeScript. The main decision here is which tool's philosophy and tech stack better aligns with the agency's own development practices.
What to do next after choosing an approach
You did it. You ran the process, you made a decision, and you've picked your new CMS. The work isn't over; in many ways, it's just beginning.
1. Plan your content migration.
Your existing content is probably sitting in WordPress, a different CMS, or a chaotic collection of Google Docs. You need a plan to move it. For a small amount of content, doing it manually might be fastest. For hundreds or thousands of pages, you'll need to automate. This usually involves writing a script that exports content from the old system, transforms it to match your new content model, and then uses the new CMS's API to import it. Don't underestimate this task; it can be complex and time-consuming.
2. Onboard and train the team.
Don't just send an email with a link to the new CMS and expect everyone to figure it out. Schedule dedicated training sessions.
- For Content Editors: Walk them through the new interface. Show them how to create and edit the content types they'll be using every day. Create simple documentation or video tutorials for your specific setup. A generic "How to use Sanity" guide isn't as helpful as "How we create a blog post at our company."
- For Developers: Hold a session on the new content model and API. Show them how to fetch content, how the build process works, and what the best practices are for working with the new system.
3. Start small and get a quick win.
Don't try to rebuild your entire digital presence on the new CMS at once. Pick a small, well-defined piece to tackle first. But maybe it's migrating just the blog, or building a new marketing section. Getting one part of the site live on the new system builds momentum and confidence. It also lets you learn and fix any issues with your setup before you're too deep in the project.
That's a recipe for a long, painful project.
4. Establish a feedback loop.
Your first content model and editor configuration probably won't be perfect. After the first project is live, check in with your content team. What's working well? Are there fields they wish they had? Is the workflow confusing?; be prepared to make adjustments. A good CMS setup is a living factor that evolves with your team's needs. The goal isn't to get it perfect on day one, but to build a system that can adapt and improve over time.
What's frustrating?