Personalización en un CMS headless: cómo personalizar contenido en un stack composable

Los stacks headless y composables separan el contenido (un CMS API-first) del front-end que lo renderiza. Es estupendo para la flexibilidad — una sola fuente de contenido que alimenta un sitio web, una app y el edge —, pero complica la personalización, que antes dependía de una sola página y de una etiqueta de script que cambiaba elementos en el navegador.
En una arquitectura headless, la personalización tiene que convertirse en una capa de decisión: algo que decide quién ve qué en un espacio determinado y entrega esa decisión al front-end que se encargue de renderizar. Esta es una arquitectura práctica para la personalización de un CMS headless con Personyze: los componentes básicos, dos formas de integrarlo y las preguntas que conviene resolver antes de construir.
Por qué lo headless cambia la personalización
Un CMS tradicional renderiza la página y un script de personalización reescribe el DOM tras la carga. Lo headless rompe ese modelo: el CMS es solo una API de contenido, y tu front-end — Next.js, Nuxt, una app móvil, una función edge — obtiene el contenido y lo renderiza. No hay una única página en la que inyectar nada.
Así que la personalización se divide en tres tareas: definir audiencias (quién), decidir el contenido o la variante para este visitante y este espacio (qué), y renderizarlo dondequiera que esté tu front-end. Personyze se encarga de las dos primeras y entrega la decisión a tu stack, en el servidor o en el navegador.
Los componentes: audiencias, ubicaciones y decisiones
Las audiencias definen quién. El camino más fácil es incrustar el Audience Builder de Personyze en un iframe dentro de tu propia interfaz: los editores definen reglas con tus campos de cliente y de cuenta, y Personyze devuelve un id o una definición de audiencia compilados. Obtienes un motor de reglas completo sin tener que reconstruir tú la interfaz ni la lógica de audiencias. Las audiencias pueden combinar el comportamiento en el sitio, los datos de CRM y las señales propias (first-party).
Las ubicaciones marcan dónde va el contenido personalizado. Cada una es un placement_id — puedes crear una ubicación universal o una limitada estrictamente a una página o URL concretas.
Las decisiones lo unen todo: dado un visitor_id y los placement_id de una página, Personyze resuelve la audiencia del visitante y devuelve el content_id y la variante que se deben mostrar. El mismo flujo de decisión impulsa los tests A/B, así que las pruebas no son un sistema aparte.
Dos formas de conectarlo
No hay una única integración “correcta”: depende sobre todo de si renderizas en el servidor o en el navegador.

Opción A: servidor a servidor (recomendada)
Tu CMS o back-end guarda el content_id, el placement_id (universal o limitado a una página) y el id o la definición de la audiencia. En cada petición, tu servidor envía a Personyze el visitor_id y los placement_id de la página; Personyze devuelve el content_id y la variante (el mismo flujo que en los tests A/B), y tu app renderiza el contenido.

Ventajas: sin dependencia del tipo de contenido, más control sobre la gestión del contenido y un flujo de trabajo que sigue siendo sencillo incluso cuando una actualización exige editar contenido. Encaja sin problemas con el renderizado en servidor, el SSR y el edge.
La contrapartida: servidor a servidor significa que tú envías a Personyze el contexto del visitante que necesita para decidir — la página y la URL actuales, el referrer, el user agent y los eventos de comportamiento que construyen el perfil del visitante. La opción del lado del cliente recopila todo eso automáticamente con una sola etiqueta de Personyze (más de 70 atributos de serie); servidor a servidor cambia esa comodidad por control y mantiene las decisiones en tu back-end. Es la opción adecuada para muchos equipos; solo hay que prever el trabajo de integración adicional.
Opción B: renderizado del lado del cliente
Tu front-end envía a Personyze el contenido real y Personyze lo coloca en la página, en el navegador. Úsalo cuando quieras renderizar solo en el cliente o hacer experimentos rápidos de interfaz sin hooks de servidor.
Como funciona a través de la etiqueta de Personyze, también recoge por ti el contexto del visitante — página, referrer, dispositivo y comportamiento en el sitio —, así que hay mucho menos que conectar que en la vía servidor a servidor.
Los tests A/B vienen incluidos
Como el flujo de decisión es “visitor_id + placement_id → variante”, la misma conexión ejecuta tests A/B y multivariantes. Prueba variantes de contenido por ubicación y audiencia, y deja que Personyze descarte las perdedoras y dirija el tráfico a las ganadoras, sin una integración de pruebas aparte.
¿Renderizado en el servidor o en el cliente?
Ambos funcionan, y Personyze ofrece tanto una API REST del lado del servidor como una API JSON del lado del cliente. En el servidor (durante la generación de la página, con SSR o en el edge) se decide antes de renderizar, así que no hay parpadeo y funciona para SEO, apps y email. En el cliente se decide en el navegador, lo que permite iterar más rápido en experimentos con SPA. Muchos equipos combinan ambos.
Contenido dinámico, recomendaciones y JSON
La misma capa de decisión hace algo más que cambiar bloques estáticos. El contenido dinámico — un hero, un banner, un mensaje o una CTA — se puede personalizar por audiencia, con tus propios campos (nombre, sector, ubicación, tipo de cuenta) insertados como etiquetas de personalización directamente en el contenido o en el conjunto de recomendaciones.
Para las recomendaciones, Personyze devuelve JSON tanto para recomendaciones de productos como de contenido. Tú eliges el algoritmo y asignas los campos que quieras, y Personyze devuelve un conjunto JSON personalizado por visitante. Tu front-end lo lee desde una variable de JavaScript y lo renderiza con tu propio diseño — tarjetas, carruseles, widgets —, lo que resulta ideal para SPA, apps móviles y front-ends a medida. ¿Prefieres no construir la visualización? También hay widgets gestionados y adaptables.
Y encaja con cualquiera de las dos vías de renderizado anteriores: del lado del cliente, con la API JSON del lado del cliente leída en el navegador o en la app; o del lado del servidor, llamando a la API de Personyze desde tu back-end con el id del visitante — incluso su id de CRM o su email — para obtener sus recomendaciones. Hay una API REST completa y SDK nativos para iOS y Android, y se aplica la misma lógica multilingüe para que el contenido y las recomendaciones lleguen en el idioma del visitante.
Dos ejemplos rápidos
1. Un hero de página de inicio B2B (servidor a servidor)
Configuración: Define una audiencia “Cuentas del sector manufacturero” en el Audience Builder con tus campos de CRM y firmográficos. Crea una ubicación — home-hero — y guarda dos variantes del hero en tu CMS. En cada petición de la página de inicio, tu servidor envía el visitor_id, home-hero y el contexto del visitante (página, referrer y la empresa según tus propios datos) a Personyze, recibe un content_id y renderiza ese hero en el servidor.
Resultado: un caso clásico de personalización B2B — un visitante de una cuenta manufacturera llega a un hero y una CTA escritos para el sector —, renderizado en el servidor y sin parpadeo, mientras todos los demás ven la versión por defecto. Apunta la misma ubicación a dos variantes y ya tienes un test A/B.
2. Un carrusel “Recomendado para ti” en una SPA (JSON del lado del cliente)
Configuración: Configura una acción JSON de recomendaciones de contenido con un algoritmo de tipo “los lectores también leyeron” o “lo más leído por interés”, asigna los campos que quieras (título, imagen, URL) y guarda el resultado en una variable de JavaScript. En tu página de artículo, lee esa variable y renderiza tu propio diseño de tarjetas, sin cambios en el servidor.
Resultado: cada lector ve un carrusel personalizado con tu propio diseño: la esencia de la personalización para medios y editores. Los lectores nuevos o anónimos reciben lo más popular y lo que es tendencia; en cuanto se conoce un interés, pasa a recomendaciones basadas en intereses, todo del lado del cliente y en el idioma del visitante.
Qué acordar antes de construir
Una breve lista de verificación inicial permite definir rápido el alcance de una integración headless:
- Vía de renderizado: ¿en el servidor durante la generación de la página, o en el cliente?
- Stack tecnológico: ¿qué lenguajes y frameworks impulsan tu capa de renderizado?
- Autenticación y eventos: ¿qué autenticación prefieres (clave de API u OAuth) y, en el caso servidor a servidor, puedes enviar a Personyze el contexto del visitante que necesita (página/URL actual, referrer, user agent) además de eventos de vista y clic en tiempo real (
visitor_id+placement_id)? - Caché / CDN: ¿hay restricciones que tener en cuenta para las llamadas servidor a servidor, como TTL, caché en el edge o reglas de personalización frente a caché?
Funciona con cualquier CMS headless
La capa de decisión es independiente del CMS: opera sobre content_id y placement_id, no sobre un producto concreto. Por eso encaja junto a plataformas API-first como Contentful, Sanity, Strapi, Contentstack o ButterCMS, y puede obtener perfiles unificados de un CDP como Segment o de una integración que ya utilices.
Personalización headless: preguntas frecuentes
¿Qué es la personalización de un CMS headless?
Es personalizar el contenido que un CMS headless (API-first) entrega a un front-end desacoplado. En lugar de un script que reescribe una página ya renderizada, una capa de decisión elige qué contenido o variante debe ver cada visitante en un espacio determinado, y tu front-end lo renderiza — en el servidor o en el navegador.
¿Puedo personalizar un sitio headless sin reconstruir mi front-end?
En gran medida, sí. Con el patrón servidor a servidor, tu back-end guarda content_id, placement_id y la audiencia, luego envía visitor_id + placement_ids y renderiza lo que devuelva Personyze. No hay dependencia del tipo de contenido, así que la mayor parte del trabajo consiste en conectar eventos y una llamada de decisión.
¿Debo renderizar la personalización en el servidor o en el cliente?
En el servidor (SSR o edge) se decide antes de renderizar, se evita el parpadeo y funciona para SEO, apps y email. En el cliente se itera más rápido en experimentos con SPA. Personyze ofrece tanto una API REST del lado del servidor como una API JSON del lado del cliente, y muchos equipos combinan ambas.
¿Cómo se definen las audiencias en una arquitectura headless?
Puedes incrustar el Audience Builder de Personyze en un iframe dentro de tu propia interfaz para que los editores definan reglas con tus campos de cliente y de cuenta y Personyze devuelva una definición de audiencia compilada, o bien crear las audiencias directamente en Personyze. En ambos casos te evitas reconstruir la lógica de audiencias.
¿Los tests A/B funcionan en una arquitectura headless?
Sí. El mismo flujo de decisión — visitor_id + placement_id que devuelve una variante — ejecuta tests A/B y multivariantes, con selección automática de la ganadora. Las pruebas no son una integración aparte.
¿Con qué CMS headless funciona?
Con cualquier CMS API-first. La capa de decisión trabaja con content_ids y placement_ids en lugar de con un producto concreto, así que encaja con Contentful, Sanity, Strapi, Contentstack, ButterCMS y otros, y se puede combinar con un CDP como Segment.
Empieza ahora
Personaliza tu stack headless sin reconstruirlo. Reserva una demo para definir el alcance de una integración, o consulta los planes.
Lecturas relacionadas
- Algoritmos de recomendación explicados — cómo elige el motor los artículos que muestra.
- Personalización multilingüe — contenido y recomendaciones en cada idioma.
- Personalización web — el motor de segmentación y contenido que lo impulsa todo.
Book a demo with a personalization expert
30 minutes with a personalization expert. Bring your stack, your goals, your skepticism. We'll show you what changes when every visit feels like the only one.
