Personalizzazione con un CMS headless: come personalizzare i contenuti in uno stack composable

Gli stack headless e composable separano i contenuti (un CMS API-first) dal front-end che li visualizza. È ottimo per la flessibilità — un’unica fonte di contenuti alimenta un sito web, un’app e l’edge — ma complica la personalizzazione, che prima si basava su una sola pagina e su un tag script che sostituiva elementi nel browser.
In un’architettura headless, la personalizzazione deve diventare un livello decisionale: qualcosa che decide chi vede cosa in un determinato spazio e passa quella decisione al front-end che si occupa del rendering. Ecco un’architettura pratica per la personalizzazione di un CMS headless con Personyze — i componenti di base, due modi per integrarla e le domande da chiarire prima di costruire.
Perché l’headless cambia la personalizzazione
Un CMS tradizionale genera la pagina e uno script di personalizzazione riscrive il DOM dopo il caricamento. L’headless rompe questo modello: il CMS è solo un’API di contenuti, e il tuo front-end — Next.js, Nuxt, un’app mobile, una funzione edge — recupera i contenuti e li visualizza. Non c’è più una singola pagina in cui iniettare qualcosa.
La personalizzazione si divide quindi in tre compiti: definire i pubblici (chi), decidere il contenuto o la variante per questo visitatore e questo spazio (cosa) ed eseguirne il rendering ovunque si trovi il tuo front-end. Personyze si occupa dei primi due e passa la decisione al tuo stack — sul server o nel browser.
I componenti di base: pubblici, posizionamenti, decisioni
I pubblici definiscono chi. La strada più semplice è incorporare il modulo Audience Builder di Personyze in un iframe all’interno della tua interfaccia: gli editor definiscono regole con i tuoi campi cliente e account, e Personyze restituisce un id o una definizione di pubblico compilati. Ottieni un motore di regole completo senza dover ricostruire da solo l’interfaccia o la logica dei pubblici. I pubblici possono combinare il comportamento sul sito, i dati CRM e i segnali first-party.
I posizionamenti indicano dove va il contenuto personalizzato. Ognuno è un placement_id — puoi creare un posizionamento universale o uno limitato rigorosamente a una determinata pagina o URL.
Le decisioni mettono insieme il tutto: dato un visitor_id e i placement_id di una pagina, Personyze determina il pubblico del visitatore e restituisce il content_id e la variante da mostrare. Lo stesso flusso decisionale alimenta i test A/B, quindi i test non sono un sistema separato.
Due modi per collegarlo
Non esiste un’unica integrazione “giusta” — dipende soprattutto dal fatto che il rendering avvenga sul server o nel browser.

Opzione A — Server-to-server (consigliata)
Il tuo CMS o back-end memorizza il content_id, il placement_id (universale o limitato a una pagina) e l’id o la definizione del pubblico. A ogni richiesta, il tuo server comunica a Personyze il visitor_id insieme ai placement_id della pagina; Personyze restituisce il content_id e la variante (lo stesso flusso dei test A/B) e la tua app esegue il rendering del contenuto.

Vantaggi: nessun vincolo con il tipo di contenuto, più controllo sulla gestione dei contenuti e un flusso di lavoro che resta semplice anche quando un aggiornamento richiede modifiche ai contenuti. Si adatta perfettamente al rendering lato server, all’SSR e all’edge.
Il compromesso: server-to-server significa che sei tu a inviare a Personyze il contesto del visitatore di cui ha bisogno per decidere — pagina e URL correnti, referrer, user agent e gli eventi comportamentali che costruiscono il profilo del visitatore. L’opzione lato client raccoglie tutto questo automaticamente con un solo tag Personyze (oltre 70 attributi già pronti); il server-to-server scambia questa comodità con il controllo, mantenendo le decisioni sul tuo back-end. È la scelta giusta per molti team — basta mettere in conto il lavoro di integrazione aggiuntivo.
Opzione B — Rendering lato client
Il tuo front-end invia a Personyze il contenuto effettivo, e Personyze lo colloca sulla pagina nel browser. Usala quando vuoi un rendering solo lato client o esperimenti rapidi sull’interfaccia senza hook sul server.
Poiché passa attraverso il tag Personyze, raccoglie anche il contesto del visitatore al posto tuo — pagina, referrer, dispositivo e comportamento sul sito —, quindi c’è molto meno da collegare rispetto al percorso server-to-server.
I test A/B sono inclusi
Dato che il flusso decisionale è “visitor_id + placement_id → variante”, lo stesso collegamento esegue anche test A/B e multivariati. Testa varianti di contenuto per posizionamento e pubblico, e lascia che Personyze chiuda le perdenti e indirizzi il traffico verso le vincenti — senza un’integrazione di test separata.
Rendering lato server o lato client?
Funzionano entrambi, e Personyze offre sia un’API REST lato server sia un’API JSON lato client. Lato server (durante la generazione della pagina, con SSR o sull’edge) si decide prima del rendering, quindi non c’è sfarfallio e funziona per SEO, app ed email. Lato client si decide nel browser, il che velocizza le iterazioni negli esperimenti su SPA. Molti team combinano i due approcci.
Contenuti dinamici, raccomandazioni e JSON
Lo stesso livello decisionale fa più che sostituire blocchi statici. I contenuti dinamici — un hero, un banner, un messaggio o una CTA — possono essere personalizzati per pubblico, con i tuoi campi personalizzati (nome, settore, posizione, tipo di account) inseriti come tag di personalizzazione direttamente nel contenuto o nel set di raccomandazioni.
Per le raccomandazioni, Personyze restituisce JSON per le raccomandazioni di prodotti e di contenuti. Scegli un algoritmo e mappa i campi che ti servono, e Personyze restituisce un set JSON personalizzato per ogni visitatore. Il tuo front-end lo legge da una variabile JavaScript e lo visualizza con il tuo layout — schede, caroselli, widget —, ideale per SPA, app mobili e front-end personalizzati. Preferisci non costruire la visualizzazione? Sono disponibili anche widget gestiti e responsive.
E si adatta a entrambi i percorsi di rendering visti sopra: lato client, usando l’API JSON lato client letta nel browser o nell’app; oppure lato server, chiamando l’API di Personyze dal tuo back-end con l’id del visitatore — persino il suo id CRM o la sua email — per ottenere le sue raccomandazioni. C’è un’API REST completa e ci sono SDK nativi per iOS e Android, e si applica la stessa logica multilingue per cui contenuti e raccomandazioni arrivano nella lingua del visitatore.
Due esempi rapidi
1. Un hero della homepage B2B (server-to-server)
Configurazione: Definisci un pubblico “Aziende manifatturiere” nell’Audience Builder usando i tuoi campi CRM e firmografici. Crea un posizionamento — home-hero — e salva due varianti dell’hero nel tuo CMS. A ogni richiesta della homepage, il tuo server invia a Personyze il visitor_id, home-hero e il contesto del visitatore (pagina, referrer e l’azienda ricavata dai tuoi dati), riceve un content_id ed esegue il rendering di quell’hero lato server.
Risultato: un classico caso di personalizzazione B2B — un visitatore di un’azienda manifatturiera arriva su un hero e una CTA scritti per il settore manifatturiero — con rendering lato server, senza sfarfallio —, mentre tutti gli altri vedono la versione predefinita. Punta lo stesso posizionamento su due varianti e hai un test A/B.
2. Una sezione “Consigliati per te” in una SPA (JSON lato client)
Configurazione: Imposta un’azione JSON di raccomandazioni di contenuti con un algoritmo di tipo “chi ha letto questo ha letto anche” o “più letti per interesse”, mappa i campi che ti servono (titolo, immagine, URL) e assegna il risultato a una variabile JavaScript. Nella pagina dell’articolo, leggi quella variabile e visualizza il tuo layout a schede — senza modifiche al server.
Risultato: ogni lettore vede una sezione personalizzata con il tuo design — il cuore della personalizzazione per editori e media. I lettori nuovi o anonimi ricevono contenuti di tendenza e popolari; appena si conosce un interesse, si passa a raccomandazioni basate sugli interessi — tutto lato client e nella lingua del visitatore.
Cosa definire prima di costruire
Una breve checklist iniziale permette di delimitare rapidamente un’integrazione headless:
- Percorso di rendering: lato server durante la generazione della pagina, o lato client?
- Stack tecnologico: quali linguaggi e framework alimentano il tuo livello di rendering?
- Autenticazione ed eventi: autenticazione preferita (chiave API o OAuth) e — per il server-to-server — puoi inviare a Personyze il contesto del visitatore di cui ha bisogno (pagina/URL corrente, referrer, user agent) più gli eventi di visualizzazione e clic in tempo reale (
visitor_id+placement_id)? - Caching / CDN: ci sono vincoli da considerare per le chiamate server-to-server — TTL, caching sull’edge o regole di personalizzazione rispetto alla cache?
Funziona con qualsiasi CMS headless
Il livello decisionale è indipendente dal CMS: lavora su content_id e placement_id, non su uno specifico prodotto. Per questo si affianca a piattaforme API-first come Contentful, Sanity, Strapi, Contentstack o ButterCMS — e può recuperare profili unificati da un CDP come Segment o da qualsiasi integrazione che usi già.
Personalizzazione headless: domande frequenti
Che cos’è la personalizzazione di un CMS headless?
È la personalizzazione dei contenuti che un CMS headless (API-first) fornisce a un front-end disaccoppiato. Invece di uno script che riscrive una pagina già visualizzata, un livello decisionale stabilisce quale contenuto o variante debba vedere ogni visitatore in un determinato spazio, e il tuo front-end lo visualizza — sul server o nel browser.
Posso personalizzare un sito headless senza ricostruire il front-end?
In gran parte sì. Con il modello server-to-server, il tuo back-end memorizza content_id, placement_id e pubblico, poi comunica visitor_id + placement_ids e visualizza ciò che Personyze restituisce. Non c’è alcun vincolo con il tipo di contenuto, quindi la maggior parte del lavoro consiste nel collegare gli eventi e una chiamata decisionale.
Devo eseguire il rendering della personalizzazione lato server o lato client?
Lato server (SSR o edge) si decide prima del rendering, si evita lo sfarfallio e funziona per SEO, app ed email. Lato client si itera più rapidamente negli esperimenti su SPA. Personyze offre sia un’API REST lato server sia un’API JSON lato client, e molti team li combinano.
Come si definiscono i pubblici in un’architettura headless?
Puoi incorporare l’Audience Builder di Personyze in un iframe all’interno della tua interfaccia, così gli editor definiscono regole con i tuoi campi cliente e account e Personyze restituisce una definizione di pubblico compilata — oppure puoi creare i pubblici direttamente in Personyze. In entrambi i casi eviti di ricostruire la logica dei pubblici.
I test A/B funzionano in un’architettura headless?
Sì. Lo stesso flusso decisionale — visitor_id + placement_id che restituisce una variante — esegue test A/B e multivariati, con selezione automatica del vincitore. I test non sono un’integrazione separata.
Con quali CMS headless funziona?
Con qualsiasi CMS API-first. Il livello decisionale lavora su content_ids e placement_ids anziché su uno specifico prodotto, quindi si adatta a Contentful, Sanity, Strapi, Contentstack, ButterCMS e altri, e può essere combinato con un CDP come Segment.
Inizia ora
Personalizza il tuo stack headless senza ricostruirlo. Prenota una demo per definire un’integrazione, oppure scopri i piani.
Letture correlate
- Gli algoritmi di raccomandazione spiegati — come il motore sceglie gli articoli da proporre.
- Personalizzazione multilingue — contenuti e raccomandazioni in ogni lingua.
- Personalizzazione dei siti web — il motore di targeting e contenuti dietro a tutto questo.
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.
