Via Cà Matta 2 - Peschiera Borromeo (MI)
+39 02 00704272
info@synaptica.info

Integrazione Server-Side di Google Analytics 4 (GA4)

Digital Innovation Partner

Integrazione Server-Side di Google Analytics 4 (GA4)

 

Perché passare al server-side tracking?

L’integrazione tradizionale con gtag.js o Google Tag Manager prevede l’invio degli eventi direttamente dal browser dell’utente. Tuttavia, sempre più aziende stanno adottando l’approccio server-side per:

  • superare i limiti dei cookie bloccati dai browser
  • mantenere il controllo dei dati per motivi di compliance (es. GDPR)
  • inviare dati anche da sistemi backend non web (es. app mobile, IoT, ecc.)
  • ottimizzare il tracciamento evitando JS lato client

L’integrazione server-side può anche essere usata contemporanemente all’integrazione cliet-side “gtag.js” e crea una soluzione “ibrida” che ha il grosso vantaggio di poter inviare in modo molto controllato e preciso eventi specifici, tipo login, purchase, aggiunta  al carrello, etc…

Confronto: client-side, server-side e ibrido

Approccio Vantaggi Svantaggi
Client-Side (gtag.js) Facile da implementare, visibile nel browser, supporta geolocalizzazione automatica Bloccabile da adblock/cookie policy, poco controllo
Server-Side Massimo controllo, niente JS sul sito, integrabile in ambienti closed-source Richiede gestione sessioni, user-agent, IP, niente geo/tech info automatica
Ibrido Combina i vantaggi dei due, fallback affidabile Più complesso da orchestrare

Come ottenere il Measurement ID e l’API Secret

  1. Accedi a Google Analytics
  2. Vai nella proprietà GA4 desiderata
  3. Nel menù di sinistra clicca su Amministrazione (in basso)
  4. In “Proprietà”, clicca su Stream di dati
  5. Seleziona lo stream attivo (ad esempio quello Web)
  6. Troverai il tuo Measurement ID in alto (formato: G-XXXXXXX)
  7. Scorri verso il basso fino alla sezione Tagging tramite protocollo di misurazione oppure API secret di Measurement Protocol
  8. Clicca su API SecretsCrea
  9. Assegna un nome (es. xtumble-server) e copia l’API Secret

Per maggiori dettagli, puoi consultare la documentazione ufficiale:
GA4 Measurement Protocol Developer Guide

Esempio chiamata CURL

Qui sotto un esempio reale di chiamata ad Analytics per inviare un evento (page_view):

curl -X POST 'https://www.google-analytics.com/mp/collect?measurement_id=G-XXXXXXXXXX&api_secret=YOUR_SECRET' \
  -H 'Content-Type: application/json' \
  -d '{
    "client_id": "abc123-session-uid",
    "user_id": "usr_45",
    "events": [
      {
        "name": "page_view",
        "params": {
          "page_location": "https://xtumble.com/prod/145",
          "page_title": "Dettaglio Prodotto",
          "engagement_time_msec": "450"
        }
      }
    ]
  }'

Esempio CURL: invio evento purchase a GA4

Questo snippet mostra come inviare un evento di acquisto con i parametri minimi obbligatori (senza lista dettagliata degli item):

curl -X POST 'https://www.google-analytics.com/mp/collect?measurement_id=G-XXXXXXXXXX&api_secret=YOUR_SECRET' \
  -H 'Content-Type: application/json' \
  -d '{
    "client_id": "abc123-session-uid",
    "user_id": "usr_45",
    "events": [
      {
        "name": "purchase",
        "params": {
          "transaction_id": "ORD123456789",
          "currency": "EUR",
          "value": 129.99
        }
      }
    ]
  }'

Note:

  • transaction_id: identificativo univoco dell’ordine (obbligatorio)
  • currency: codice ISO a 3 lettere, es. EUR, USD
  • value: valore totale dell’acquisto (può includere IVA e spedizione)
  • Items opzionali

Note importanti:

  • client_id: deve essere stabile per sessione (può essere un hash SHA256 della session cookie)
  • user_id: opzionale ma consigliato per utenti autenticati
  • engagement_time_msec: migliora il tracciamento di sessioni attive
  • Per testare, puoi usare l’endpoint https://www.google-analytics.com/debug/mp/collect

Consigli finali

  • Filtra i bot (user-agent) e le richieste asset (.css, .png, .js, ecc.)
  • Verifica sempre il codice di risposta HTTP (204 = OK, ma silenzioso)
  • Per monitorare utenti attivi, invia eventi con client_id coerente + engagement_time

Autore: Ivan Revelli · XTumble · Synaptica SRL