Si vas a añadir un blog, un registro de cambios o un centro de ayuda a un producto de software, la primera bifurcación es de arquitectura: ¿quieres un CMS que renderice tus páginas por ti, o uno que te entregue el contenido por una API y no se meta en tu frontend?
Esa es toda la diferencia entre un CMS tradicional y uno headless. Todo lo demás (precios, plugins, alojamiento) se deriva de esa elección.
Qué hace un CMS tradicional
Un CMS tradicional (o «acoplado») como WordPress reúne tres cosas en un solo sistema: la interfaz de edición, la base de datos de contenido y la capa de renderizado que convierte el contenido en HTML. Eliges un tema, los editores escriben artículos y el CMS sirve las páginas terminadas desde su propio servidor.
Este modelo es excelente cuando el sitio web es el producto: una revista, la web de un restaurante, el folleto de una empresa. Tienes un sitio funcionando sin una sola línea de código de frontend, un ecosistema de plugins maduro, y los editores sin conocimientos técnicos pueden cambiar casi cualquier cosa.
Los inconvenientes aparecen cuando el CMS tiene que vivir dentro de un producto más grande:
La capa de renderizado es suya, no tuya. Tu blog parece un tema, no tu app. Igualar tu sistema de diseño significa pelearte con las plantillas.
Es una segunda pila que mantener. Una aplicación PHP con su propia base de datos, sus actualizaciones y sus parches de seguridad, junto a tu producto real.
El contenido queda atado a una sola presentación. El mismo artículo de ayuda no puede alimentar fácilmente una página web, un widget dentro de la app y un índice de búsqueda, porque se escribió como página, no como datos.
Qué hace un CMS headless
Un CMS headless conserva la interfaz de edición y la base de datos de contenido, y elimina la capa de renderizado. El contenido sale como JSON estructurado por una API, y tu propia aplicación lo renderiza con tus componentes, en tu dominio.
En concreto, obtener contenido es llamar a un SDK desde el código de tu servidor:
const posts = await kookee.blog.list({ limit: 10 });
const article = await kookee.help.getBySlug('getting-started');
Tu framework (Next.js, Astro, Nuxt, SvelteKit o cualquiera que sepa obtener JSON) lo convierte en HTML igual que renderiza el resto de tu producto.
El precio está claro: escribes el frontend una vez y, a cambio, controlas por completo el marcado, los estilos, las rutas y el rendimiento. Para un equipo SaaS que ya tiene un sistema de diseño y un frontend desplegado, suele ser un buen trato, porque el trabajo de frontend es una capa fina sobre componentes que ya tienes.
La comparación que importa
La mayoría de las comparaciones «headless vs. tradicional» enumeran ventajas e inconvenientes abstractos. Para un producto SaaS, lo deciden cuatro preguntas.
¿Quién controla el diseño?
Tradicional: el tema, y tú personalizas dentro de sus límites. Headless: tú, por completo. Si tu blog y tu centro de ayuda tienen que parecerse a tu producto (la misma navegación, la misma tipografía, el mismo modo oscuro), headless es la única opción que llega ahí sin parches.
¿Dónde tiene que aparecer el contenido?
Un CMS tradicional produce páginas. Un CMS headless produce datos, y los datos pueden ir a cualquier parte: tu web de marketing, un panel con el registro de cambios dentro de la app, un chat de soporte que responde con tus artículos de ayuda, un feed RSS, una app móvil. Si en tu hoja de ruta hay cualquier superficie más allá de «un sitio web», escribir el contenido como datos estructurados se amortiza de inmediato.
¿Quién mantiene la infraestructura?
Un CMS tradicional autoalojado significa parchearlo para siempre. Con una plataforma headless alojada, el proveedor se ocupa del editor, la base de datos, la API y la CDN, y lo único que te toca es el código de frontend en tu repositorio de siempre, que se despliega, se revisa y se revierte exactamente igual que el resto de tu app.
¿Qué pasa con el SEO?
Es la objeción más habitual al headless («si el contenido viene de una API, ¿lo ve Google?») y es un problema resuelto. Con renderizado en el servidor o generación estática, el rastreador recibe HTML normal en tu URL. Para los buscadores, el origen del contenido es invisible; lo que cuenta es el dominio que sirve el HTML, y con headless ese dominio es el tuyo. Es estrictamente mejor que alojar el blog en un subdominio del proveedor, donde la autoridad que construyes acaba en el sitio de otro.
Dónde gana cada uno
Elige un CMS tradicional cuando:
El sitio es contenido independiente, sin una aplicación alrededor.
Nadie en el equipo escribe código de frontend, ni quiere hacerlo.
Te basta un tema que acierta en un 90 %.
Elige un CMS headless cuando:
El contenido vive dentro o al lado de un producto con su propio frontend.
El mismo contenido alimenta varias superficies: web, app, búsqueda, feeds.
Quieres publicar el contenido en tu dominio, con tu diseño y con tu pipeline de despliegue.
El término medio: headless con una salida de emergencia
El punto débil real del headless es el primer día: antes de que exista tu frontend, tienes una API y nada que enseñar. Algunas plataformas cubren ese hueco con un portal alojado: un sitio público listo para tu tablero de comentarios, tu hoja de ruta, tu registro de cambios y tu centro de ayuda, que funciona antes de que hayas escrito una línea de código.
Kookee sigue ese enfoque: cada proyecto tiene desde el primer momento un portal opcional en una URL pública, y lo vas sustituyendo sección por sección por tus propias páginas a medida que las construyes sobre la API. El portal te pone en línea el día del lanzamiento; el SDK te da después una experiencia completamente tuya, sin migrar contenido entre sistemas.
En resumen
Para sitios de contenido puro, los CMS tradicionales siguen siendo una buena opción por defecto. Para productos SaaS, el patrón ya está claro: el contenido se escribe en un panel, se sirve como JSON y lo renderiza el propio frontend del producto en el propio dominio del producto. Conservas tu sistema de diseño, el SEO suma a tu dominio y tu contenido sigue siendo datos portables en lugar de páginas atrapadas.
La forma práctica de decidir: prueba el camino headless con una sola superficie. Renderiza tus cinco artículos más recientes con tus componentes actuales. Si te lleva una tarde (y con un SDK tipado suele ser así), ya tienes tu respuesta.