Meetaly
HomeServiziProgettiClienti
Chi siamoBlogContatti
Parliamo
Meetaly

Software, Marketing e Design per far crescere il tuo business. Trasformiamo le tue idee in soluzioni digitali.

Link Rapidi

  • Servizi
  • Progetti
  • Clienti
  • Chi Siamo
  • Blog
  • Contatti

Contatti

  • admin@meetaly.agency
  • Via Croce del Papa 27/29
    80035 Nola (NA), Italia

Newsletter

Ricevi aggiornamenti su novità e articoli del blog.

© 2026 Meetaly Agency. Tutti i diritti riservati.

Privacy PolicyCookie Policy
Blog/Marketing & Growth
Marketing & GrowthGuida tecnica

Conversions API e CRM: come dire a Meta chi compra davvero (anche da Google Sheet)

Il modulo compilato non è una vendita. Finché Meta non sa quali contatti sono diventati clienti, continuerà a portarti chi compila più volentieri, non chi compra. Ecco come risolvere, anche partendo da un Google Sheet.

MMeetaly Team·2 ottobre 2026·10 min di lettura
Il ciclo completo

Ogni passaggio di stato nel CRM torna a Meta come evento.

Annunciocampagna Lead Ads
Modulolead_id
CRMcambio stato
Conversions APIevento a Meta
Meta ottimizzasu chi compra
l’algoritmo cerca persone simili a chi è diventato cliente
lead_id
il collegamento al contatto originale
event_time
il momento del cambio di stato, in secondi Unix
action_source
dice a Meta che l’evento arriva da un CRM
In questo articolo
  1. 01Il principio, in 30 secondi
  2. 02Step 1 · Crea il dataset
  3. 03Step 2 · Le fasi del funnel
  4. 04Step 3 · Conserva il lead ID
  5. 05Step 4 · Invia l’evento
  6. 06Esempio: il CRM su Google Sheet
  7. 07Step 5 · Ottimizza la campagna
  8. 08Checklist finale
  9. ?Domande frequenti
Ti va di parlarne?

Ti aiutiamo a collegare il tuo CRM a Meta, anche se oggi è un Google Sheet.

Parliamo del tuo caso
01 · Il principio

Il principio, in 30 secondi

Una campagna Lead Ads ottimizzata sui “contatti” impara a trovare persone che compilano moduli. Non sa nulla di cosa succede dopo: la chiamata, l’appuntamento, l’acquisto.

Il CRM serve a chiudere questo cerchio. Ogni volta che un lead fa un passo avanti nel tuo processo commerciale, lo comunichi a Meta. A quel punto puoi chiedere all’algoritmo di trovare persone simili a chi è diventato cliente.

Questa è la parte tecnica: dataset, eventi, codice. Se prima vuoi capire perché conta più della struttura delle campagne, parti da Lead generation su Meta Ads: la struttura perfetta non esiste.

02 · DatasetStep 1

Crea il dataset (il “pixel CRM”)

In Events Manager4 passaggi
  1. 1Apri Events Manager → Collega origini dati → CRM.
  2. 2Dai un nome al dataset e collegalo al tuo ad account e alla pagina Facebook che raccoglie i lead.
  3. 3Scegli Conversions API come metodo di integrazione (o un partner, se il tuo CRM ne ha uno nativo: HubSpot, Salesforce, Zoho e altri).
  4. 4Da Impostazioni del dataset genera un token di accesso. Annotati anche l’ID del dataset.
Attenzione al token

Il token dà accesso in scrittura ai tuoi eventi: va trattato come una password. Mai incollarlo in un file condiviso o in un foglio visibile ad altri.

03 · FunnelStep 2

Definisci le fasi del tuo funnel

Prima del codice viene la strategia. Scegli 3-5 stati che descrivono davvero il percorso del tuo cliente. Per una palestra, per esempio (come nel caso delle tre palestre in Campania):

Dagli stati del CRM agli eventi per Metaesempio · palestra
Stato nel CRMCosa significaNome evento da inviare
NuovoHa compilato il modulolead (invialo anche dal CRM)
ContattatoAbbiamo parlato al telefonocontattato
AppuntamentoHa prenotato una provaappuntamento
ClienteSi è iscritto/ha pagatoPurchase (con value e currency)

Anche lo stato “Nuovo” va inviato dal CRM, come evento lead. Il modulo lo registra già Meta, ma nelle indicazioni per l’integrazione CRM Meta chiede di inviare anche la fase iniziale: così vede tutto il percorso, dal modulo compilato fino alla vendita, e non solo gli ultimi passaggi. Per Purchase aggiungi il valore della vendita e la valuta: lo vediamo nel codice dello Step 4.

Regola pratica: ottimizza la campagna sull’evento più vicino alla vendita che raggiunge almeno qualche decina di occorrenze a settimana. Se le vendite sono troppo poche, parti dall’appuntamento.

Quali esiti segnare dopo la telefonata, e quando un contatto si può davvero dire “contattato”, lo spieghiamo lato vendite in I contatti di Facebook non rispondono? Cosa segnare nel CRM.

04 · Lead IDStep 3

Conserva il lead ID

Ogni lead raccolto con un modulo Meta ha un lead_id univoco (un numero di 15-17 cifre). È la chiave che permette a Meta di riconoscere il contatto con precisione quasi totale, senza dover “indovinare” da email o telefono.

Qualunque sia il modo in cui i lead arrivano nel tuo CRM (integrazione nativa, Zapier, Make, download CSV), assicurati che il lead_id venga salvato in una colonna, come testo e non come numero: più avanti vediamo perché.

05 · InvioStep 4

Invia l’evento quando cambia lo stato

La chiamata alla Conversions API per un evento CRM ha questa forma. Nell’esempio ci sono due eventi: un appuntamento e una vendita (Purchase) con il suo valore in euro.

Conversions API · evento CRMJSON
POST https://graph.facebook.com/v26.0/{ID_DATASET}/events?access_token={TOKEN}

{
  "data": [
    {
      "event_name": "appuntamento",
      "event_time": 1760950000,
      "action_source": "system_generated",
      "custom_data": {
        "event_source": "crm",
        "lead_event_source": "Il mio CRM"
      },
      "user_data": {
        "lead_id": "1234567890123456"
      }
    },
    {
      "event_name": "Purchase",
      "event_time": 1760953600,
      "action_source": "system_generated",
      "custom_data": {
        "event_source": "crm",
        "lead_event_source": "Il mio CRM",
        "value": 120.00,
        "currency": "EUR"
      },
      "user_data": {
        "lead_id": "6543210987654321"
      }
    }
  ]
}
I campi che fanno la differenzanel payload
event_time

Il momento del cambio di stato, in secondi Unix. Gli eventi più vecchi di 7 giorni vengono scartati, quindi invia con regolarità.

action_source:
"system_generated"

Dice a Meta che l’evento arriva da un CRM.

lead_id

Il collegamento al contatto originale, tra virgolette, come stringa. Con 15-17 cifre è oltre la precisione con cui JavaScript e Google Sheet gestiscono i numeri: se lo invii come numero le ultime cifre vengono arrotondate e Meta non ritrova più il contatto. Se non hai il lead_id, puoi usare email e telefono (campi em e ph), trasformati con hash SHA-256 dopo averli normalizzati: email in minuscolo e senza spazi; telefono con prefisso internazionale, solo cifre.

value
currency

Solo per la vendita: dentro custom_data metti l’importo (value) e la valuta (currency: "EUR"). Così Meta sa non solo chi ha comprato, ma quanto vale quella vendita.

06 · Esempio praticoGoogle Sheet

Esempio pratico: il CRM su Google Sheet

Niente software? Nessun problema. Un foglio Google ben fatto e uno script di una trentina di righe bastano per partire.

1. Prepara il foglio

Due cose da fare prima di incollare i lead, altrimenti lo script non funziona:

  1. aRinomina la scheda del foglio esattamente Lead: è il nome che lo script cerca.
  2. bSeleziona la colonna A e scegli Formato → Numero → Testo normale. Solo dopo incolla gli ID.
Google Sheet tiene solo 15 cifre

Se incolli un lead_id in una colonna numerica, Google Sheet conserva solo le prime 15 cifre e sostituisce le altre con zeri. L’ID cambia, e Meta non riesce più ad abbinarlo al contatto. Formatta la colonna come Testo normale prima di incollare: se gli ID sono già stati incollati come numeri, vanno reimportati.

Il foglio dei leadesempio
A · lead_idB · NomeC · StatoD · InviatoE · Valore
21234567890123456Mario R.appuntamentoappuntamento(vuoto)
36543210987654321Giulia B.Purchase(vuoto)120
Lead
A · lead_idformato Testo normale, prima di incollare gli ID
C · Statola aggiorna chi gestisce i contatti, dal menu a tendina
D · Inviatola scrive lo script, per non mandare due volte lo stesso evento

La colonna Stato la aggiorna chi gestisce i contatti, con un menu a tendina (Dati → Convalida dati) che contiene solo i nomi evento scelti allo Step 2. La colonna Inviato la scrive lo script, per non mandare due volte lo stesso evento. La colonna Valore è facoltativa: se la compili (in euro, come numero) lo script aggiunge all’evento value e currency; di solito serve solo sulle righe Purchase.

2. Aggiungi lo script

Da Estensioni → Apps Script, incolla:

Apps Script · inviaEventiCRMJavaScript
const DATASET_ID = 'IL_TUO_ID_DATASET';

function inviaEventiCRM() {
  const token = PropertiesService.getScriptProperties().getProperty('META_TOKEN');
  const sheet = SpreadsheetApp.getActive().getSheetByName('Lead');
  const rows = sheet.getDataRange().getValues();

  for (let i = 1; i < rows.length; i++) {
    const [leadId, , stato, inviato, valore] = rows[i];
    if (!leadId || !stato || stato === inviato) continue;

    const dati = { event_source: 'crm', lead_event_source: 'Google Sheet' };
    if (valore) {                    // colonna E facoltativa: solo se compilata
      dati.value = Number(valore);
      dati.currency = 'EUR';
    }

    const evento = {
      event_name: stato,
      event_time: Math.floor(Date.now() / 1000),
      action_source: 'system_generated',
      custom_data: dati,
      user_data: { lead_id: String(leadId).trim() }   // stringa, mai Number()
    };

    const res = UrlFetchApp.fetch(
      `https://graph.facebook.com/v26.0/${DATASET_ID}/events?access_token=${token}`,
      { method: 'post', contentType: 'application/json',
        payload: JSON.stringify({ data: [evento] }), muteHttpExceptions: true }
    );

    if (res.getResponseCode() === 200) sheet.getRange(i + 1, 4).setValue(stato);
    else console.log(`Riga ${i + 1}: ${res.getContentText()}`);
  }
}

3. Salva il token e automatizza

Token al sicuro, invio ogni ora3 passaggi
  1. 1In Impostazioni progetto → Proprietà script crea la proprietà META_TOKEN con il token dello Step 1. Così non compare nel codice.
  2. 2In Attivatori aggiungi un trigger temporizzato su inviaEventiCRM, ogni ora.
  3. 3Cambia lo stato di un lead di prova e lancia lo script a mano: in Events Manager, scheda Panoramica, l’evento compare entro pochi minuti.
Limite da conoscere

Questo script usa come orario dell’evento il momento dell’invio, non quello reale del cambio di stato. Con un trigger orario la differenza è trascurabile. Se vuoi precisione, aggiungi una colonna con data e ora dell’aggiornamento e usala per event_time.

07 · OttimizzazioneStep 5

Ottimizza la campagna sull’evento giusto

In Ads Managercampagna → gruppo → dataset
1 · CampagnaObiettivo Contatticrea o duplica una campagna
2 · Gruppo di inserzioniMassimizza il numero di lead di conversioneluogo della conversione: moduli istantanei
3 · DatasetIl dataset CRMcreato allo Step 1
  1. 1In Ads Manager crea (o duplica) una campagna con obiettivo Contatti.
  2. 2A livello di gruppo di inserzioni scegli Moduli istantanei come luogo della conversione e Massimizza il numero di lead di conversione come obiettivo di performance.
  3. 3Seleziona il dataset CRM creato allo Step 1.

Da quel momento Meta smette di inseguire chi compila più facilmente e inizia a cercare chi, nel tuo funnel, arriva fino in fondo. Serve pazienza: l’algoritmo ha bisogno di un paio di settimane di dati prima di dare il meglio.

08 · Checklist

Checklist finale

Prima di lanciare la campagnaCRM → Meta
  • Dataset CRM creato e collegato alla pagina
  • Fasi del funnel definite e uguali in tutto il team
  • lead_id salvato per ogni contatto
  • Eventi inviati entro 7 giorni dal cambio di stato
  • Campagna ottimizzata su “Massimizza il numero di lead di conversione”
Domande frequenti

Serve un programmatore?

Non per partire. Se il tuo CRM ha già un’integrazione nativa con Meta la scegli allo Step 1; altrimenti bastano un Google Sheet ben fatto e lo script da incollare in Estensioni → Apps Script, con il token salvato nelle proprietà dello script.

Funziona con HubSpot o Zoho?

Sì. HubSpot, Salesforce, Zoho e altri CRM hanno un partner nativo che puoi scegliere allo Step 1 al posto della Conversions API diretta. Il resto non cambia: stesse fasi del funnel per tutto il team e lead_id salvato per ogni contatto.

Quanto tempo prima di vedere risultati?

L’evento di prova compare in Events Manager entro pochi minuti. Per l’ottimizzazione serve pazienza: l’algoritmo ha bisogno di un paio di settimane di dati prima di dare il meglio, e l’evento scelto deve arrivare ad almeno qualche decina di occorrenze a settimana.

Vuoi capire perché tutto questo conta più di ABO, CBO e test sugli hook? Lo raccontiamo qui: Lead generation su Meta Ads: la struttura perfetta non esiste.

Vuoi che Meta impari da chi compra, non da chi compila?

HubSpot, Zoho, il gestionale che usi già o un Google Sheet: partiamo da come oggi i tuoi contatti diventano clienti e da cosa arriva a Meta.

Parliamo del tuo caso →
Da leggere dopo
Advertising · caso studioPalestre: +1.104 contatti in un mese con una campagna per corsoApri progetto →Dal blog · Marketing & GrowthLead generation su Meta Ads: la struttura perfetta non esisteLeggi l’articolo →Dal blog · Marketing & GrowthI contatti di Facebook non rispondono? Cosa segnare nel CRMLeggi l’articolo →