{"id":158,"date":"2026-10-04T20:28:11","date_gmt":"2026-10-04T19:28:11","guid":{"rendered":"https:\/\/www.matteobononi.it\/blog\/?p=158"},"modified":"2026-10-04T20:28:11","modified_gmt":"2026-10-04T19:28:11","slug":"dai-tracciamenti-a-un-sistema-per-analizzarli","status":"publish","type":"post","link":"https:\/\/www.matteobononi.it\/blog\/dai-tracciamenti-a-un-sistema-per-analizzarli\/","title":{"rendered":"Dai tracciamenti a un sistema con cui analizzarli"},"content":{"rendered":"<p>Di tracciamenti ne ho implementati e sistemati centinaia. Su siti diversi, con strumenti diversi e configurazioni che spesso si erano accumulate nel tempo.<\/p>\n<p>Il banner dei cookie c&#x27;\u00e8. Google Tag Manager anche. Qualcuno ha inserito Analytics, qualcun altro il pixel di Meta. Nel pannello sembra esserci tutto.<\/p>\n<p>Poi apri il debugger.<\/p>\n<p>Un tag arriva da GTM, un altro da un plugin, un altro ancora dal tema. Disattivi qualcosa e le chiamate continuano a partire. Oppure il banner raccoglie la scelta dell&#x27;utente, ma lo stato iniziale del consenso arriva dopo che una parte dei tracciamenti \u00e8 gi\u00e0 stata eseguita.<\/p>\n<p>Sono situazioni diverse, che incontro nel lavoro. Prima di aggiungere un tag devo capire chi sta gi\u00e0 facendo cosa, da dove e in quale momento.<\/p>\n<h2>Dove finisce la configurazione e comincia il codice<\/h2>\n<p>Ci sono anche le implementazioni che escono dal percorso previsto dal tutorial.<\/p>\n<p>Per dire: devi tracciare un form che invia senza ricaricare la pagina. Non c&#x27;\u00e8 una thank-you page. Il form potrebbe stare dentro un iframe, dentro un&#x27;applicazione che gestisce i propri passaggi senza cambiare pagina.<\/p>\n<p>Il click sul pulsante lo vedi, forse. Ma dopo quel click l&#x27;invio pu\u00f2 riuscire, fallire o fermarsi su un campo compilato male. Devi arrivare al segnale che ti interessa, capire chi lo produce e come farlo uscire da quel componente.<\/p>\n<p>Se l&#x27;applicazione incorporata pu\u00f2 comunicare con la pagina che la contiene, puoi lavorare su quel collegamento. Ho seguito anche integrazioni tramite <code>postMessage<\/code>, con gli sviluppatori che preparavano il segnale e i dati dell&#x27;evento, e la parte di tracciamento che li riceveva e li utilizzava. Servono interventi sui pezzi che devono parlarsi e prove sul flusso reale.<\/p>\n<p>Un&#x27;altra situazione: una conversione viene inviata pi\u00f9 volte. Puoi mettere una mitigazione in GTM, ma devi anche capire se l&#x27;applicazione sta comunicando nuovamente lo stesso fatto e quali casi rimangono fuori dalla tua correzione.<\/p>\n<p>\u00c8 qui che mi serve saper leggere e scrivere codice. Per seguire il funzionamento dell&#x27;applicazione, costruire il collegamento quando manca e verificare che i dati trasmessi corrispondano a quello che \u00e8 successo.<\/p>\n<h2>I pezzi installati raccontano solo una parte<\/h2>\n<p>Anche il consenso richiede questo tipo di lavoro. Il banner \u00e8 visibile; bisogna vedere come inizializza lo stato, come lo aggiorna e come gli altri componenti usano quei segnali.<\/p>\n<p>Una chiamata di rete prima dell&#x27;accettazione, da sola, non basta per capire se c&#x27;\u00e8 un errore: in Consent Mode avanzato possono partire ping senza cookie. Devi guardare lo stato e il comportamento previsto dall&#x27;implementazione. <a href=\"https:\/\/developers.google.com\/tag-platform\/security\/concepts\/consent-mode\">Documentazione Google<\/a>.<\/p>\n<p>Per questo mi interessa vedere quello che viene eseguito nel browser, oltre a quello che risulta configurato nei pannelli. Se le due cose non coincidono, devo risalire al passaggio che le separa.<\/p>\n<p>E le verifiche possono cambiare anche l&#x27;intervento che avevo in mente. Mi \u00e8 capitato di proporre di centralizzare i tracciamenti in GTM e poi, guardando meglio i moduli presenti, trovare componenti server-side e logiche di deduplica che aveva senso conservare. A quel punto il lavoro era organizzare la convivenza, evitando sovrapposizioni.<\/p>\n<p>Conoscere gli strumenti serve anche a capire quando lasciare un pezzo dov&#x27;\u00e8.<\/p>\n<h2>Quello che rimane dopo centinaia di interventi<\/h2>\n<p>Lavorando su queste cose accumuli dei percorsi di verifica. Sai quali origini controllare, quali segnali cercare, quali domande fare a chi sviluppa il sito. Alcune configurazioni le riconosci, altre ti costringono a cambiare strada.<\/p>\n<p>Poi, quando devi analizzare i dati, questa conoscenza torna utile anche dall&#x27;altra parte: sai che il numero nel report dipende da un&#x27;implementazione, e che trovare un difetto oggi non basta a spiegare quello che \u00e8 successo mesi fa.<\/p>\n<p>Una parte di quel lavoro si pu\u00f2 organizzare: interrogare le fonti, conservare i risultati, confrontare periodi, tenere insieme una verifica e il motivo per cui l&#x27;hai fatta. Le valutazioni richiedono comunque il contesto del sito e qualcuno che le controlli.<\/p>\n<p>Da qui sono arrivato al repository di analisi su cui sto lavorando con un agente IA.<\/p>\n<h2>Dare all&#x27;agente un ambiente con cui lavorare<\/h2>\n<p>Nel <a href=\"https:\/\/www.matteobononi.it\/blog\/un-repository-per-lavorare-con-i-dati\/\">primo articolo sul repository<\/a> ho raccontato come ho messo insieme script, istruzioni, percorsi di analisi e un registro delle evidenze.<\/p>\n<p>Qui mi interessa il motivo per cui quei pezzi hanno quella forma.<\/p>\n<p>Se conosco una materia, posso scegliere quali operazioni rendere disponibili all&#x27;agente e quali controlli chiedergli. Posso preparare strumenti per interrogare una fonte e salvare la risposta, ma anche istruzioni per specificare periodo e filtri, confrontare le osservazioni e lasciare aperta un&#x27;ipotesi quando manca una verifica.<\/p>\n<p>Durante il lavoro posso chiedere un approfondimento e l&#x27;agente pu\u00f2 eseguirlo usando gli strumenti disponibili. Il risultato rimane collegato alla richiesta e pu\u00f2 diventare il punto di partenza del passaggio successivo. Io porto il contesto, controllo le interpretazioni e modifico l&#x27;ambiente quando vedo che qualcosa manca o porta fuori strada.<\/p>\n<p>Questo sistema ha gi\u00e0 prodotto un&#x27;analisi e un documento. Alcune parti sono ancora legate alla prima esecuzione; il riuso su altri lavori va verificato. Le centinaia di interventi sono l&#x27;esperienza da cui parto, mentre l&#x27;ambiente per l&#x27;agente \u00e8 una cosa che sto costruendo e facendo evolvere.<\/p>\n<p>Mi interessa proprio questo collegamento: prendere un lavoro che conosco abbastanza da poterne discutere i dettagli e costruirci intorno strumenti capaci di eseguire una parte delle operazioni, conservando quello che fanno.<\/p>\n<p>Poi li uso. E mentre li uso vengono fuori altre cose da collegare, altri controlli da aggiungere, qualche istruzione che sembrava chiara e invece non lo era.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Centinaia di implementazioni, banner, tag e applicazioni da collegare. Da quel lavoro tecnico sto costruendo un ambiente in cui un agente IA pu\u00f2 eseguire verifiche e conservare le evidenze.<\/p>\n","protected":false},"author":1,"featured_media":159,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[58,57],"tags":[],"class_list":["post-158","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ia-applicata","category-tracciamenti"],"_links":{"self":[{"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/posts\/158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/comments?post=158"}],"version-history":[{"count":1,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/posts\/158\/revisions"}],"predecessor-version":[{"id":160,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/posts\/158\/revisions\/160"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/media\/159"}],"wp:attachment":[{"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/media?parent=158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/categories?post=158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/tags?post=158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}