[Aggiornata il 25 Agosto 2020]
Chi ha detto che Google Tag Manager può essere utile solo per la Web Analytics?
Quello che forse non sai è che esistono tanti (ma taaanti) trucchetti che ti possono aiutare anche se lavori nella SEO.
Quali? Uuuuhh… 🙂 ne vedremo insieme alcuni.
Innanzitutto cosa sono i dati strutturati?
I dati strutturati sono dei markup che permettono al crawler di ottenere informazioni aggiuntive sulle pagine web da mostrare nella SERP.
Parliamo ad esempio di rich snippet, breadcrumbs, sitelink, search box, review… Per saperne di più puoi leggere il mio glossario sui dati strutturati.
Questi dati vanno ad arricchire anche il knowledge graph implementando ad esempio logo, contatti, profili social.
Ecco, una delle fantastiche cose che puoi fare con Google Tag Manager è proprio utilizzare JSON-LD per implementare i dati strutturati tramite i nostri carissimi amici, ovvero i Tag HTML Personalizzati.
Nella guida ufficiale di Google viene espressamente indicato che grazie a Google Tag Manager è possibile generare JSON-LD e gestirne i parametri in modo dinamico.
Ecco il link alla guida ufficiale di Google.
Questo ovviamente permette a tutti di “svincolarsi” dai programmatori (evviva!).
Altra cosa ufficialmente dichiarata da Google è l’utilizzo di un altro metodo per implementare i dati strutturati attraverso JavaScript.
Nel dettaglio basterà usare lo script sopra indicato e inserire l’url che contiene il dato strutturato.
Bene passiamo lato pratico come fare con Google Tag Manager 😀
Ti ho già accennato al fatto che questi Tag non sono già presenti di default su Google Tag Manager, per cui andremo a gestirli con i Tag HTML Personalizzati:
Se vogliamo verificare che il Tag sia funzionante, possiamo accedere alla modalità di Anteprima: dovremmo vedere il nuovo Tag fra i Tags Fired On This Page.
Esiste anche uno strumento di Google che ti permette di verificare il funzionamento dei dati strutturati, lo trovi in fondo a questa guida fra i link utili 🙂
Ed ecco i codici, presi dalla Guida di Google ai dati strutturati. Naturalmente andranno personalizzati con i tuoi dati:
LOGO
<script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Organization", "url": "http://www.demo.tagmanageritalia.it/esempio/", "logo": "http://demo.tagmanageritalia.it/esempio/tm-content/uploads/2016/04/TagManagerItalia-icona.png" } </script>
CONTATTI
<script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Organization", "url": "http://www.demo.tagmanageritalia.it/esempio/", "logo": "http://demo.tagmanageritalia.it/esempio/tm-content/uploads/2016/04/TagManagerItalia-icona.png", "contactPoint" : [{ "@type" : "ContactPoint", "telephone" : "+39-3388835425", "contactType" : "technical support", "availableLanguage" : ["Italian", "English"] }] } </script>
PROFILI SOCIAL
<script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Organization", "url": "http://www.demo.tagmanageritalia.it/esempio/", "logo": "http://demo.tagmanageritalia.it/esempio/tm-content/uploads/2016/04/TagManagerItalia-icona.png", "contactPoint" : [{ "@type" : "ContactPoint", "telephone" : "+39-3388835425", "contactType" : "technical support", "availableLanguage" : ["Italian", "English"] }], "sameAs" : [ "https://www.facebook.com/zambon.matteo?fref=ts", "http://it.linkedin.com/in/zambonmatteo", "https://twitter.com/zambros_it", "https://plus.google.com/+MatteoZambon" ] } </script>
Se invece il tuo sito è riferito a una persona e non a un’organizzazione, basterà cambiare il type all’interno del codice.:
<script type="application/ld+json"> { "@context" : "http://schema.org", "@type" : "Person", "name" : "Matteo Zambon", "url": "http://www.demo.tagmanageritalia.it/esempio/", "sameAs" : [ "https://www.facebook.com/zambon.matteo?fref=ts", "http://it.linkedin.com/in/zambonmatteo", "https://twitter.com/zambros_it", "https://plus.google.com/+MatteoZambon" ] } </script>
La Search Box è una barra di ricerca che compare in SERP sotto alcuni siti e serve per fare delle ricerche interne al sito stesso. Anche questa è gestibile con Google Tag Manager e JSON-LD con Tag HTML Personalizzato.
(Ricorda sempre che noi possiamo implementare la Search Box, ma sarà poi Google a decidere se farla comparire o no in base ai suoi algoritmi, quindi se non la vedi spuntare poi non te la prendere con me 😀 )
Questo è lo script che devi incollare:
<script type="application/ld+json"> { "@context": "http://schema.org", "@type": "WebSite", "url": "http://demo.tagmanageritalia.it/esempio/", "potentialAction": { "@type": "SearchAction", "target": "http://demo.tagmanageritalia.it/esempio/?s={search_term}", "query-input": "required name=search_term" } } </script>
Come al solito andiamo prima di pubblicare il Tag verifichiamo che nella modalità Anteprima compaia fra i Tags Fired On This Page:
Anche i Breadcrumbs visibili in SERP possono essere gestiti con Google Tag Manager.
Ecco come:
Il codice che devi incollare è questo:
<script type="application/ld+json"> { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "item": { "@id": "http://demo.tagmanageritalia.it/esempio/arts", "name": "Arts" } },{ "@type": "ListItem", "position": 2, "item": { "@id": "http://demo.tagmanageritalia.it/esempio/arts/books", "name": "Books" } },{ "@type": "ListItem", "position": 3, "item": { "@id": "http://demo.tagmanageritalia.it/esempio/arts/books/poetry", "name": "Poetry" } }] } </script>
Verifichiamo con la funzione Anteprima:
Le review sono le recensioni che è possibile vedere in SERP sotto alcuni siti. Possono avere formati diversi come le stelline, le percentuali, il punteggio da 1 a 10, ecc.). Anche queste sono gestibili con Google Tag Manager tramite Tag HTML personalizzato.
<script type="application/ld+json"> { "@context": "http://schema.org/", "@type": "Product", "image": "http://www.example.com/catcher-in-the-rye-book-cover.jpg", "name": "The Catcher in the Rye", "review": { "@type": "Review", "reviewRating": { "@type": "Rating", "ratingValue": "5" }, "name": "A masterpiece of literature", "author": { "@type": "Person", "name": "John Doe" }, "datePublished": "2006-05-04", "reviewBody": "I really enjoyed this book. It captures the essential challenge people face as they try make sense of their lives and grow to adulthood.", "publisher": { "@type": "Organization", "name": "Washington Times" } } } </script>
Ancora una volta verifichiamo che nella modalità Anteprima il Tag compaia fra i Tags fired on this page:
Come spesso capita, ogni pagina può avere prodotti diversi e quindi aver bisogno di review diverse. In questo caso le review andranno gestite con le variabili di Google Tag Manager.
Pensa ad esempio alle recensioni su singole pagine fatte dagli utenti. Immagina di poter utilizzare quei dati per creare i rich snippet.
Fantastico, no?
Google Tag Manager può aiutarti a modificare gli attributi HTML5, e questo può venirti in soccorso anche nella SEO.
Ma cosa sono gli Attributi HTML 5? Sono attributi inseriti all’interno degli elementi HTML che danno delle informazioni in più.
In GTM li puoi gestire con la variabile di tipo Elemento DOM se vuoi estrapolare i valori da un elemento HTML statico, oppure puoi farlo con gtm.element.dataset.[data-attribute], dove [data-attribute] è il nome specifico dell’attributo nel caso tu debba analizzare elementi dinamici (come ad esempio il click su elementi).
Questi attributi possono essere utilizzati per passare o gestire dati ed informazioni in Google Analytics.
Ecco un esempio (preso dalla guida di Mozilla):
<article id="electriccars" data-columns="3" data-index-number="12314" data-parent="cars"> ... </article>
Tieni presente che siamo noi a decidere queste informazioni aggiuntive degli elementi HTML.
Ecco come deve essere configurata la variabile in GTM:
Potresti anche utilizzare Javascript per leggere gli attributi, usando document.getElementById.
Ad esempio:
var article = document.getElementById('electriccars'); article.dataset.columns // "3" article.dataset.indexNumber // "12314" article.dataset.parent // "cars"
Non finisce qua, perché Google Tag Manager ti può aiutare a modificare Meta Title, Meta Description e persino i contenuti del sito.
Ti faccio vedere ad esempio come modificare il Title.
Il titolo della pagina tra le altre cose lo puoi prelevare con un semplice Javascript:
Grazie a un Tag HTML personalizzato, è possibile prendere il document.title e modificarne il valore sulla pagina che ti interessa. Insomma andiamo a variare con Javascript il titolo della pagina, in questo modo:
<script> document.title = "Il mio nuovo titolo di pagina ottimizzato "; </script>
A questo punto non ti resta che attendere che il Crawler di Google passi, scansioni ed esegua il rendering e il gioco è fatto 🙂
PS: Queste tecniche di modifica title, description ecc… dovrebbero essere usate come Workaround se non hai davvero altra soluzione!
Ti basterà smanettare con un po’ di codice. Ecco l’istruzione che dovrai usare in un tag di tipo HTML personalizzato:
document.querySelector("meta[name=\'description\']").setAttribute("content", "La mia nuova bellissima description");
Ed ecco fatto 🙂
PPS: se ti serve anche per altri scopi, il titolo della pagina lo puoi prelevare con un semplice Javascript:
E se ancora non ne hai abbastanza, ti lascio i link ad altre mie guide che potrebbero interessarti:
Ricordati che per rendere effettive le modifiche devi pubblicare il tutto cliccando sul pulsante blu “Invia” 😉
Ti è stato utile l’articolo? Vorresti aggiungere qualcosa? Lasciami un commento qui sotto 🙂
Negli ultimi mesi hai notato in Google Analytics 4 un calo improvviso e inspiegabile nelle…
Se ti trovi su questa guida è perché hai compreso che solo attraverso la Data…
Greenpeace è un'associazione globale che con azioni dirette e concrete denuncia i problemi ambientali e…
Da quando hai configurato la Consent Mode v2 (CM v2) hai notato cali improvvisi o…
Premesso che non è possibile conoscere l'esatto funzionamento né di Chrome, né degli algoritmi di…
Da quale canale di marketing arriva il maggior numero di conversioni? Quale campagna di marketing…
View Comments
Ciao,
sto provando ad implementare i dati strutturati di tipo NewsArticle tramite delle variabili soltanto che la url viene passata senza parsing e il risultato è qualcosa del genere https:\/\/www.dominio.it\/sezione\/pagina.
La stessa problematica si presenta per la url dell'immagine.
C'è un modo per effettuare correttamente il parsing, eventualmente anche degli apostorofi dei titoli, prima di passarli come variabili?
Grazie
Ciao Federico, non ho ben capito che variabili usi e come stai gestendo. Hai provato con una variabile JavaScript con lo stringify?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
Fammi sapere, nel caso invia a dettagli su https://www.facebook.com/groups/TagManagerItalia :)
Articolo molto interessante. Inserendo lo script per schema.org quando vado a utilizzare la variabile {{Page URL}} viene "lavorata" e al posto di http://www.... viene risposto http:\\/\\/www.
Come si puo fare per evitare che venga riscritto? Altrimenti non viene accettato dal validatore dei microdati
Esiste la possibilità? Grazie
Ciao Nicoletta non ho ben capito, perché il commento è stato troncato. Riesci a darmi dettagli nel gruppo di Facebook: https://www.facebook.com/groups/TagManagerItalia
Grazie!
Buongiorno Matteo,
per inserire la description con il title nello stesso script aggiungo document.description:
document.title = "";
document.description = "";
grazie
Ciao Gabriele. Ho aggiornato l'articolo mettendo cosa fare :)
Per il title va bene come hai indicato.
Per la description devi usare questa sintassi: document.querySelector("meta[name=\'description\']").setAttribute("content", "La mia nuova bellissima description");
A presto!
Ciao Matteo e grazie per queste preziose guide. Dopo aver implementato i vari tag presenti in questa guida nel mio ecommerce, ho notato una valutazione peggiore su pingdom e gtmetrix. Secondo te, può essere dovuto a questi tag o altri fattori? grazie :)
Grazie Mille!!
Figurati :)
Ciao Leon e grazie del feedback.
Allora dovrei aggiornare un po' la guida ufficiale di Google suggerisce di usare il fetch:
https://developers.google.com/search/docs/guides/generate-structured-data-with-javascript
Fammi sapere :)
Ciao Matteo, complimenti per la guida!
Dove posso analizzare le ricerche fatte una volta implementata la Search Box?
Sono raccolte in Google Analytics come "termini di ricerca"? E se si, c'è modo di differenziarle da quelle fatte nel sito?
Grazie!
Luigi
Ciao Luigi, sperando che Google te la implementi, troverai i riferimenti su GA sotto termini di ricerca. Non troverai altre distinzioni (a meno che tu non gli passi altri parametri).
A presto!
Ciao Matteo, quando implemento i Breadcrumbs con GTM tramite il codice che hai inserito nell'articolo, come fanno a cambiare in base ai breadcrumbs presenti nel sito? Cioè, con questo codice cambiano in modo dinamico a ogni pagina, visto che il tag si attiva su tutte le pagine?
Grazie mille
Ciao Alessandro, per poterlo fare ovviamente devi avere una struttura del sito che sia gestibile e non "a caso". Quindi se la dinamicità è casuale senza nessuna logica ahimè non è possibile creare un algoritmo che copra questi casi.
Fammi sapere se ti ho risposto :)
Ciao Matteo, da quando ho trovato il tuo sito web ho scoperto un mondo, anche se non sono affatto un esperto. In merito alle recensioni, il Tag che dici di incollare è relativo ad una recensione singola di una pagina (se non ho capito male)? Nel caso, come dovrei impostare il tag perché mostri tutte le recensioni presenti su un e-commerce? Ti ringrazio in anticipo per la tua gentile risposta
Ciao Michele, esistono vari tipi di review. Ti consiglio di guardare la guida ufficiale: https://developers.google.com/search/docs/guides/intro-structured-data. Puoiaggregare le review come meglio credi, l'importante è che siano reali!
A presto e mi fa piacere che tagmanageritalia ti sia utile.
Ciao Matteo e complimenti per le tue utilissime guide, sempre dettagliate.
Una domanda: i dati strutturati, inseriti tramite GTM, ho letto che il tool di google per la verifica non li vede perché legge solo il codice sorgente e non fa il rendering. Ficcando il naso ;) nelle tue pagine, ho visto un sacco di dati strutturati inseriti tramite il plugin Yoast. Posso chiederti perché? Presumendo che li inserirai anche tramite GTM non sono un doppione? Magari domanda stupida...
Ciao e grazie ancora
Ciao Raffaello e grazie dei complimenti.
Ti confermo che dall'anno scorso lo strumento di verifica di Google non esegue più il rendering (prima lo faceva).
Inserisco con GTM dei dati strutturati che Yoast non mette. Quindi non ci sono doppioni ;)
A presto!
Ciao Matteo complimenti per il tuo lavoro, a breve mi regalerò per natale il tuo libro con dvd, ti volevo fare una domanda, ho inserito nel mio sito , tramite tag manager il rich snippet eventi con j-son javascript , ho inserito all'interno dei campi le variabili per andare a estrapolare tutti i dati in modo dinamico, in modalità anteprima tutto funziona correttamente, la mia domanda è: è normale che quando vado a usare il test dati strutturati di google non vede il rich snippet evento ? se invece inserisco lo script direttamente nella pagina ovviamente lo compilo manualmente lo riconosce subito ? Grazie
Ciao Michele, mi fa piacere che ti regalerai il libro e DVD :)
Sì, è normale. Da Maggio il rich snippet tools non esegue il rendering ma guarda solo il source. Quindi per testarlo dovresti copiarti il rendering dell'HTML e incollare quello nello strumento di verifica rich snippet. Ti confermo al 100% che tutto funziona.
Oh, me lo ha detto personalmente John Mueller meno di un mese fa all'evento MBSummit ;)
Ciao Matteo,
ho appena provato ad inserire i dati strutturati sul mio sito web.
Ho individuato tre tipi di markup che potevo utilizzare, ho quindi optato per tre tag diversi. Credi che questo possa essere un problema?
Grazie
Ciao Daniele, in realtà se sono applicati nella stessa pagina ti consiglio di usare un unico Tag, se invece sono attivati su pagine diverse vai di tre tag distinti :)
Fammi sapere!