Dati strutturati con Google Tag Manager (GTM): meno plugin, più controllo

dato strutturato

Indice dei contenuti

Gestione avanzata dei dati strutturati con Google Tag Manager (senza plugin)

I limiti dei plugin per i dati strutturati

Nell’ambito SEO, i dati strutturati sono un acceleratore di comprensione per i motori di ricerca. Molti siti si affidano a plugin per implementarli: comodi all’inizio, meno convincenti quando servono controllo, performance e scalabilità.

I plugin garantiscono una messa in opera rapida, ma spesso risultano rigidi nelle opzioni, poco adatti a tassonomie o contenuti atipici e possono introdurre overhead (JS/CSS non necessari) con impatto su tempi di caricamento e stabilità. Non mancano poi i conflitti con tema o altre estensioni (duplicazioni di markup, campi obbligatori non mappabili, incompatibilità dopo update). Inoltre il ciclo di aggiornamento dipende dallo sviluppatore del plugin: nuove proprietà Schema.org o fix arrivano in ritardo, allungando i tempi di adozione.

Il potenziale di Google Tag Manager per dati strutturati dinamici

Google Tag Manager (GTM) offre un approccio più flessibile e controllabile all’implementazione dei dati strutturati, soprattutto quando vuoi allineare il markup a contenuti e layout che evolvono.

  • Personalizzazione avanzata: con GTM crei JSON-LD su misura per pagina o template, senza limiti imposti da maschere predefinite.
  • Gestione centralizzata: modifichi e versioni da un’unica interfaccia, utile su siti editoriali o e-commerce con volumi elevati.
  • Prestazioni migliori: il caricamento asincrono riduce l’impatto sul rendering iniziale e ti permette di attivare lo script solo dove serve.
  • Integrazione con dati backend: tramite dataLayer puoi alimentare proprietà sempre aggiornate (es. autore, date, immagini, categorie).

Salvare e manipolare dati dal backend

Un caso concreto: pubblicazione e modifica degli articoli. Invece di delegare a un plugin, puoi esporre le date nel DOM e poi leggerle con GTM. Aggiungi questa funzione nel functions.php del tema child:

				
					function add_meta_dates() {
    if (is_single()) {
        $publishDate = get_the_date('c'); // Formato ISO 8601
        $modifiedDate = get_the_modified_date('c'); // Formato ISO 8601
        
        // Aggiungi meta tag
        echo '<meta property="article:published_time" content="' . esc_attr($publishDate) . '">';
        echo '<meta property="article:modified_time" content="' . esc_attr($modifiedDate) . '">';
    }
}
add_action('wp_head', 'add_meta_dates');
				
			
In questo modo le informazioni sono disponibili ai motori di ricerca e a GTM, che potrà riutilizzarle nel markup JSON-LD.
  • Flessibilità: lo stesso principio ti consente di esporre altre proprietà (categorie, tag, brand, availability) senza appesantire il tema.
  • Prestazioni: meta tag leggeri, nessun JS aggiuntivo: impatto minimo su caricamento e Core Web Vitals.
  • Chiarezza architetturale: il backend fornisce i dati, GTM gestisce quando e come iniettarli: manutenzione più semplice e meno regressioni.

Creare variabili JavaScript in GTM

Una volta esposte le informazioni nel DOM, GTM può leggerle con Variabili JavaScript personalizzate:
				
					function() {
    var metaElement = document.querySelector('meta[property="article:published_time"]');
    return metaElement ? metaElement.getAttribute('content') : '';
}
				
			

Questo approccio è flessibile: puoi creare variabili per qualunque informazione disponibile nel DOM, applicare formattazioni e combinare più valori direttamente in GTM, senza toccare il codice del sito.

  • Variabili per ogni dato rilevante (date, autore, immagini, categorie).
  • Aggiustamenti rapidi lato GTM (formati, fallback, normalizzazioni).
  • Logiche personalizzate senza rilasci di codice sul server.

Integrare variabili nei dati strutturati

Il vantaggio emerge quando colleghi le variabili a un tag HTML personalizzato che genera il tuo JSON-LD. Se, per esempio, hai in GTM una variabile per la data di pubblicazione (DataPubblicazione), puoi fare il binding in modo dinamico:

				
					<script type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1">(function(){
var data = {
"@context": "http://schema.org",
			"@type": "BlogPosting",
			"mainEntityOfPage": {
				"@type": "WebPage",
				"@id": "{{Url blogposting}}"
				},
			"headline": "{{H1 blogposting}}",
			"name": "{{H1 blogposting}}",
			"description": "{{MetaDescription blogposting}}",
			"image": "{{Image blogposting}}",
			"datePublished": "{{Datapubblicazione blogposting}}",
            "dateModified": "{{Datamodifica blogposting}}",
			"author": {
				"@type": "Person",
				"@id":"https://artigianiseo.it/chi-siamo/",
				"url":"https://artigianiseo.it/chi-siamo/",
			    "jobTitle": "Consulente SEO",
				"name": "Andrea Bodria",
				"image":{
					"@type":"ImageObject",
					"url":"https://artigianiseo.it/wp-content/uploads/2024/08/bodria-a.png","height":340,"width":468}
			},
			"publisher": {
				"@type": "Organization",
				"name": "Artigiani Seo",
				"logo": {
					"@type": "ImageObject",
					"url": "https://artigianiseo.it/wp-content/uploads/2024/07/Logo-Artigiani-SEO.png"
				}
			}

}
var script = document.createElement('script');
script.type = "application/ld+json";
script.innerHTML = JSON.stringify(data);
document.getElementsByTagName('body')[0].appendChild(script);
})(document);</script>
				
			

Risultato: markup sempre coerente con i contenuti reali, aggiornabile da un solo punto (GTM) e attivabile solo dove necessario.

  • Dinamicità: il JSON-LD si aggiorna con i contenuti.
  • Coerenza: meno discrepanze tra ciò che l’utente legge e ciò che i bot vedono.
  • Manutenibilità: modifiche centralizzate, senza interventi diffusi su template o plugin.

Trigger personalizzati per un controllo preciso

GTM ti consente di attivare i dati strutturati con condizioni puntuali, evitando duplicazioni o injection fuori contesto (es. articoli vs. pagine istituzionali). Un esempio è la verifica del meta og:type:

				
					function() {
  var metaOgType = document.querySelector('meta[property="og:type"]');
  return metaOgType && metaOgType.content === 'article';
}
				
			

Questa variabile diventa la condizione per l’attivatore che spara il tag JSON-LD BlogPosting solo nelle pagine corrette.

  • Efficienza: iniezione limitata alle pagine pertinenti.
  • Precisione: logiche complesse per tipologia di contenuto o stato della pagina.
  • Flessibilità: adattamento rapido quando cambiano tema, template o requisiti SEO.

Benefici dell’inserimento di script nel Body con GTM

  • Caricamento percepito più rapido: lo script non blocca il rendering iniziale.
  • Accesso completo al DOM: tutti gli elementi sono disponibili quando il JSON-LD viene generato.
  • Compatibilità con lazy loading: meno rischi di campi mancanti dovuti a caricamenti differiti.

In sintesi, l’uso di Google Tag Manager per i dati strutturati offre controllo, velocità d’iterazione e coerenza tra contenuto e markup, superando i limiti tipici dei plugin. La curva di apprendimento iniziale è ripagata da una gestione più solida nel tempo: meno dipendenze, più visibilità sui processi e una base tecnica pronta a recepire nuove proprietà Schema.org senza attendere aggiornamenti esterni.

Immagine di Andrea Bodria

Andrea Bodria

Indice dei contenuti

Potrebbe interessarti anche

Serve un supporto tecnico?