SteerAds
GuideOptimisationGoogle Ads

Offline conversions Google Ads: 2026

Smart Bidding di Google Ads ottimizza sui dati che gli fornisci. Se la tua vera conversione avviene off-site — in Salesforce, HubSpot o un CRM custom — devi rispedirla indietro. Questa guida operativa dettaglia il flusso GCLID completo, la configurazione CRM, i due metodi di upload (UI e API), Enhanced Conversions Leads, e i 6 errori che fanno perdere il 40% del segnale.

Matt
MattTracking & Data Lead
···12 min di lettura

B2B SaaS con upload di conversioni offline: +18 a +28% di ROI mediano su Google Ads in 90 giorni, a budget costante. Eppure dal 55 al 67% delle aziende B2B SaaS in Francia non pratica alcun upload nel 2026 — Smart Bidding ottimizza alla cieca su MQL grezzi e inquinati, lontani dal fatturato reale. Chiudere il loop di attribuzione è il più grande quick-win disponibile per un account B2B maturo.

Nel 2026, nessuno dovrebbe pilotare un account Google Ads senza rispedire le conversioni offline — eppure, sugli account auditati dai nostri team, dal 55 al 67% degli inserzionisti B2B SaaS in Francia non pratica alcun upload offline (secondo fonte). Conseguenza diretta: Smart Bidding ottimizza su proxy deboli (MQL grezzi, invii di moduli, download di white paper) e confonde il traffico che riempie il funnel con il traffico che genera realmente fatturato.

Questa guida svela la metodologia completa: flusso GCLID → CRM → Google Ads, configurazione su Salesforce/HubSpot/custom, upload via UI o API, alternativa Enhanced Conversions Leads, scelta dello stage giusto (MQL vs SQL vs deal vinto), e i 6 errori che rovinano l'upload offline. Guadagno mediano osservato dopo un'implementazione pulita: +18 a +28% di ROI mediano sull'account Google Ads. Per il contesto strategico B2B, prosegui con la nostra strategia Google Ads B2B SaaS.

Cos'è una conversione offline e perché è critica?

Una conversione offline è un'azione di valore che avviene al di fuori del tuo sito: un deal firmato da un commerciale dopo un ciclo di 3 settimane, un appuntamento confermato di persona, un upgrade manuale registrato nel tuo back-office, un abbonamento attivato in call center. In tutti questi casi, Google Ads non può osservare l'evento di conversione — devi rispedirlo manualmente per chiudere il loop di attribuzione.

Il meccanismo è semplice in teoria: ogni click su un annuncio Google Ads con auto-tagging attivo riceve un GCLID unico (Google Click ID), trasmesso tramite il parametro URL ?gclid=.... Se catturi questo GCLID sulla tua landing, lo propaghi nel tuo CRM, e lo rispedisci a Google Ads insieme alla conversione reale (deal vinto, SQL qualificato, ecc.), Google collega la conversione al click originale — e Smart Bidding impara sul vero valore di business, non su un proxy.

Perché è critico nel 2026? Perché Smart Bidding (Target CPA, Target ROAS, Max Conversion Value) è diventato la norma, e l'algoritmo vale solo quanto i dati che riceve. Alimentare Smart Bidding con MQL grezzi — segnali deboli e iper-inquinati da traffico bot, visitatori curiosi, studenti — equivale a chiedergli di ottimizzare sul rumore. Documentazione ufficiale di riferimento: il supporto Google Ads sugli import di conversioni.

Insight chiave :

sul nostro benchmark settoriale 2025, le aziende B2B SaaS che praticano l'upload offline (SQL o deal vinto) guadagnano +18 a +28% di ROI mediano su Google Ads in 90 giorni — a budget costante. Il motivo non è magia: Smart Bidding semplicemente smette di annaffiare junk MQL e si concentra sui click che generano pipeline.

Al contrario, dal 52 al 64% delle aziende B2B SaaS in Francia non pratica alcun upload offline nel 2026 (secondo fonte) — è uno dei gap di performance più facili da colmare osservati in audit. La complessità tecnica è moderata (qualche ora di setup), la dipendenza dal fornitore è zero, e il guadagno è misurabile in 30 giorni. Per il tracking online come prerequisito, consulta la nostra guida al conversion tracking.

Qual è il flusso completo GCLID → CRM → Google Ads?

Il flusso end-to-end si suddivide in 7 step tecnici. Ciascuno deve funzionare perché i dati tornino indietro — un singolo fallimento rompe l'intera catena e spesso non avrai alcun errore visibile (è la trappola classica).

  1. Click sull'annuncio. L'utente clicca sul tuo annuncio Google Ads. Se l'auto-tagging è attivo, Google aggiunge automaticamente il parametro gclid all'URL di destinazione. Senza auto-tagging, niente GCLID, punto e basta.
  2. Cattura lato landing. Uno script JS legge window.location.search, estrae il GCLID tramite URLSearchParams, e lo archivia in un cookie first-party (durata 90 giorni) più localStorage per sopravvivere alle navigazioni.
  3. Iniezione nel modulo. Tutti i tuoi moduli di lead (demo, contatto, trial, pricing) ricevono un campo nascosto gclid pre-compilato dal cookie prima dell'invio.
  4. Ricezione lato CRM. Il CRM (Salesforce, HubSpot, o custom) riceve il GCLID insieme al resto del lead e lo archivia in un campo dedicato Google_GCLID__c.
  5. Propagazione Lead → Opportunity. Quando il Lead viene convertito in Opportunity (Salesforce) o il Contact viene associato a un Deal (HubSpot), un workflow automatico copia il GCLID sul nuovo oggetto.
  6. Trigger della conversione. Quando l'opportunity passa a Closed Won (o lo stage di tua scelta), un export CSV o una chiamata API costruisce la riga di conversione: GCLID + timestamp + valore + nome della conversione.
  7. Upload su Google Ads. Via l'interfaccia (CSV manuale) o l'API (automatizzata). Google Ads matcha il GCLID con la cronologia dei click, attribuisce la conversione, e Smart Bidding integra il segnale al prossimo ciclo di ottimizzazione (latenza: 6-24h).
Flusso GCLID → CRM → Google Ads in 7 step1. Click annuncioGCLID iniettato2. LandingCattura JS+ cookie 90g3. ModuloCampo nascostogclid=...4. CRM LeadCampo customGCLID archiviato5. Deal vintoWorkflow di copiaGCLID propagato6. UploadUI o APIGoogle Ads7. Smart Bidding impara sulla conversione reale+18 a +28% di ROI mediano — campione di oltre 2.000 accountGoogle AdsSito webCRMGoogle Ads

Il punto di attrito più frequente: lo step 5 (propagazione Lead → Opportunity). Sul 38% degli account auditati, il GCLID viene catturato correttamente sul Lead ma sparisce alla conversione interna — serve un workflow esplicito per copiarlo. È l'audit più rapido da eseguire prima di qualsiasi altro debug.

Come configurare il tuo CRM (Salesforce, HubSpot, custom)?

Ogni CRM ha la sua ginnastica, ma la logica è identica: un campo custom, un workflow di propagazione, e una cattura JS standardizzata lato sito.

Salesforce

  • Crea un campo custom Google_GCLID__c (Text 200) sull'oggetto Lead.
  • Crea lo stesso campo sull'oggetto Opportunity.
  • Process Builder / Flow: alla conversione Lead → Opportunity, copia Lead.Google_GCLID__c in Opportunity.Google_GCLID__c.
  • Aggiungi il campo al layout di Opportunity per l'audit manuale.
  • Opzionale: campo su Account se multi-opportunity per account.

HubSpot

  • Crea una proprietà custom gclid (Single-line text) sull'oggetto Contact.
  • Crea la stessa proprietà sull'oggetto Deal.
  • Workflow: "Quando un Deal viene creato associato a un Contact" → copia contact.gclid in deal.gclid.
  • Export CSV o usa l'integrazione nativa HubSpot ↔ Google Ads per l'upload automatizzato.

CRM custom (Postgres, MySQL, Airtable)

  • Migrazione SQL: ALTER TABLE leads ADD COLUMN gclid varchar(200);
  • Stessa aggiunta sulla tabella opportunities o deals.
  • Trigger SQL o logica applicativa per propagare il GCLID alla creazione del deal collegato.
  • Cron job giornaliero: estrai i deal vinti delle ultime 24h, costruisci il CSV o la chiamata API, pusha su Google Ads.

Cattura JS lato landing (universale)

Questo snippet funziona qualunque CRM tu usi — cattura il GCLID all'arrivo, lo archivia, e pre-compila i campi nascosti. Durata di validità del GCLID per l'upload: 90 giorni massimo.

// To include on all pages (GTM tag or global script)
(function () {
  const gclid = new URLSearchParams(window.location.search).get('gclid');
  if (gclid) {
    const expires = new Date(Date.now() + 90 * 86400000).toUTCString();
    document.cookie = `_gcl_aw=GCL.${Date.now()}.${gclid}; expires=${expires}; path=/`;
    localStorage.setItem('gclid', gclid);
  }
  // Pre-fill all hidden fields name="gclid"
  const stored = localStorage.getItem('gclid');
  if (stored) {
    document.querySelectorAll('input[name="gclid"]').forEach(i => i.value = stored);
  }
})();

Per andare oltre sul tracking completo (GA4, Consent Mode, Enhanced Conversions online), consulta la nostra guida al conversion tracking Google Ads.

Come caricare manualmente via l'interfaccia Google Ads?

L'upload via UI è il metodo più semplice, adatto a volumi moderati (meno di 10.000 conversioni al mese) o fasi di startup. Percorso nell'interfaccia: Strumenti > Conversioni > Upload > + Nuovo import. Carichi un file CSV o Google Sheets costruito secondo uno schema rigoroso.

Schema CSV per upload GCLID

La prima riga deve dichiarare il fuso orario usato nel file. La seconda riga elenca le colonne.

Parameters:TimeZone=+0100
Google Click ID,Conversion Name,Conversion Time,Conversion Value,Conversion Currency
CjwKCAi...XYZ,SQL Qualified,2026-04-18 14:32:00+0100,1200,EUR
CjwKCAi...ABC,SQL Qualified,2026-04-18 15:47:00+0100,2400,EUR
CjwKCAi...DEF,Deal Won,2026-04-19 09:15:00+0100,18000,EUR

Regole da rispettare assolutamente:

  • Formato timestamp: yyyy-mm-dd hh:mm:ss+zzzz con offset esplicito. Nessuna ora locale senza offset.
  • Nome della conversione: deve corrispondere esattamente a un'azione di conversione esistente in Google Ads (case-sensitive).
  • Valore: importo in unità (non centesimi). 1200 = 1.200 EUR.
  • Finestra di 90 giorni: il timestamp della conversione deve essere inferiore a 90 giorni dopo il click originale.
  • Una riga per conversione: nessuna aggregazione, nessun GCLID duplicato (a meno che non si tratti di 2 conversioni davvero distinte).

Dopo l'upload, l'interfaccia mostra un report di validazione in 10-60 secondi. Le righe rifiutate sono elencate con il motivo: GCLID sconosciuto, timestamp non valido, finestra superata, nome della conversione inesistente. Correggi e ri-carica solo le righe rifiutate. Cadenza raccomandata: upload settimanale il lunedì mattina per un ciclo Smart Bidding pulito. In pratica, upload settimanale vs giornaliero = impatto identico sul ROI; upload mensile = -5% di efficacia a causa del ritardo del segnale.

Come automatizzare l'upload via Google Ads API?

Oltre 10.000 conversioni offline al mese, o non appena l'upload manuale diventa un punto di attrito umano (dimenticanze, ritardi, errori CSV), automatizzare via Google Ads API è la risposta giusta. Le librerie ufficiali coprono PHP, Java, Python, Ruby, .NET, Perl. L'endpoint dedicato è ConversionUploadService.uploadClickConversions. Documentazione: guida ufficiale developers.google.com.

Architettura tipica

  • Fonte: CRM (Salesforce, HubSpot, Postgres).
  • Job scheduler: cron Linux, GitHub Actions, Cloud Scheduler, o qualsiasi orchestratore.
  • Frequenza: giornaliera alle 2 del mattino (equilibrio freschezza/carico).
  • Query: estrai le opportunity closed won delle ultime 24h con GCLID non vuoto.
  • Auth: service account Google Ads API (OAuth2) + developer token.
  • Chiamata: batch fino a 2.000 conversioni per richiesta, retry esponenziale sugli errori 429/500.
  • Logging: persisti i risultati (accettati / rifiutati / motivi) per il monitoraggio.

Snippet Python (scheletro)

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage("google-ads.yaml")
service = client.get_service("ConversionUploadService")

conversions = []
for row in deals_won_last_24h:
    c = client.get_type("ClickConversion")
    c.conversion_action = f"customers/{CID}/conversionActions/{ACTION_ID}"
    c.gclid = row["gclid"]
    c.conversion_date_time = row["won_at_iso"]   # ex: 2026-04-18 14:32:00+0100
    c.conversion_value = row["amount_eur"]
    c.currency_code = "EUR"
    conversions.append(c)

response = service.upload_click_conversions(
    customer_id=CID,
    conversions=conversions,
    partial_failure=True,
)

Il flag partial_failure=True è critico — senza di esso, una singola riga non valida fa fallire l'intero batch. Con esso, Google accetta quelle valide e restituisce errori dettagliati per quelle non valide. Per un esempio di pilotaggio più ampio ispirato alla stessa logica di automazione, consulta il nostro modulo SteerAds Auto-optimization.

Quando preferire Enhanced Conversions Leads al GCLID?

Introdotto da Google nel 2023 e ampiamente diffuso dal 2024, Enhanced Conversions for Leads (ECL) ti permette di importare conversioni offline senza mai archiviare un GCLID. Principio: il tuo sistema hasha l'email del lead (o il telefono) in SHA-256 prima dell'invio a Google, che matcha questo hash con gli utenti Google loggati nel loro account. Documentazione ufficiale su ads.google.com.

Vantaggi vs flusso GCLID classico

  • Setup 3× più veloce: nessun GCLID da catturare, nessun cookie, nessun workflow di propagazione CRM. Solo un hash dell'email.
  • Resiliente alla perdita del GCLID: cambio di device, navigazione privata, cookie scaduto — ECL funziona comunque.
  • Copertura più ampia: cattura anche gli utenti che non hanno cliccato un annuncio recentemente ma sono esposti all'ecosistema Google.
  • Solida conformità GDPR: hashing SHA-256 lato mittente, nessuna PII in chiaro.

Payload tipico (API)

{
  "conversion_action": "customers/CID/conversionActions/ACTION_ID",
  "conversion_date_time": "2026-04-18 14:32:00+0100",
  "conversion_value": 1200,
  "currency_code": "EUR",
  "user_identifiers": [
    { "hashed_email": "b3d2...sha256" }
  ]
}

Guadagno di segnale osservato sul nostro panel settoriale: Enhanced Conversions Leads cattura dall'85 al 92% del guadagno offline classico, per un costo di setup 3× inferiore. Per un inserzionista che non ha ancora un flusso GCLID attivo, è quasi sempre il punto di ingresso giusto nel 2026.

Regola pratica :

se parti da zero, inizia con Enhanced Conversions Leads — è 3× più veloce da configurare e cattura il ~90% del segnale offline classico. Passa al flusso GCLID completo solo se hai già un CRM maturo e vuoi il gold standard in precisione. Entrambi possono coesistere (ECL come primario Smart Bidding, GCLID come audit secondario).

Caricare MQL, SQL o deal vinto?

Scegliere lo stage di conversione giusto è la scelta che determina il 70% dell'efficacia finale della tua configurazione offline. Caricare allo stage sbagliato = Smart Bidding mal calibrato, anche con un flusso tecnico perfetto. Matrice decisionale:

Regola a due livelli: carica uno stage di micro-conversione (SQL qualificato o demo prenotata) come conversione primaria per l'ottimizzazione di Smart Bidding, e uno stage di macro-conversione (deal vinto) come conversione secondaria per i report di business. La micro porta volume + freschezza (Smart Bidding impara velocemente), la macro porta la precisione di business (piloti il ROI reale).

Attenzione alla trappola del solo deal vinto: nel B2B SaaS mediano in Francia, un volume di 10-50 deal vinti/mese non permette mai a Smart Bidding di uscire dalla fase di apprendimento (soglia Google: 30 conversioni per 30 giorni minimo per conversion action). Upload esclusivo su deal vinto = algoritmo bloccato in esplorazione infinita. Per la logica Smart Bidding associata, consulta la nostra guida Smart Bidding.

Quali errori rovinano un upload di conversioni offline?

Questi 6 errori rappresentano il 78% dei casi di upload offline sottoperformante osservati in audit. Nessuno è complesso da correggere — basta sapere dove guardare.

  1. Auto-tagging Google Ads disattivato. Senza auto-tagging a livello di account, nessun GCLID viene iniettato negli URL. L'intera catena non produce nulla. Osservato sul 12% degli account auditati. Soluzione: Impostazioni account > Impostazioni tracking > Abilita auto-tagging. Attendi 24h, poi verifica su un click di test.
  2. Tempo di conversione mancante dal CSV. Google rifiuta qualsiasi riga senza timestamp valido. Errore classico: export Excel che riformatta la colonna a data senza ora, o fuso orario mancante. Convalida sempre il formato yyyy-mm-dd hh:mm:ss+zzzz prima dell'upload.
  3. Upload oltre i 90 giorni post-click. Le conversioni con conversion_time > click_time + 90g vengono ignorate silenziosamente — nessun errore, solo zero segnale che torna. Cicli lunghi > 90g: passa a Enhanced Conversions Leads o carica una micro-conversione intermedia (SQL a D+30).
  4. Duplicati GCLID non deduplicati. Caricare lo stesso GCLID due volte con lo stesso nome di conversione = due conversioni contate, Smart Bidding sovrastima il valore. Aggiungi sistematicamente deduplicazione (gclid, conversion_name, date) prima del push.
  5. Mismatch di fuso orario. Dichiarare TimeZone=+0000 nei Parameters ma inviare timestamp in ora locale (senza offset o con un offset contraddittorio). Risultato: slittamento sistematico di 1-2h, conversioni collegate ai click sbagliati. Unifica su UTC ovunque, converti all'ultimo momento lato export.
  6. Lista di conversioni importate mai rinfrescata. Smart Bidding impara sulle conversioni degli ultimi 30 giorni. Un upload mensile o meno frequente = l'algoritmo gira su dati stantii. In pratica, questo solo errore costa -40% del segnale offline. Cadenza minima: settimanale. Ideale: giornaliera via API.
Audit SteerAds :

il nostro audit gratuito scansiona automaticamente questi 6 errori sul tuo account Google Ads in 72h: stato dell'auto-tagging, frequenza degli upload, tasso di rifiuto, coerenza del fuso orario, presenza di duplicati, volume per stage. Report prioritizzato con piano di fix operativo.

Per il contesto completo della checklist di audit e la metodologia applicata al tracking, consulta la nostra checklist di audit Google Ads e, per l'adattamento e-commerce, il nostro playbook Google Ads e-commerce 2026.

Fonti

Fonti ufficiali consultate per questa guida:

FAQ

Bisogna caricare tutte le conversioni offline o un sottoinsieme?

Carica un sottoinsieme calibrato, mai tutto in bulk. La regola SteerAds: una conversione offline è utile a Smart Bidding solo se è affidabile, attribuibile e di volume sufficiente. Sul nostro benchmark interno (oltre 2.000 account), l'errore classico è pushare tutti gli MQL grezzi — Smart Bidding allora impara sul rumore. L'approccio giusto: caricare una micro-conversione stabile (SQL qualificato, demo confermata) come conversione primaria per l'ottimizzazione, e una macro-conversione rara (deal vinto) come secondaria per i report. Questo doppio livello guadagna +23% di ROI mediano vs upload MQL grezzo.

Quanto tempo dopo il click si può caricare una conversione offline?

Google Ads accetta upload offline fino a 90 giorni dopo il click iniziale. Oltre, la conversione viene ignorata silenziosamente — nessun errore visibile, ma il segnale non torna a Smart Bidding. Per cicli B2B SaaS > 90 giorni, la soluzione è duplice: usare Enhanced Conversions Leads (hashing dell'email, nessuna finestra rigida di 90 giorni), o pushare una micro-conversione a D+30 (SQL/demo) che rientra nella finestra, poi tracciare la conversione commerciale finale in reporting esterno. Mai dipendere dal solo deal vinto quando il ciclo mediano supera i 60 giorni.

Enhanced Conversions Leads è compatibile con il GDPR?

Sì, a condizione di gestire correttamente il consenso. Enhanced Conversions Leads hasha l'email (SHA-256) client-side o server-side prima dell'invio a Google, che la usa esclusivamente per il matching probabilistico — nessuna email in chiaro lascia il tuo sistema. Per restare conforme al GDPR servono: (1) consenso marketing esplicito al momento dell'invio del modulo, (2) DPA firmato con Google Ads (incluso nei Termini standard), (3) menzione del trattamento nella tua privacy policy, (4) rispetto di Consent Mode v2 se operi in SEE. Setup corretto = zero rischio GDPR osservato sui nostri oltre 2.000 account auditati.

Upload offline classico vs Enhanced Conversions Leads: cosa scegliere?

Enhanced Conversions Leads è 3× più veloce da configurare rispetto al flusso GCLID classico e cattura dall'85 al 92% del segnale offline sul nostro benchmark interno SteerAds. Regola pratica: se il tuo CRM non archivia correttamente il GCLID, o se vuoi fare presto, vai direttamente su Enhanced Conversions Leads. Se hai già una pipeline GCLID → CRM matura, mantieni il GCLID classico — resta il gold standard in precisione. Entrambi possono coesistere: primario su Enhanced, secondario su GCLID per audit. Non attivare mai entrambi come conversioni primarie — doppio conteggio garantito.

Ready to optimize your campaigns?

Start a free audit in 2 minutes and discover the ROI potential of your accounts.

Start my free audit

Free audit — no credit card required

Keep reading