[{"data":1,"prerenderedAt":1273},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fit\u002Fdata\u002Frisoluzione-identita-sei-segnali-unificati":13},{"i18nKey":4,"paths":5},"data-003-2026-08",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Fdata\u002Fidentity-resolution-sechs-signale-zu-einer-kundenidentitaet","\u002Fen\u002Fdata\u002Fidentity-resolution-six-signals-unified-customer-id","\u002Fes\u002Fdata\u002Fresolucion-de-identidad","\u002Ffr\u002Fdata\u002Fresolution-identites-6-signaux-vers-un-profil-client-unique","\u002Fit\u002Fdata\u002Frisoluzione-identita-sei-segnali-unificati","\u002Fru\u002Fdata\u002Fidentity-resolution-six-signals-to-single-customer-identity","\u002Ftr\u002Fdata\u002Fidentity-resolution-6-sinyalden-tek-musteri-kimligine",{"_path":10,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":1267,"_id":1268,"_source":1269,"_file":1270,"_stem":1271,"_extension":1272},"data",false,"","Identity Resolution: Da 6 Segnali a Un'Unica Identità Cliente","Hash matching, probabilistic linking e household identity per unificare segnali frammentati e collegare i dati di marketing al motore decisionale.","2026-08-04",[21,22,23,24,25],"identity-resolution","hash-matching","probabilistic-linking","cdp","first-party-data",9,"Roibase",{"type":29,"children":30,"toc":1255},"root",[31,39,46,51,89,102,109,450,463,469,474,479,484,614,630,636,641,646,651,657,1049,1070,1076,1081,1094,1107,1143,1149,1154,1183,1196,1202,1207,1228,1233,1237,1249],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","Un utente naviga anonimo sul web, accede all'app mobile, si registra alla newsletter con un indirizzo e-mail diverso, paga in negozio con carta di credito. Ogni touchpoint è un segnale separato — ma per ottimizzare il budget di marketing devi collegarli a un'unica identità cliente. Nel 2026, i cookie sono scomparsi, il numero di dispositivi è in aumento, il tasso di consenso è tra il 40-60% — identity resolution non è più un nice-to-have, è il pilastro fondamentale dell'architettura di misurazione.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"hash-matching-convertire-e-mail-e-numero-di-telefono-nel-grafo-dei-dati",[44],{"type":37,"value":45},"Hash Matching: Convertire E-mail e Numero di Telefono nel Grafo dei Dati",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"L'hash matching è il metodo in cui crittografi i dati PII (personally identifiable information) dell'utente — e-mail, telefono — con SHA-256 e li invii ai grafi delle piattaforme (Google PAIR, Meta Advanced Matching, LiveRamp). I dati PII non arrivano mai al browser — vengono crittografati nel contenitore server-side o nel CDP e trasferiti al Measurement Protocol.",{"type":32,"tag":33,"props":52,"children":53},{},[54,56,63,65,71,73,79,81,87],{"type":37,"value":55},"Esempio di flusso: l'utente inserisce ",{"type":32,"tag":57,"props":58,"children":60},"code",{"className":59},[],[61],{"type":37,"value":62},"[email protected]",{"type":37,"value":64}," nel modulo di checkout. Nel contenitore server-side, JavaScript genera l'hash ",{"type":32,"tag":57,"props":66,"children":68},{"className":67},[],[69],{"type":37,"value":70},"sha256('jane.doe@example.com')",{"type":37,"value":72}," → ",{"type":32,"tag":57,"props":74,"children":76},{"className":75},[],[77],{"type":37,"value":78},"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",{"type":37,"value":80},", che viene aggiunto al parametro ",{"type":32,"tag":57,"props":82,"children":84},{"className":83},[],[85],{"type":37,"value":86},"user_id",{"type":37,"value":88}," di Google Analytics 4. Google confronta questo hash con il proprio grafo di identità — se l'utente si è precedentemente registrato su Google Ads, si genera una corrispondenza e la catena di attribuzione cross-device inizia.",{"type":32,"tag":33,"props":90,"children":91},{},[92,94,100],{"type":37,"value":93},"SHA-256 è unidirezionale, ma senza salt può essere violato tramite rainbow table. In produzione, usa ",{"type":32,"tag":57,"props":95,"children":97},{"className":96},[],[98],{"type":37,"value":99},"sha256(email + pepper)",{"type":37,"value":101}," (pepper: una chiave segreta globale, conservata nelle variabili d'ambiente). In Meta Advanced Matching, la combinazione hash + paese aumenta il match rate del 12-18% (benchmark Meta 2025). Il limite dell'hash matching è il consenso — secondo GDPR, se l'utente non ha spuntato \"acconsento\", non puoi nemmeno inviare l'hash.",{"type":32,"tag":103,"props":104,"children":106},"h3",{"id":105},"esempio-di-pipeline-hash-matching-in-bigquery",[107],{"type":37,"value":108},"Esempio di Pipeline Hash Matching in BigQuery",{"type":32,"tag":110,"props":111,"children":115},"pre",{"className":112,"code":113,"language":114,"meta":16,"style":16},"language-sql shiki shiki-themes github-dark","-- dbt model: hash_user_pii.sql\nWITH raw_signups AS (\n  SELECT\n    user_id,\n    LOWER(TRIM(email)) AS email_normalized,\n    REGEXP_REPLACE(phone, r'[^\\d]', '') AS phone_normalized,\n    created_at\n  FROM {{ ref('raw_user_signups') }}\n)\nSELECT\n  user_id,\n  TO_HEX(SHA256(CONCAT(email_normalized, '{{env_var(\"HASH_PEPPER\")}}'))) AS email_hash,\n  TO_HEX(SHA256(CONCAT(phone_normalized, '{{env_var(\"HASH_PEPPER\")}}'))) AS phone_hash,\n  created_at\nFROM raw_signups\nWHERE email_normalized IS NOT NULL\n  AND LENGTH(phone_normalized) >= 10\n","sql",[116],{"type":32,"tag":57,"props":117,"children":118},{"__ignoreMap":16},[119,131,157,166,175,209,248,257,281,289,298,307,345,379,388,402,421],{"type":32,"tag":120,"props":121,"children":124},"span",{"class":122,"line":123},"line",1,[125],{"type":32,"tag":120,"props":126,"children":128},{"style":127},"--shiki-default:#6A737D",[129],{"type":37,"value":130},"-- dbt model: hash_user_pii.sql\n",{"type":32,"tag":120,"props":132,"children":134},{"class":122,"line":133},2,[135,141,147,152],{"type":32,"tag":120,"props":136,"children":138},{"style":137},"--shiki-default:#F97583",[139],{"type":37,"value":140},"WITH",{"type":32,"tag":120,"props":142,"children":144},{"style":143},"--shiki-default:#E1E4E8",[145],{"type":37,"value":146}," raw_signups ",{"type":32,"tag":120,"props":148,"children":149},{"style":137},[150],{"type":37,"value":151},"AS",{"type":32,"tag":120,"props":153,"children":154},{"style":143},[155],{"type":37,"value":156}," (\n",{"type":32,"tag":120,"props":158,"children":160},{"class":122,"line":159},3,[161],{"type":32,"tag":120,"props":162,"children":163},{"style":137},[164],{"type":37,"value":165},"  SELECT\n",{"type":32,"tag":120,"props":167,"children":169},{"class":122,"line":168},4,[170],{"type":32,"tag":120,"props":171,"children":172},{"style":143},[173],{"type":37,"value":174},"    user_id,\n",{"type":32,"tag":120,"props":176,"children":178},{"class":122,"line":177},5,[179,185,190,195,200,204],{"type":32,"tag":120,"props":180,"children":182},{"style":181},"--shiki-default:#79B8FF",[183],{"type":37,"value":184},"    LOWER",{"type":32,"tag":120,"props":186,"children":187},{"style":143},[188],{"type":37,"value":189},"(",{"type":32,"tag":120,"props":191,"children":192},{"style":181},[193],{"type":37,"value":194},"TRIM",{"type":32,"tag":120,"props":196,"children":197},{"style":143},[198],{"type":37,"value":199},"(email)) ",{"type":32,"tag":120,"props":201,"children":202},{"style":137},[203],{"type":37,"value":151},{"type":32,"tag":120,"props":205,"children":206},{"style":143},[207],{"type":37,"value":208}," email_normalized,\n",{"type":32,"tag":120,"props":210,"children":212},{"class":122,"line":211},6,[213,218,224,229,234,239,243],{"type":32,"tag":120,"props":214,"children":215},{"style":143},[216],{"type":37,"value":217},"    REGEXP_REPLACE(phone, r",{"type":32,"tag":120,"props":219,"children":221},{"style":220},"--shiki-default:#9ECBFF",[222],{"type":37,"value":223},"'[^\\d]'",{"type":32,"tag":120,"props":225,"children":226},{"style":143},[227],{"type":37,"value":228},", ",{"type":32,"tag":120,"props":230,"children":231},{"style":220},[232],{"type":37,"value":233},"''",{"type":32,"tag":120,"props":235,"children":236},{"style":143},[237],{"type":37,"value":238},") ",{"type":32,"tag":120,"props":240,"children":241},{"style":137},[242],{"type":37,"value":151},{"type":32,"tag":120,"props":244,"children":245},{"style":143},[246],{"type":37,"value":247}," phone_normalized,\n",{"type":32,"tag":120,"props":249,"children":251},{"class":122,"line":250},7,[252],{"type":32,"tag":120,"props":253,"children":254},{"style":143},[255],{"type":37,"value":256},"    created_at\n",{"type":32,"tag":120,"props":258,"children":260},{"class":122,"line":259},8,[261,266,271,276],{"type":32,"tag":120,"props":262,"children":263},{"style":137},[264],{"type":37,"value":265},"  FROM",{"type":32,"tag":120,"props":267,"children":268},{"style":143},[269],{"type":37,"value":270}," {{ ref(",{"type":32,"tag":120,"props":272,"children":273},{"style":220},[274],{"type":37,"value":275},"'raw_user_signups'",{"type":32,"tag":120,"props":277,"children":278},{"style":143},[279],{"type":37,"value":280},") }}\n",{"type":32,"tag":120,"props":282,"children":283},{"class":122,"line":26},[284],{"type":32,"tag":120,"props":285,"children":286},{"style":143},[287],{"type":37,"value":288},")\n",{"type":32,"tag":120,"props":290,"children":292},{"class":122,"line":291},10,[293],{"type":32,"tag":120,"props":294,"children":295},{"style":137},[296],{"type":37,"value":297},"SELECT\n",{"type":32,"tag":120,"props":299,"children":301},{"class":122,"line":300},11,[302],{"type":32,"tag":120,"props":303,"children":304},{"style":143},[305],{"type":37,"value":306},"  user_id,\n",{"type":32,"tag":120,"props":308,"children":310},{"class":122,"line":309},12,[311,316,321,326,331,336,340],{"type":32,"tag":120,"props":312,"children":313},{"style":143},[314],{"type":37,"value":315},"  TO_HEX(SHA256(",{"type":32,"tag":120,"props":317,"children":318},{"style":181},[319],{"type":37,"value":320},"CONCAT",{"type":32,"tag":120,"props":322,"children":323},{"style":143},[324],{"type":37,"value":325},"(email_normalized, ",{"type":32,"tag":120,"props":327,"children":328},{"style":220},[329],{"type":37,"value":330},"'{{env_var(\"HASH_PEPPER\")}}'",{"type":32,"tag":120,"props":332,"children":333},{"style":143},[334],{"type":37,"value":335},"))) ",{"type":32,"tag":120,"props":337,"children":338},{"style":137},[339],{"type":37,"value":151},{"type":32,"tag":120,"props":341,"children":342},{"style":143},[343],{"type":37,"value":344}," email_hash,\n",{"type":32,"tag":120,"props":346,"children":348},{"class":122,"line":347},13,[349,353,357,362,366,370,374],{"type":32,"tag":120,"props":350,"children":351},{"style":143},[352],{"type":37,"value":315},{"type":32,"tag":120,"props":354,"children":355},{"style":181},[356],{"type":37,"value":320},{"type":32,"tag":120,"props":358,"children":359},{"style":143},[360],{"type":37,"value":361},"(phone_normalized, ",{"type":32,"tag":120,"props":363,"children":364},{"style":220},[365],{"type":37,"value":330},{"type":32,"tag":120,"props":367,"children":368},{"style":143},[369],{"type":37,"value":335},{"type":32,"tag":120,"props":371,"children":372},{"style":137},[373],{"type":37,"value":151},{"type":32,"tag":120,"props":375,"children":376},{"style":143},[377],{"type":37,"value":378}," phone_hash,\n",{"type":32,"tag":120,"props":380,"children":382},{"class":122,"line":381},14,[383],{"type":32,"tag":120,"props":384,"children":385},{"style":143},[386],{"type":37,"value":387},"  created_at\n",{"type":32,"tag":120,"props":389,"children":391},{"class":122,"line":390},15,[392,397],{"type":32,"tag":120,"props":393,"children":394},{"style":137},[395],{"type":37,"value":396},"FROM",{"type":32,"tag":120,"props":398,"children":399},{"style":143},[400],{"type":37,"value":401}," raw_signups\n",{"type":32,"tag":120,"props":403,"children":405},{"class":122,"line":404},16,[406,411,416],{"type":32,"tag":120,"props":407,"children":408},{"style":137},[409],{"type":37,"value":410},"WHERE",{"type":32,"tag":120,"props":412,"children":413},{"style":143},[414],{"type":37,"value":415}," email_normalized ",{"type":32,"tag":120,"props":417,"children":418},{"style":137},[419],{"type":37,"value":420},"IS NOT NULL\n",{"type":32,"tag":120,"props":422,"children":424},{"class":122,"line":423},17,[425,430,435,440,445],{"type":32,"tag":120,"props":426,"children":427},{"style":137},[428],{"type":37,"value":429},"  AND",{"type":32,"tag":120,"props":431,"children":432},{"style":137},[433],{"type":37,"value":434}," LENGTH",{"type":32,"tag":120,"props":436,"children":437},{"style":143},[438],{"type":37,"value":439},"(phone_normalized) ",{"type":32,"tag":120,"props":441,"children":442},{"style":137},[443],{"type":37,"value":444},">=",{"type":32,"tag":120,"props":446,"children":447},{"style":181},[448],{"type":37,"value":449}," 10\n",{"type":32,"tag":33,"props":451,"children":452},{},[453,455,461],{"type":37,"value":454},"Questo modello è parametrizzato in dbt, il pepper è archiviato nelle variabili d'ambiente, e viene aggiunto agli eventi sGTM nell'oggetto ",{"type":32,"tag":57,"props":456,"children":458},{"className":457},[],[459],{"type":37,"value":460},"user_data",{"type":37,"value":462}," a valle. Senza salt, l'hash PII è reversibile — in produzione il pepper è obbligatorio.",{"type":32,"tag":40,"props":464,"children":466},{"id":465},"probabilistic-linking-fingerprint-e-grafo-comportamentale",[467],{"type":37,"value":468},"Probabilistic Linking: Fingerprint e Grafo Comportamentale",{"type":32,"tag":33,"props":470,"children":471},{},[472],{"type":37,"value":473},"Quando il match deterministico (e-mail\u002Ftelefono) non è disponibile, entra in gioco il probabilistic linking. Usi il fingerprint del dispositivo (User-Agent, IP, risoluzione dello schermo, timezone), il pattern di sequenza degli eventi e la durata della sessione per raggruppare gli utenti. Se il confidence score scende sotto il 60%, non fare il collegamento — il tasso di falsi positivi ha un impatto diretto sul budget di marketing.",{"type":32,"tag":33,"props":475,"children":476},{},[477],{"type":37,"value":478},"Scenario di esempio: due dispositivi diversi (iPhone Safari, MacBook Chrome) accedono al tuo sito e-commerce dallo stesso IP a distanza di 30 minuti, entrambi guardano la stessa categoria di prodotti, abbandonano al passaggio del checkout. Il motore probabilistico etichetta le due sessioni come \"household same user\" con il 78% di confidence. Se successivamente l'utente completa l'acquisto da iPhone, il confidence sale al 95%, e l'identità viene unificata nel grafo.",{"type":32,"tag":33,"props":480,"children":481},{},[482],{"type":37,"value":483},"Soluzioni come LiveRamp IdentityLink e The Trade Desk Unified ID 2.0 utilizzano un ibrido probabilistico + deterministico. Nel framework UID2, l'hash e-mail viene combinato con segnali bidstream per generare un punteggio (spec UID2 2025). Se implementi il probabilistic linking nella tua pipeline, prova algoritmi come DBscan o clustering gerarchico — ma in produzione l'interpretabilità è critica: preferisci lo scoring basato su regole a un modello ML blackbox.",{"type":32,"tag":485,"props":486,"children":487},"table",{},[488,517],{"type":32,"tag":489,"props":490,"children":491},"thead",{},[492],{"type":32,"tag":493,"props":494,"children":495},"tr",{},[496,502,507,512],{"type":32,"tag":497,"props":498,"children":499},"th",{},[500],{"type":37,"value":501},"Tipo di Segnale",{"type":32,"tag":497,"props":503,"children":504},{},[505],{"type":37,"value":506},"Confidence Match",{"type":32,"tag":497,"props":508,"children":509},{},[510],{"type":37,"value":511},"Rischio Privacy",{"type":32,"tag":497,"props":513,"children":514},{},[515],{"type":37,"value":516},"Area di Utilizzo",{"type":32,"tag":518,"props":519,"children":520},"tbody",{},[521,545,568,591],{"type":32,"tag":493,"props":522,"children":523},{},[524,530,535,540],{"type":32,"tag":525,"props":526,"children":527},"td",{},[528],{"type":37,"value":529},"Hash e-mail (SHA-256 + pepper)",{"type":32,"tag":525,"props":531,"children":532},{},[533],{"type":37,"value":534},"92-98%",{"type":32,"tag":525,"props":536,"children":537},{},[538],{"type":37,"value":539},"Basso (consenso richiesto)",{"type":32,"tag":525,"props":541,"children":542},{},[543],{"type":37,"value":544},"Cross-device GA4, Meta CAPI",{"type":32,"tag":493,"props":546,"children":547},{},[548,553,558,563],{"type":32,"tag":525,"props":549,"children":550},{},[551],{"type":37,"value":552},"Hash telefono (SHA-256 + pepper)",{"type":32,"tag":525,"props":554,"children":555},{},[556],{"type":37,"value":557},"88-94%",{"type":32,"tag":525,"props":559,"children":560},{},[561],{"type":37,"value":562},"Medio (consenso esplicito KVKK)",{"type":32,"tag":525,"props":564,"children":565},{},[566],{"type":37,"value":567},"Sincronizzazione CRM → Ad platform",{"type":32,"tag":493,"props":569,"children":570},{},[571,576,581,586],{"type":32,"tag":525,"props":572,"children":573},{},[574],{"type":37,"value":575},"IP + User-Agent",{"type":32,"tag":525,"props":577,"children":578},{},[579],{"type":37,"value":580},"55-70%",{"type":32,"tag":525,"props":582,"children":583},{},[584],{"type":37,"value":585},"Alto (fingerprinting)",{"type":32,"tag":525,"props":587,"children":588},{},[589],{"type":37,"value":590},"Rilevamento frodi, filtro bot",{"type":32,"tag":493,"props":592,"children":593},{},[594,599,604,609],{"type":32,"tag":525,"props":595,"children":596},{},[597],{"type":37,"value":598},"Sequenza comportamentale (event pattern)",{"type":32,"tag":525,"props":600,"children":601},{},[602],{"type":37,"value":603},"60-80%",{"type":32,"tag":525,"props":605,"children":606},{},[607],{"type":37,"value":608},"Basso (anonimizzato)",{"type":32,"tag":525,"props":610,"children":611},{},[612],{"type":37,"value":613},"Session stitching, analisi journey",{"type":32,"tag":33,"props":615,"children":616},{},[617,619,628],{"type":37,"value":618},"Se implementi il probabilistic linking nel livello ",{"type":32,"tag":620,"props":621,"children":625},"a",{"href":622,"rel":623},"https:\u002F\u002Fwww.roibase.com.tr\u002Fit\u002Fretention-engineering-cdp",[624],"nofollow",[626],{"type":37,"value":627},"CDP & Retention Engineering",{"type":37,"value":629},", puoi mantenere un grafo di identità anonimizzato nel data lake — la conformità KVKK diventa più semplice con questa architettura.",{"type":32,"tag":40,"props":631,"children":633},{"id":632},"household-identity-identità-basata-sulla-posizione-non-sul-dispositivo",[634],{"type":37,"value":635},"Household Identity: Identità Basata sulla Posizione, Non sul Dispositivo",{"type":32,"tag":33,"props":637,"children":638},{},[639],{"type":37,"value":640},"Raggruppare tutti i dispositivi all'interno di una casa (smart TV, tablet, telefono, laptop) sotto un unico ID household è critico, specialmente nei settori FMCG, telco e finanza. Non definisci un singolo utente, ma un'unità di \"nucleo familiare\" con potere di acquisto.",{"type":32,"tag":33,"props":642,"children":643},{},[644],{"type":37,"value":645},"Il protocollo PAIR (Publisher Advertiser Identity Reconciliation) di Google supporta il grafo household — i dispositivi collegati alla stessa rete Wi-Fi (corrispondenza IP + location + timezone) vengono aggregati e convertiti in segnali pubblicitari. Tuttavia, PAIR è basato su consenso: se l'utente non ha concesso \"ad_storage=granted\" nel Consent Mode v2, l'ID household non viene creato.",{"type":32,"tag":33,"props":647,"children":648},{},[649],{"type":37,"value":650},"Esempio pratico di household identity: una famiglia ha un abbonamento Netflix, madre e padre guardano su profili diversi, i bambini guardano cartoni sulla TV. La piattaforma di advertising OTT (Roku, Samsung Ads) assegna un singolo ID household a questi tre profili, applicando il frequency capping a livello household, non a livello dispositivo. Lo stesso annuncio pubblicitario da 30 secondi viene mostrato al massimo 5 volte a settimana all'household — anche se a livello dispositivo ci fossero 15 impression.",{"type":32,"tag":103,"props":652,"children":654},{"id":653},"esempio-di-pipeline-di-regole-per-household-id",[655],{"type":37,"value":656},"Esempio di Pipeline di Regole per Household ID",{"type":32,"tag":110,"props":658,"children":660},{"className":112,"code":659,"language":114,"meta":16,"style":16},"-- dbt model: household_identity_graph.sql\nWITH device_sessions AS (\n  SELECT\n    device_id,\n    ip_address,\n    timezone,\n    CAST(TIMESTAMP_TRUNC(session_start, HOUR) AS STRING) AS session_hour,\n    user_agent\n  FROM {{ ref('raw_sessions') }}\n  WHERE session_start >= CURRENT_DATE() - 7\n),\nhousehold_candidates AS (\n  SELECT\n    ip_address,\n    timezone,\n    session_hour,\n    ARRAY_AGG(DISTINCT device_id) AS devices\n  FROM device_sessions\n  GROUP BY ip_address, timezone, session_hour\n  HAVING COUNT(DISTINCT device_id) > 1\n)\nSELECT\n  FARM_FINGERPRINT(CONCAT(ip_address, timezone)) AS household_id,\n  devices,\n  ARRAY_LENGTH(devices) AS device_count\nFROM household_candidates\n",[661],{"type":32,"tag":57,"props":662,"children":663},{"__ignoreMap":16},[664,672,692,699,707,715,723,763,771,791,823,831,847,854,861,868,876,903,916,930,966,974,982,1009,1018,1036],{"type":32,"tag":120,"props":665,"children":666},{"class":122,"line":123},[667],{"type":32,"tag":120,"props":668,"children":669},{"style":127},[670],{"type":37,"value":671},"-- dbt model: household_identity_graph.sql\n",{"type":32,"tag":120,"props":673,"children":674},{"class":122,"line":133},[675,679,684,688],{"type":32,"tag":120,"props":676,"children":677},{"style":137},[678],{"type":37,"value":140},{"type":32,"tag":120,"props":680,"children":681},{"style":143},[682],{"type":37,"value":683}," device_sessions ",{"type":32,"tag":120,"props":685,"children":686},{"style":137},[687],{"type":37,"value":151},{"type":32,"tag":120,"props":689,"children":690},{"style":143},[691],{"type":37,"value":156},{"type":32,"tag":120,"props":693,"children":694},{"class":122,"line":159},[695],{"type":32,"tag":120,"props":696,"children":697},{"style":137},[698],{"type":37,"value":165},{"type":32,"tag":120,"props":700,"children":701},{"class":122,"line":168},[702],{"type":32,"tag":120,"props":703,"children":704},{"style":143},[705],{"type":37,"value":706},"    device_id,\n",{"type":32,"tag":120,"props":708,"children":709},{"class":122,"line":177},[710],{"type":32,"tag":120,"props":711,"children":712},{"style":143},[713],{"type":37,"value":714},"    ip_address,\n",{"type":32,"tag":120,"props":716,"children":717},{"class":122,"line":211},[718],{"type":32,"tag":120,"props":719,"children":720},{"style":143},[721],{"type":37,"value":722},"    timezone,\n",{"type":32,"tag":120,"props":724,"children":725},{"class":122,"line":250},[726,731,736,741,745,749,754,758],{"type":32,"tag":120,"props":727,"children":728},{"style":181},[729],{"type":37,"value":730},"    CAST",{"type":32,"tag":120,"props":732,"children":733},{"style":143},[734],{"type":37,"value":735},"(TIMESTAMP_TRUNC(session_start, ",{"type":32,"tag":120,"props":737,"children":738},{"style":137},[739],{"type":37,"value":740},"HOUR",{"type":32,"tag":120,"props":742,"children":743},{"style":143},[744],{"type":37,"value":238},{"type":32,"tag":120,"props":746,"children":747},{"style":137},[748],{"type":37,"value":151},{"type":32,"tag":120,"props":750,"children":751},{"style":143},[752],{"type":37,"value":753}," STRING) ",{"type":32,"tag":120,"props":755,"children":756},{"style":137},[757],{"type":37,"value":151},{"type":32,"tag":120,"props":759,"children":760},{"style":143},[761],{"type":37,"value":762}," session_hour,\n",{"type":32,"tag":120,"props":764,"children":765},{"class":122,"line":259},[766],{"type":32,"tag":120,"props":767,"children":768},{"style":143},[769],{"type":37,"value":770},"    user_agent\n",{"type":32,"tag":120,"props":772,"children":773},{"class":122,"line":26},[774,778,782,787],{"type":32,"tag":120,"props":775,"children":776},{"style":137},[777],{"type":37,"value":265},{"type":32,"tag":120,"props":779,"children":780},{"style":143},[781],{"type":37,"value":270},{"type":32,"tag":120,"props":783,"children":784},{"style":220},[785],{"type":37,"value":786},"'raw_sessions'",{"type":32,"tag":120,"props":788,"children":789},{"style":143},[790],{"type":37,"value":280},{"type":32,"tag":120,"props":792,"children":793},{"class":122,"line":291},[794,799,804,808,813,818],{"type":32,"tag":120,"props":795,"children":796},{"style":137},[797],{"type":37,"value":798},"  WHERE",{"type":32,"tag":120,"props":800,"children":801},{"style":143},[802],{"type":37,"value":803}," session_start ",{"type":32,"tag":120,"props":805,"children":806},{"style":137},[807],{"type":37,"value":444},{"type":32,"tag":120,"props":809,"children":810},{"style":143},[811],{"type":37,"value":812}," CURRENT_DATE() ",{"type":32,"tag":120,"props":814,"children":815},{"style":137},[816],{"type":37,"value":817},"-",{"type":32,"tag":120,"props":819,"children":820},{"style":181},[821],{"type":37,"value":822}," 7\n",{"type":32,"tag":120,"props":824,"children":825},{"class":122,"line":300},[826],{"type":32,"tag":120,"props":827,"children":828},{"style":143},[829],{"type":37,"value":830},"),\n",{"type":32,"tag":120,"props":832,"children":833},{"class":122,"line":309},[834,839,843],{"type":32,"tag":120,"props":835,"children":836},{"style":143},[837],{"type":37,"value":838},"household_candidates ",{"type":32,"tag":120,"props":840,"children":841},{"style":137},[842],{"type":37,"value":151},{"type":32,"tag":120,"props":844,"children":845},{"style":143},[846],{"type":37,"value":156},{"type":32,"tag":120,"props":848,"children":849},{"class":122,"line":347},[850],{"type":32,"tag":120,"props":851,"children":852},{"style":137},[853],{"type":37,"value":165},{"type":32,"tag":120,"props":855,"children":856},{"class":122,"line":381},[857],{"type":32,"tag":120,"props":858,"children":859},{"style":143},[860],{"type":37,"value":714},{"type":32,"tag":120,"props":862,"children":863},{"class":122,"line":390},[864],{"type":32,"tag":120,"props":865,"children":866},{"style":143},[867],{"type":37,"value":722},{"type":32,"tag":120,"props":869,"children":870},{"class":122,"line":404},[871],{"type":32,"tag":120,"props":872,"children":873},{"style":143},[874],{"type":37,"value":875},"    session_hour,\n",{"type":32,"tag":120,"props":877,"children":878},{"class":122,"line":423},[879,884,889,894,898],{"type":32,"tag":120,"props":880,"children":881},{"style":143},[882],{"type":37,"value":883},"    ARRAY_AGG(",{"type":32,"tag":120,"props":885,"children":886},{"style":137},[887],{"type":37,"value":888},"DISTINCT",{"type":32,"tag":120,"props":890,"children":891},{"style":143},[892],{"type":37,"value":893}," device_id) ",{"type":32,"tag":120,"props":895,"children":896},{"style":137},[897],{"type":37,"value":151},{"type":32,"tag":120,"props":899,"children":900},{"style":143},[901],{"type":37,"value":902}," devices\n",{"type":32,"tag":120,"props":904,"children":906},{"class":122,"line":905},18,[907,911],{"type":32,"tag":120,"props":908,"children":909},{"style":137},[910],{"type":37,"value":265},{"type":32,"tag":120,"props":912,"children":913},{"style":143},[914],{"type":37,"value":915}," device_sessions\n",{"type":32,"tag":120,"props":917,"children":919},{"class":122,"line":918},19,[920,925],{"type":32,"tag":120,"props":921,"children":922},{"style":137},[923],{"type":37,"value":924},"  GROUP BY",{"type":32,"tag":120,"props":926,"children":927},{"style":143},[928],{"type":37,"value":929}," ip_address, timezone, session_hour\n",{"type":32,"tag":120,"props":931,"children":933},{"class":122,"line":932},20,[934,939,944,948,952,956,961],{"type":32,"tag":120,"props":935,"children":936},{"style":137},[937],{"type":37,"value":938},"  HAVING",{"type":32,"tag":120,"props":940,"children":941},{"style":181},[942],{"type":37,"value":943}," COUNT",{"type":32,"tag":120,"props":945,"children":946},{"style":143},[947],{"type":37,"value":189},{"type":32,"tag":120,"props":949,"children":950},{"style":137},[951],{"type":37,"value":888},{"type":32,"tag":120,"props":953,"children":954},{"style":143},[955],{"type":37,"value":893},{"type":32,"tag":120,"props":957,"children":958},{"style":137},[959],{"type":37,"value":960},">",{"type":32,"tag":120,"props":962,"children":963},{"style":181},[964],{"type":37,"value":965}," 1\n",{"type":32,"tag":120,"props":967,"children":969},{"class":122,"line":968},21,[970],{"type":32,"tag":120,"props":971,"children":972},{"style":143},[973],{"type":37,"value":288},{"type":32,"tag":120,"props":975,"children":977},{"class":122,"line":976},22,[978],{"type":32,"tag":120,"props":979,"children":980},{"style":137},[981],{"type":37,"value":297},{"type":32,"tag":120,"props":983,"children":985},{"class":122,"line":984},23,[986,991,995,1000,1004],{"type":32,"tag":120,"props":987,"children":988},{"style":143},[989],{"type":37,"value":990},"  FARM_FINGERPRINT(",{"type":32,"tag":120,"props":992,"children":993},{"style":181},[994],{"type":37,"value":320},{"type":32,"tag":120,"props":996,"children":997},{"style":143},[998],{"type":37,"value":999},"(ip_address, timezone)) ",{"type":32,"tag":120,"props":1001,"children":1002},{"style":137},[1003],{"type":37,"value":151},{"type":32,"tag":120,"props":1005,"children":1006},{"style":143},[1007],{"type":37,"value":1008}," household_id,\n",{"type":32,"tag":120,"props":1010,"children":1012},{"class":122,"line":1011},24,[1013],{"type":32,"tag":120,"props":1014,"children":1015},{"style":143},[1016],{"type":37,"value":1017},"  devices,\n",{"type":32,"tag":120,"props":1019,"children":1021},{"class":122,"line":1020},25,[1022,1027,1031],{"type":32,"tag":120,"props":1023,"children":1024},{"style":143},[1025],{"type":37,"value":1026},"  ARRAY_LENGTH(devices) ",{"type":32,"tag":120,"props":1028,"children":1029},{"style":137},[1030],{"type":37,"value":151},{"type":32,"tag":120,"props":1032,"children":1033},{"style":143},[1034],{"type":37,"value":1035}," device_count\n",{"type":32,"tag":120,"props":1037,"children":1039},{"class":122,"line":1038},26,[1040,1044],{"type":32,"tag":120,"props":1041,"children":1042},{"style":137},[1043],{"type":37,"value":396},{"type":32,"tag":120,"props":1045,"children":1046},{"style":143},[1047],{"type":37,"value":1048}," household_candidates\n",{"type":32,"tag":33,"props":1050,"children":1051},{},[1052,1054,1060,1062,1068],{"type":37,"value":1053},"Questo modello raggruppa i dispositivi che provengono dalla stessa combinazione IP + timezone entro una finestra temporale di 1 ora. In produzione, sostituisci ",{"type":32,"tag":57,"props":1055,"children":1057},{"className":1056},[],[1058],{"type":37,"value":1059},"session_hour",{"type":37,"value":1061}," con una finestra di 4 ore (aumenta la probabilità che i dispositivi domestici siano attivi contemporaneamente). Per il rischio di frode, filtra gli household con ",{"type":32,"tag":57,"props":1063,"children":1065},{"className":1064},[],[1066],{"type":37,"value":1067},"device_count > 10",{"type":37,"value":1069},".",{"type":32,"tag":40,"props":1071,"children":1073},{"id":1072},"sincronizzazione-del-grafo-di-identità-dal-data-lake-alla-piattaforma-pubblicitaria",[1074],{"type":37,"value":1075},"Sincronizzazione del Grafo di Identità: Dal Data Lake alla Piattaforma Pubblicitaria",{"type":32,"tag":33,"props":1077,"children":1078},{},[1079],{"type":37,"value":1080},"Mantieni il grafo di identità risultante dall'hash matching e dal probabilistic linking in BigQuery, ma Google Ads, Meta e Klaviyo usano i propri sistemi di identità. Senza uno strato di sincronizzazione, l'identity resolution rimane dato morto.",{"type":32,"tag":33,"props":1082,"children":1083},{},[1084,1086,1092],{"type":37,"value":1085},"Flusso di orchestrazione: ogni notte alle 02:00, un DAG Airflow estrae gli ultimi 7 giorni di record aggiornati dalla tabella ",{"type":32,"tag":57,"props":1087,"children":1089},{"className":1088},[],[1090],{"type":37,"value":1091},"identity_graph",{"type":37,"value":1093}," in BigQuery, invia gli hash e-mail all'API Google Ads Customer Match, e gli hash telefonici all'API Meta Conversions. Il controllo del rate limit è obbligatorio — Google Customer Match ha un limite giornaliero di 500K righe, Meta CAPI di 1M event (standard tier 2025).",{"type":32,"tag":33,"props":1095,"children":1096},{},[1097,1099,1106],{"type":37,"value":1098},"Per Google Ads Customer Match, hai bisogno di almeno 1.000 utenti con corrispondenza (audience threshold). Quando carichi gli hash e-mail, Google li confronta con il proprio grafo, e il match rate si situa tra il 40-70% (dipende dalla qualità dell'e-mail fornita). Gli hash senza corrispondenza non entrano nel sistema — è per questo che devi garantire la qualità dei dati già a livello di ",{"type":32,"tag":620,"props":1100,"children":1103},{"href":1101,"rel":1102},"https:\u002F\u002Fwww.roibase.com.tr\u002Fit\u002Ffirstparty",[624],[1104],{"type":37,"value":1105},"First-Party Data & Architettura di Misurazione",{"type":37,"value":1069},{"type":32,"tag":33,"props":1108,"children":1109},{},[1110,1112,1118,1120,1126,1128,1133,1135,1141],{"type":37,"value":1111},"In Meta Conversions API, oltre all'hash matching, puoi inviare anche i cookie ",{"type":32,"tag":57,"props":1113,"children":1115},{"className":1114},[],[1116],{"type":37,"value":1117},"fbc",{"type":37,"value":1119}," (Facebook Click ID) e ",{"type":32,"tag":57,"props":1121,"children":1123},{"className":1122},[],[1124],{"type":37,"value":1125},"fbp",{"type":37,"value":1127}," (Facebook Browser ID). Se l'utente ha cliccato su un annuncio Meta e ha visitato il sito, il parametro ",{"type":32,"tag":57,"props":1129,"children":1131},{"className":1130},[],[1132],{"type":37,"value":1117},{"type":37,"value":1134}," è presente nell'URL (",{"type":32,"tag":57,"props":1136,"children":1138},{"className":1137},[],[1139],{"type":37,"value":1140},"fbclid=",{"type":37,"value":1142},") — catturalo server-side e aggiungilo all'evento CAPI. La finestra di attribuzione si estende a 28 giorni e il match rate aumenta del 18-25% (benchmark interno Meta 2025).",{"type":32,"tag":40,"props":1144,"children":1146},{"id":1145},"privacy-compliance-i-limiti-dellidentity-resolution",[1147],{"type":37,"value":1148},"Privacy + Compliance: I Limiti dell'Identity Resolution",{"type":32,"tag":33,"props":1150,"children":1151},{},[1152],{"type":37,"value":1153},"Se non allinei l'identity resolution a KVKK, GDPR e CCPA, la tua pipeline di dati corre un rischio legale. La regola fondamentale: non puoi nemmeno generare un hash senza il consenso esplicito dell'utente (KVKK articolo 5). L'integrazione con una Consent Management Platform (OneTrust, Cookiebot) è obbligatoria.",{"type":32,"tag":33,"props":1155,"children":1156},{},[1157,1159,1165,1167,1173,1175,1181],{"type":37,"value":1158},"Nel Consent Mode v2, se l'utente fornisce \"ad_storage=denied\", Google non ti autorizza a inviare PII, a generare hash o a costruire profili. Nel server-side GTM, ascolta l'evento ",{"type":32,"tag":57,"props":1160,"children":1162},{"className":1161},[],[1163],{"type":37,"value":1164},"consent",{"type":37,"value":1166},", e non eseguire la funzione ",{"type":32,"tag":57,"props":1168,"children":1170},{"className":1169},[],[1171],{"type":37,"value":1172},"sha256()",{"type":37,"value":1174}," senza consenso accordato. La stessa regola vale per Meta CAPI — imposta il parametro ",{"type":32,"tag":57,"props":1176,"children":1178},{"className":1177},[],[1179],{"type":37,"value":1180},"data_processing_options",{"type":37,"value":1182}," sulla modalità \"LDU\" (Limited Data Use).",{"type":32,"tag":33,"props":1184,"children":1185},{},[1186,1188,1194],{"type":37,"value":1187},"Secondo CCPA, se ricevi un segnale \"Do Not Sell\", rimuovi l'utente dal grafo di identità e elimina il PII hash dalle piattaforme. Google Customer Match e Meta Custom Audience hanno API di cancellazione — rimuovono l'hash dai loro sistemi entro 48 ore (SLA di conformità CCPA). In BigQuery, mantieni una tabella ",{"type":32,"tag":57,"props":1189,"children":1191},{"className":1190},[],[1192],{"type":37,"value":1193},"user_deletion_requests",{"type":37,"value":1195},", e ogni notte pulisci il grafo di identità in base a questa tabella.",{"type":32,"tag":40,"props":1197,"children":1199},{"id":1198},"tracciabilità-debug-dellidentity-resolution",[1200],{"type":37,"value":1201},"Tracciabilità: Debug dell'Identity Resolution",{"type":32,"tag":33,"props":1203,"children":1204},{},[1205],{"type":37,"value":1206},"Dopo il deploy dell'identity graph in produzione, la domanda più difficile è \"perché questi due dispositivi non sono stati unificati?\". Senza una tabella di monitoraggio, il debug è impossibile.",{"type":32,"tag":33,"props":1208,"children":1209},{},[1210,1212,1218,1220,1226],{"type":37,"value":1211},"In BigQuery, crea una tabella ",{"type":32,"tag":57,"props":1213,"children":1215},{"className":1214},[],[1216],{"type":37,"value":1217},"identity_resolution_log",{"type":37,"value":1219}," che registri i metadati di ogni operazione di merge: quali segnali sono stati usati (email_hash, phone_hash, ip_fingerprint), qual è il confidence score, quando è avvenuto il merge, a quale piattaforma downstream è stato sincronizzato. Usa i test dbt per controllare la qualità dei dati — per esempio, se un ",{"type":32,"tag":57,"props":1221,"children":1223},{"className":1222},[],[1224],{"type":37,"value":1225},"household_id",{"type":37,"value":1227}," contiene più di 50 dispositivi, attiva un alert (potrebbe essere traffico bot o un server proxy).",{"type":32,"tag":33,"props":1229,"children":1230},{},[1231],{"type":37,"value":1232},"In Google Analytics 4, apri il rapporto User-ID e monitora il numero di utenti cross-device. Se la pipeline di identity resolution funziona correttamente, la metrica \"users (cross-device)\" dovrebbe essere il 15-30% inferiore a \"total users\" (il numero reale di utenti è minore del conteggio dei dispositivi). Se questo divario non si stringe, potrebbe esserci una perdita di dati nel layer di hash matching o probabilistic linking — controlla gli eventi di consenso e il pepper dell'hash.",{"type":32,"tag":1234,"props":1235,"children":1236},"hr",{},[],{"type":32,"tag":33,"props":1238,"children":1239},{},[1240,1242,1247],{"type":37,"value":1241},"Costruisci l'identity resolution non come un progetto una tantum, ma come una pipeline di dati da ottimizzare continuamente. Combina hash matching + probabilistic linking + household identity per unificare i segnali frammentati, ma progetta le regole di compliance fin dall'inizio — altrimenti il data lake diventa un archivio di rischi legali. Il primo passo: crea la tabella ",{"type":32,"tag":57,"props":1243,"children":1245},{"className":1244},[],[1246],{"type":37,"value":1091},{"type":37,"value":1248}," in BigQuery, costruisci la pipeline di hash con dbt, sincronizza con Google Ads Customer Match tramite Airflow. Il passo successivo: riduci il confidence score threshold al 70% e misura il tasso di falsi positivi, poi estendi a Meta e Klaviyo. Se non implementi l'identity resolution, il 22-35% del tuo budget di marketing finisce in attribuzione errata (Forrester 2025) — costruisci il grafo adesso.",{"type":32,"tag":1250,"props":1251,"children":1252},"style",{},[1253],{"type":37,"value":1254},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":16,"searchDepth":159,"depth":159,"links":1256},[1257,1260,1261,1264,1265,1266],{"id":42,"depth":133,"text":45,"children":1258},[1259],{"id":105,"depth":159,"text":108},{"id":465,"depth":133,"text":468},{"id":632,"depth":133,"text":635,"children":1262},[1263],{"id":653,"depth":159,"text":656},{"id":1072,"depth":133,"text":1075},{"id":1145,"depth":133,"text":1148},{"id":1198,"depth":133,"text":1201},"markdown","content:it:data:risoluzione-identita-sei-segnali-unificati.md","content","it\u002Fdata\u002Frisoluzione-identita-sei-segnali-unificati.md","it\u002Fdata\u002Frisoluzione-identita-sei-segnali-unificati","md",1785967478991]