Guida

Cookie _fbc e cookie _fbp, spiegati

Il cookie _fbc salva il click ID di Meta come fb.1.<time>.<fbclid>. Il formato, il cookie _fbp, la durata di 90 giorni, Safari e come costruire fbc.

Di Simone Manto, fondatore di DropCPL · Pubblicato il

Il cookie _fbc è un cookie first-party che salva il click ID di Meta, cioè l’fbclid aggiunto al tuo URL quando qualcuno clicca un annuncio, nel formato fb.<subdomainIndex>.<creationTime>.<fbclid>. Il Meta Pixel lo scrive quando un visitatore arriva con ?fbclid= nell’URL, e il tuo server può costruire lo stesso valore da solo. Il suo gemello _fbp identifica il browser.

Entrambi i valori finiscono nella Conversions API, senza hash, come user_data.fbc e user_data.fbp. Contano più di quanto sembri: l’articolo del centro assistenza di Meta sull’Event Match Quality classifica l’ID clic come identificatore a priorità alta, accanto all’email, e l’ID browser a priorità media. Se perdi l’fbclid, il tuo Lead perde il collegamento più diretto con il click sull’annuncio.

La documentazione per sviluppatori di Meta su ClickID e i parametri fbp e fbc li definisce entrambi. La durata viene dalla policy sui cookie di Meta.

_fbc_fbp
Cosa contieneil click ID di Meta (fbclid)un ID casuale del browser
Chi lo impostail Meta Pixel, quando l’URL contiene un fbclid; oppure il tuo serveril Meta Pixel, quando usa cookie first-party e non ne esiste già uno
Serve un click su un annunciosìno
Formatofb.<subdomainIndex>.<creationTime>.<fbclid>fb.<subdomainIndex>.<creationTime>.<randomNumber>
Esempiofb.1.1793787151204.IwAR2F4-dbP0l7Mn1IawQQGCINEz7PYXQvwjNwB_qa2ofrHyiLjcbCRxTDMgkfb.1.1793787151880.1684203391
Durata nella policy sui cookie di Meta90 giorni90 giorni
Campo della Conversions APIuser_data.fbcuser_data.fbp

L’fbclid dell’esempio è quello che Meta usa nella sua documentazione. Cosa identifica l’fbclid, e perché non può essere la tua unica chiave di attribuzione, è spiegato nella voce di glossario sull’fbclid.

Dividi l’esempio sui punti:

ParteEsempioSignificato
versionfbsempre fb
subdomainIndex1il dominio su cui è definito il cookie: com = 0, example.com = 1, www.example.com = 2. Usa 1 quando generi il valore su un server senza salvare un cookie
creationTime1793787151204tempo Unix in millisecondi in cui il cookie è stato salvato, qui il 4 novembre 2026, 10:12:31 UTC
fbclidIwAR2F4-dbP0…TDMgkl’fbclid dell’URL della landing page, invariato

Due regole di Meta su cui si inciampa spesso. Il click ID distingue maiuscole e minuscole: Meta chiede di non applicare nessuna modifica prima di usarlo, nemmeno il passaggio a minuscolo o maiuscolo. E in un cookie salvato, l’fbclid è la stringa dopo l’ultimo punto. Meta aggiunge un’avvertenza: i valori formati con la sua libreria Parameter Builder hanno un’appendice in più alla fine.

Per scomporre un valore reale, o fare il percorso inverso, decodifica un valore _fbc o costruiscilo da un URL con il parser di fbclid.

_fbp ha la stessa struttura, con un numero casuale al posto del click ID. Il pixel genera quel numero per rendere unico ogni _fbp, quindi identifica un browser e non un click. Meta dice anche che entrambi i valori possono cambiare nel corso di più sessioni del browser e consiglia di aggiornarli con l’ultimo valore disponibile.

Il cookie può mancare per tanti motivi ordinari: nessun pixel sulla landing page, un pixel bloccato dal browser o da un’estensione, un visitatore che invia il form prima che il pixel si carichi. Meta documenta la soluzione: puoi comunque inviare fbc con un evento della Conversions API, purché ci sia un fbclid nell’URL della richiesta corrente.

  1. Leggi fbclid dall’URL della landing page nella richiesta che la genera. Non fare trim, non convertirlo in minuscolo, non ricodificarlo.
  2. Formattalo come fb.1.<millisecondi>.<fbclid>. Se non salvi un cookie _fbc, Meta dice di usare 1 come subdomain index e, come creation time, il momento in cui hai visto l’fbclid per la prima volta, cioè adesso.
  3. Conservalo. Meta offre due opzioni: salvare il valore formattato nel tuo backend, oppure impostare tu stesso _fbc come cookie HTTP nella risposta, con scadenza a 90 giorni. Se imposti il cookie, fallo solo quando non ne esiste uno o quando l’fbclid nell’URL è diverso da quello nel cookie, e fai corrispondere il subdomain index al dominio su cui lo imposti.
  4. Invialo con ogni evento di quel visitatore, a partire dal Lead. Meta consiglia di inviare fbc con ogni evento della Conversions API.

In codice, l’opzione backend si presenta così (saveClick sta per il punto in cui salvi il click):

// Nella richiesta che genera la landing page
const url = new URL(req.url, `https://${req.headers.host}`);
const fbclid = url.searchParams.get("fbclid"); // distingue maiuscole e minuscole: lascialo com'è

if (fbclid) {
  const fbc = `fb.1.${Date.now()}.${fbclid}`; // 1 e millisecondi: la regola di Meta lato server
  await saveClick({ clickId, fbclid, fbc });
}

Quando un visitatore torna da un secondo annuncio, il nuovo fbclid sostituisce il vecchio: Meta chiede il valore più recente, che tu lo tenga in un cookie o nel database. Costruire il valore lato server non cambia i tuoi obblighi sul consenso, cambia solo il punto in cui il valore viene calcolato.

DropCPL registra l’fbclid insieme al click, lato server, sullo stesso dominio che serve la tua landing page, e invia l’fbc corrispondente con l’evento Lead. Il valore non dipende mai da un cookie scritto da JavaScript. Inizia gratis →

La policy sui cookie di Meta dà a entrambi una durata di 90 giorni, e Meta consiglia gli stessi 90 giorni se imposti _fbc tu stesso. Questo è quello che chiede Meta. Su Safari è il browser a decidere quanto ne ottieni, in base a come è stato impostato il cookie.

Il Meta Pixel è uno script, quindi i cookie che scrive sono cookie JavaScript, e l’Intelligent Tracking Prevention di Safari è severa con quelli. La documentazione di WebKit sulla tracking prevention elenca due regole:

  • ITP cancella tutti i cookie creati in JavaScript, insieme agli altri spazi di archiviazione scrivibili da script, dopo 7 giorni senza interazione dell’utente con il sito.
  • Quando ITP rileva la link decoration, cioè click ID aggiunti all’URL e letti da uno script sulla landing page, limita a 24 ore i cookie creati in JavaScript su quella landing page.

Un click su un annuncio che arriva con ?fbclid= e un pixel che lo copia in _fbc sono esattamente lo schema descritto dalla seconda regola.

Entrambe le regole riguardano i cookie creati in JavaScript. Un cookie che il tuo server imposta con un header Set-Cookie non rientra, e la tabella di WebKit non indica nessun limite quando non c’è cloaking. Il cloaking è l’eccezione: ITP limita a 7 giorni qualsiasi cookie impostato nella risposta HTTP quando la richiesta passa per un CNAME cloaking di terze parti o per un cloaking tramite indirizzo IP di terze parti. Per il controllo sugli IP, WebKit al momento considera due indirizzi come parti diverse quando uno è IPv4 e l’altro IPv6, o quando condividono meno di metà dei bit.

Quindi «impostalo dal server» aiuta solo se il server è davvero tuo. Il caso più pulito è il cookie che arriva nella stessa risposta dell’HTML della landing page, perché allora il server che lo imposta è il sito stesso. È l’idea alla base del tracking first-party, e la storia completa è in tracciare dopo iOS.

Come viene impostato il cookieCosa fa ITP di Safari
Scritto da JavaScript (il Meta Pixel, qualsiasi tag)cancellato dopo 7 giorni senza interazione con il sito; 24 ore quando viene rilevata la link decoration
Set-Cookie da un server di terze parti mascherato dietro un tuo sottodominio (CNAME o IP)limitato a 7 giorni
Set-Cookie nella risposta che genera la landing pagenessun limite ITP

Quando manca l’fbclid

Safari può anche rimuovere il parametro prima che arrivi a chiunque. La sua Link Tracking Protection elimina, prima della navigazione, un sottoinsieme di parametri di query identificati come usati per il tracciamento cross-site diffuso, granulare a livello di utente o di click. È attiva nella navigazione privata, e nella navigazione normale per gli utenti che attivano Advanced Tracking and Fingerprinting Protection per tutta la navigazione (dal post di WebKit Private Browsing 2.0). Apple non pubblica l’elenco, ma un ID per click come fbclid è esattamente ciò che descrive.

In navigazione privata gli script di terze parti ricevono anche l’URL senza query string, quindi un pixel caricato dal dominio di Meta non può leggere fbclid nemmeno quando sopravvive. Il tuo server vede l’URL completo della richiesta. Quando il parametro non c’è più, nessuno può costruire fbc: invia fbp se ce l’hai, più email e telefono con hash, e non inventare un valore.

Come inviare fbc e fbp nella Conversions API

Entrambi vanno in user_data, come stringhe in chiaro. Il riferimento di Meta sui parametri delle informazioni dei clienti li indica come «Do not hash», come l’indirizzo IP e lo user agent, mentre email e telefono devono avere l’hash.

{
  "user_data": {
    "em": ["10928b45363b7d849e040470c3277657f8177ef5a953a092b4302f149757a02e"],
    "fbc": "fb.1.1793787151204.IwAR2F4-dbP0l7Mn1IawQQGCINEz7PYXQvwjNwB_qa2ofrHyiLjcbCRxTDMgk",
    "fbp": "fb.1.1793787151880.1684203391",
    "client_ip_address": "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
    "client_user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
  }
}

Il payload completo del Lead, con event_id, è in deduplicazione tra Meta Pixel e CAPI, dove fbp compare anche come una delle chiavi di deduplicazione di riserva di Meta. Come questi valori pesano sul punteggio è spiegato in Event Match Quality per la lead generation.

Gli errori che rompono fbc

  • Modificare l’fbclid. Convertirlo in minuscolo, fare trim o ricodificarlo rompe un valore che distingue maiuscole e minuscole.
  • Fare l’hash di fbc o fbp. Sono entrambi campi da non sottoporre ad hash.
  • Secondi invece di millisecondi. creationTime è in millisecondi; un timestamp di 10 cifre è il segnale.
  • Usare l’ora del Lead invece di quella del click. Usa il momento in cui hai visto l’fbclid per la prima volta, non quello dell’invio del form.
  • Riscrivere il valore a ogni visita. Impostalo solo se non c’è o se l’fbclid è cambiato.
  • Tenere un click vecchio al posto di uno nuovo. Vince l’fbclid più recente.
  • Inventare fbc per visite senza fbclid. Non c’è un click ID da inviare, quindi non inviare niente.
  • Un redirect che perde la query string. Se un passaggio prima della landing page perde i parametri, l’fbclid non arriva mai al tuo server: per questo il dominio di tracking dovrebbe servire direttamente la landing page.

FAQ

Quanto dura il cookie _fbc?+

La policy sui cookie di Meta dà a _fbc e _fbp una durata di 90 giorni, e Meta consiglia una scadenza di 90 giorni se imposti _fbc tu stesso. Safari però può accorciarla: i cookie scritti da JavaScript, come quelli del pixel, vengono cancellati dopo 7 giorni senza interazione e limitati a 24 ore quando ITP rileva la link decoration.

fbc e fbp vanno sottoposti ad hash?+

No. I parametri delle informazioni dei clienti di Meta li indicano entrambi come campi da non sottoporre ad hash. Inviali esattamente come li hai salvati, nei campi fbc e fbp di user_data, e applica l'hash a email, telefono e agli altri dati di contatto.

Cosa significa fb.1 in un valore _fbc?+

fb è il prefisso fisso di versione. 1 è il subdomain index, che indica il dominio su cui è definito il cookie: com vale 0, example.com vale 1 e www.example.com vale 2. Se generi fbc sul tuo server senza salvare un cookie, Meta dice di usare 1.

Posso costruire fbc senza il Meta Pixel?+

Sì, Meta lo documenta. Se l'URL della landing page contiene un fbclid, formattalo come fb.1.<timestamp in millisecondi>.<fbclid>, usando come timestamp il momento in cui hai visto l'fbclid per la prima volta. Non modificare l'fbclid: distingue maiuscole e minuscole.

E se l'URL della landing page non ha un fbclid?+

Allora non c'è nessun click ID, quindi ometti fbc invece di inventarlo. Invia fbp se il pixel l'ha impostato, insieme a email e telefono con hash e all'indirizzo IP e allo user agent del visitatore.

Pronto a sapere cosa
converte davvero?

Gratis per iniziare.

Inizia gratis →