L’integrazione server-side (SS) di Google Ads rappresenta un salto di qualità rispetto alle tradizionali implementazioni client-side tramite tag o JavaScript. Dal punto di vista architetturale, consente un controllo più sicuro, affidabile e auditabile su tutte le conversioni inviate verso Google Ads.
Immagina questo scenario pratico per comprendere come Xtumble gestisce il tracciamento delle conversioni nel pieno rispetto della privacy e del GDPR:
https://www.tecnomodelcar.com/?gclid=Cj0KCQjwpf7CB...&gad_campaign_id=123456789&gad_source=google&gad_medium=search
I principali parametri sono:
gclid: Google Click ID (identificativo unico del clic)gad_campaign_id: ID della campagna Google Adsgad_source, gad_medium: informazioni su sorgente e tipo di trafficogclid è fondamentale perché consente di segnalare a Google che quel clic ha generato una conversione.
purchase)sign_up)mailing_list_subscribe)add_to_cart)
{
"conversions": [
{
"gclid": "Cj0KCQjwpf7CB...",
"conversionAction": "customers/1234567890/conversionActions/9876543210",
"conversionDateTime": "2025-06-28 14:58:56+02:00",
"conversionValue": 89.90,
"currencyCode": "EUR",
"orderId": "ORD123456789"
}
],
"partialFailure": true
}
Questo permette a Google Ads di attribuire correttamente la conversione alla campagna originale.
Xtumble invia gli eventi di tracciamento a Google solo dopo l’approvazione esplicita dell’utente finale del sito ecommerce, tramite il banner cookie conforme al GDPR.
Anche se sul sito non sono presenti cookie di terze parti visibili, il sistema garantisce tracciamento accurato in modalità server-side nel pieno rispetto delle normative sulla privacy e del principio di minimizzazione dei dati.
Per poter integrare Google Ads via API è necessario ottenere:
client_idclient_secrethttps://www.googleapis.com/auth/adwordsL’operazione non richiede particolari competenze tecniche e può essere completata in meno di 60 secondi.
Il cliente accede tramite browser a un URL come questo:
https://accounts.google.com/o/oauth2/v2/auth?client_id=YOUR_CLIENT_ID&response_type=code&scope=https://www.googleapis.com/auth/adwords&redirect_uri=https://your-platform.com/oauth2callback&access_type=offline&prompt=consent&state=SESSION_ID
curl -X POST https://oauth2.googleapis.com/token \
-d "code=RECEIVED_CODE" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET" \
-d "redirect_uri=https://your-platform.com/oauth2callback" \
-d "grant_type=authorization_code"
Risposta:
{
"access_token": "ya29...",
"expires_in": 3599,
"refresh_token": "1//0...",
"scope": "https://www.googleapis.com/auth/adwords",
"token_type": "Bearer"
}
curl -X POST \
https://googleads.googleapis.com/v15/customers/6214438139/googleAds:search \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "developer-token: YOUR_DEV_TOKEN" \
-H "login-customer-id: 6214438139" \
-H "Content-Type: application/json" \
-d '{
"query": "SELECT conversion_action.id, conversion_action.name, conversion_action.status FROM conversion_action"
}'
curl -X POST \
https://googleads.googleapis.com/v15/customers/6214438139:uploadClickConversions \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "developer-token: YOUR_DEV_TOKEN" \
-H "login-customer-id: 6214438139" \
-H "Content-Type: application/json" \
-d '{
"conversions": [
{
"gclid": "EAIaIQobChMI...",
"conversionAction": "customers/6214438139/conversionActions/9876543210",
"conversionDateTime": "2025-06-18 16:45:00+02:00",
"conversionValue": 89.90,
"currencyCode": "EUR"
}
],
"partialFailure": true,
"validateOnly": false
}'
In una prossima revisione integreremo anche esempi in Delphi e un flusso completo multi-tenant con fallback automatico del
access_tokenviarefresh_token.
Autore: Ivan Revelli, CTO @ Synaptica SRL
Data: Giugno 2025