2026-08-06
Match rate basso su Meta Ads con audience da CDP: cause e fix passo passo
Hai esportato la lista clienti dal tuo CDP, l'hai caricata come Custom Audience su Meta Ads e il match rate che vedi in Events Manager è basso — tipo 20-40% invece del 60-90% che ti aspettavi. I dati nel CDP sono puliti, la lista è aggiornata, ma Meta non riconosce la maggior parte dei contatti. Se è questo il problema che stai guardando in questo momento, il colpevole quasi sempre non è la qualità del dato di partenza, ma come viene formattato ed esportato prima dell'upload.
Perché succede
- Normalizzazione mancante prima dell'hashing. Meta si aspetta email in minuscolo, senza spazi, e numeri di telefono in formato E.164 (con prefisso internazionale, senza spazi né trattini). Se il CDP esporta "Nome.Cognome@Gmail.com " con lo spazio finale o il maiuscolo, l'hash SHA-256 generato è diverso da quello che Meta calcola internamente per il confronto: zero match su quel record, anche se l'email è corretta.
- Telefono senza country code. Molti CDP salvano il numero come inserito dall'utente nel form (es. "333 1234567"), senza prefisso "+39". Meta non indovina il paese: se manca il country code, quel campo viene ignorato o matcha a vuoto.
- Un solo identificatore per record. Se esporti solo l'email e il cliente si è registrato su Meta con un'email diversa da quella business, non c'è secondo tentativo. Più identificatori per riga (email, telefono, nome+cognome+CAP, data di nascita) aumentano drasticamente le probabilità di match, perché Meta prova le combinazioni.
- Formato file o encoding sbagliato. CSV con delimitatore diverso da virgola, BOM UTF-8 non rimosso, o intestazioni di colonna che non corrispondono ai campi richiesti da Meta (email, phone, fn, ln, zip, ecc.) possono far leggere male l'intero file o alcune colonne, gonfiando artificialmente il numero di "non match".
- Dati vecchi o cambiati. Email e numeri cambiano nel tempo. Se il CDP non fa refresh dei contatti da mesi, una parte del mancato match è semplicemente perché quell'identità non esiste più sulla piattaforma di Meta con quei dati.
- Hashing fatto due volte o hashing lato CDP con salt diverso. Se il CDP applica già un hash prima dell'export e poi lo strumento di caricamento lo hasha di nuovo (o Meta si aspetta dati in chiaro da hashare lui), il confronto fallisce su tutta la lista, non solo su una parte — questo è il caso in cui il match rate è drammaticamente basso (sotto il 10%).
Fix, passo dopo passo
- Apri il file esportato dal CDP e controlla le prime 20 righe: verifica che email siano tutte minuscole, senza spazi iniziali/finali, e che i telefoni abbiano il prefisso internazionale con "+".
- Nel CDP, prima dell'export, applica regole di normalizzazione sui campi: trim degli spazi, lowercase su email, formato E.164 sui telefoni. Se il CDP non lo permette in automatico, fallo con una trasformazione manuale in fogli di calcolo o con uno script prima del caricamento.
- Aggiungi più colonne identificative possibili al file: email, phone, fn (first name), ln (last name), zip, ct (city), st (state), country. Più campi = più tentativi di match per Meta.
- Verifica se il tuo CDP fa già hashing SHA-256 dei campi prima dell'export. Se sì, carica il file su Meta selezionando l'opzione "dati già hashati" invece di lasciare che Meta li hashi di nuovo — controlla questa opzione nella schermata di creazione della Custom Audience.
- Salva il file in formato CSV con encoding UTF-8 senza BOM, delimitatore virgola, e intestazioni di colonna che corrispondano esattamente ai nomi campo richiesti da Meta (email, phone, fn, ln, zip, ct, st, country, doby, dobm, dobd).
- Carica un campione piccolo (500-1000 righe) come test prima di caricare la lista intera, e guarda il match rate riportato in Events Manager sotto quella audience.
- Se il match rate sul campione resta basso, isola il problema: prova a caricare solo email, poi solo telefono, per capire quale campo sta abbassando la media.
Checklist copy-paste per il prossimo export
CHECKLIST NORMALIZZAZIONE AUDIENCE CDP -> META ADS
[ ] Email: minuscolo, trim spazi, nessun carattere invisibile
[ ] Telefono: formato E.164 (+39XXXXXXXXXX), no spazi/trattini
[ ] Nome/Cognome: solo lettere, trim spazi, no accenti anomali
[ ] CAP: formato coerente col paese (5 cifre IT)
[ ] Colonne minime: email, phone, fn, ln, zip, ct, st, country
[ ] File: CSV, UTF-8 senza BOM, delimitatore virgola
[ ] Intestazioni colonna: nomi esatti richiesti da Meta
[ ] Hashing: verificato SE il CDP hasha già i dati (SHA-256)
-> se sì: seleziona "dati già hashati" in fase di upload
[ ] Freshness: contatti aggiornati negli ultimi 3-6 mesi
[ ] Test: campione 500-1000 righe caricato prima del file completo
[ ] Match rate campione registrato per confronto con file completo
Come verificare che ha funzionato
Dopo il nuovo upload, apri la Custom Audience in Events Manager e guarda il match rate riportato: dovrebbe salire in modo netto rispetto al caricamento precedente, tipicamente sopra il 50-60% per liste con email e telefono normalizzati correttamente. Se resta invariato, il problema non è nel formato ma nella sovrapposizione reale tra i dati del CDP e le identità registrate su Meta — a quel punto il fix è arricchire i profili con più identificatori, non ri-formattare lo stesso file.
Una volta risolto il match rate, il prossimo problema tipico è capire quale segmento di quell'audience sta davvero performando e quale azione prioritizzare sulla campagna successiva — è esattamente il lavoro che Next Action Analyst fa a partire dai CSV che esporti da Meta Ads, trasformandoli in azioni concrete senza dover incrociare a mano fogli e dashboard.
Next Action Analyst trasforma l'export delle tue campagne in una lista di modifiche da fare domani, in ordine di priorità — con i numeri che le giustificano.