Il server serve se risolve un problema definito

Un progetto server-side dovrebbe cominciare da un problema osservabile: parametri incoerenti tra destinazioni, controlli insufficienti sui dati in uscita, dipendenza da integrazioni difficili da verificare. Installare un server senza chiarire quale problema deve risolvere aggiunge un componente da mantenere e un altro punto in cui cercare gli errori.

Per questo chiediamo tre cose prima del disegno tecnico: quali eventi servono all'azienda, quali destinazioni li devono ricevere e chi possiede le informazioni necessarie. Il risultato è un contratto di misurazione. Per ogni evento contiene origine, significato, campi ammessi e comportamento previsto rispetto alle preferenze dell'utente. Il server viene progettato a partire da quel contratto.

1. Distingui richiesta, client, evento e tag

Simo Ahava descrive il contenitore server come un endpoint che riceve richieste HTTP: un client le interpreta e genera dati evento, sui quali lavorano variabili, trigger e tag. I tag costruiscono poi le richieste verso le destinazioni. Nel debug, dato in ingresso e payload in uscita possono quindi avere struttura e contenuto differenti.

Disegna il percorso di un solo evento, ad esempio un acquisto. Identifica chi ne certifica l'esistenza, chi lo invia e chi ne usa i dati. Se il server riceve esclusivamente un evento generato nel browser, quel flusso continua a dipendere dal fatto che il browser lo generi e lo trasmetta. Rendere esplicita questa dipendenza evita promesse infondate di raccolta completa.

Esempio operativoDati illustrativi, non dati cliente
SegnaleControlloDecisione
Request al tagging serverRisposta 200Passare al client
Client riconosce la richiestacurrency assente in event_dataCorreggere la mappatura
Tag eseguitoEndpoint restituisce 400Verificare payload e consenso
La decisione arriva dopo il controllo del dato e del contesto, non dal numero isolato.

2. Trasporta le preferenze e verifica ogni destinazione

Ahava evidenzia il lato meno visibile dell'architettura: dal browser si osserva l'invio al server, ma non tutto ciò che il server inoltra. Proponiamo quindi una matrice evento–destinazione–campi–condizioni collegata alla configurazione pubblicata. Serve a rendere verificabile ogni inoltro anche quando un'estensione del browser non può mostrarlo.

Non attribuire automaticamente a ogni template lo stesso comportamento rispetto al consenso. Per ogni destinazione descrivi condizioni di invio e campi disponibili. Un evento ricevuto non diventa utilizzabile da tutti i tag. Il progetto deve rispettare le preferenze raccolte; non promettere raccolta completa o aggiramento dei blocchi come conseguenza dello spostamento su un server.

3. Limita e modifica i dati in modo verificabile

Nella guida sulle Transformations, Ahava spiega che le regole producono una versione dei dati per i tag interessati: non riscrivono indiscriminatamente l'evento originale. Puoi consentire, escludere o modificare parametri, scegliendo condizioni e tag coinvolti. Con più regole conta anche l'ordine di applicazione. Controlla quindi la combinazione effettiva delle trasformazioni.

Partiamo da un elenco minimo motivato, e per ogni campo scriviamo l'uso concreto. Una URL completa può contenere informazioni che non vuoi inoltrare; un nome evento mal standardizzato può attivare un tag inatteso. Prima di introdurre una trasformazione confrontiamo dato originale, dato modificato e richiesta finale. Inoltre, controlliamo permessi e comportamento dei template: la configurazione dei campi evento non sostituisce una revisione dell'intera integrazione.

4. Segui il guasto in ordine

Matilda Wassgren, su e-dialog, segue la richiesta nei Preview web e server e confronta Event Data, Modified event data e richieste in uscita. Segnala un equivoco concreto: cambiare l'URL del Preview non cambia dove il tag web spedisce i dati. Verifica server_container_url e ambiente selezionato quando il server sembra non ricevere eventi.

Usiamo questa sequenza per restringere la diagnosi. Nessuna richiesta in ingresso? Verifichiamo invio dal browser, indirizzo e raggiungibilità. Richiesta presente ma nessun evento utile? Guardiamo client e formato. Evento corretto ma tag fermo? Controlliamo condizioni e variabili. Tag eseguito ma dato assente a destinazione? Ispezioniamo payload in uscita e risposta. Cambiare contemporaneamente tutti questi livelli rende più difficile capire quale intervento abbia risolto il problema.

Esempio operativo: una allowlist elimina la valuta

Immagina un evento purchase che entra nel server con identificatore ordine, valore, valuta e prodotti. Una nuova trasformazione consente soltanto tre campi e dimentica currency. Il tag risulta eseguito, ma la richiesta finale non contiene più la valuta attesa. Guardare soltanto il browser porta fuori strada: lì il parametro esiste ancora.

Il test mette a confronto tre copie: richiesta ricevuta, dati disponibili al tag dopo la trasformazione, richiesta inviata. La differenza individua il punto esatto da correggere. Aggiorniamo la regola, ripetiamo il caso e controlliamo anche gli altri tag coinvolti dalla stessa trasformazione. Il caso mostra perché una spunta di esecuzione non può chiudere da sola il collaudo.

5. Progetta anche manutenzione e responsabilità

Una volta verificato il percorso, assegna un proprietario a dominio, infrastruttura, template e monitoraggio. Definisci come vengono pubblicate le versioni, chi può modificare le destinazioni e come si torna alla versione precedente. Mantieni separati gli accessi dei fornitori e registra le modifiche che possono influire sulla raccolta. Il contenitore è parte di un sistema operativo, non un'installazione da dimenticare.

Nei log conserviamo soprattutto identificatore tecnico, tipo evento, esito, latenza e versione della configurazione. Il contenuto completo delle richieste richiede una scelta esplicita su necessità, accessi e conservazione: aggiungerlo ovunque per comodità rende il debug più pesante e amplia i dati da governare. Un registro essenziale deve comunque permettere di individuare i lotti e gli eventi da approfondire.

6. Stabilisci come dimostrare che funziona

La consegna finale comprende casi di prova, risultati attesi, evidenze osservate e problemi rimasti aperti. Includi eventi validi, eventi incompleti, nuove prove dopo una modifica delle preferenze e una destinazione temporaneamente non disponibile. La profondità del test dipende dall'architettura effettiva: una pipeline con code e tentativi richiede verifiche diverse da un semplice inoltro.

Valuta il progetto sul problema iniziale. Hai reso controllabili i parametri? Sai spiegare perché un evento non è uscito? Riesci a intervenire senza modificare alla cieca il sito? Queste sono verifiche concrete. Un miglioramento delle metriche pubblicitarie resta da misurare; non è una conseguenza garantita dello spostamento dei tag su un server.

Fonti e approfondimenti

Riferimenti citati nella guida. Gli esempi numerici sono illustrativi.