[{"data":1,"prerenderedAt":1266},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fru\u002Fdata\u002Fidentity-resolution-six-signals-to-single-customer-identity":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":11,"_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":1260,"_id":1261,"_source":1262,"_file":1263,"_stem":1264,"_extension":1265},"data",false,"","Identity Resolution: От 6 сигналов к единой идентификации клиента","Объединяйте фрагментированные сигналы через hash matching, probabilistic linking и household identity, связывая маркетинговые данные с системой принятия решений.","2026-08-04",[21,22,23,24,25],"identity-resolution","hash-matching","probabilistic-linking","cdp","first-party-data",8,"Roibase",{"type":29,"children":30,"toc":1248},"root",[31,39,46,51,89,102,109,450,463,469,474,479,484,614,630,636,641,646,651,657,1049,1062,1068,1073,1086,1100,1136,1142,1147,1176,1189,1195,1200,1221,1226,1230,1242],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","Пользователь анонимно просматривает веб-сайт, входит в мобильное приложение, подписывается на рассылку с другой электронной почтой, платит кредитной картой в магазине. Каждая точка контакта — это отдельный сигнал, но для оптимизации маркетингового бюджета вы обязаны связать их с единой идентификацией клиента. В 2026 году cookies исчезли, число устройств растёт, consent rate находится в диапазоне 40–60% — identity resolution больше не опция, это краеугольный камень архитектуры измерений.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"hash-matching-преобразование-электронной-почты-и-номера-телефона-в-граф-данных",[44],{"type":37,"value":45},"Hash Matching: преобразование электронной почты и номера телефона в граф данных",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"Hash matching — это метод, при котором вы преобразуете персональные данные пользователя (PII: электронная почта, телефон) в хеш SHA-256 и отправляете его на платформы графа (Google PAIR, Meta Advanced Matching, LiveRamp). Raw PII никогда не попадает в браузер — хеширование происходит на стороне сервера через server-side GTM или CDP, затем передаётся в Measurement Protocol.",{"type":32,"tag":33,"props":52,"children":53},{},[54,56,63,65,71,73,79,81,87],{"type":37,"value":55},"Пример потока: пользователь вводит ",{"type":32,"tag":57,"props":58,"children":60},"code",{"className":59},[],[61],{"type":37,"value":62},"[email protected]",{"type":37,"value":64}," в форму оформления заказа. Серверный контейнер генерирует хеш SHA-256 ",{"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},", добавляет его в параметр ",{"type":32,"tag":57,"props":82,"children":84},{"className":83},[],[85],{"type":37,"value":86},"user_id",{"type":37,"value":88}," Google Analytics 4. Google сравнивает этот хеш с собственным графом идентификации — если пользователь ранее входил в Google Ads, происходит match, начинается цепь кросс-девайс атрибуции.",{"type":32,"tag":33,"props":90,"children":91},{},[92,94,100],{"type":37,"value":93},"SHA-256 — однонаправленная функция, но без salt она уязвима для rainbow table атак. В production используйте ",{"type":32,"tag":57,"props":95,"children":97},{"className":96},[],[98],{"type":37,"value":99},"sha256(email + pepper)",{"type":37,"value":101}," (pepper — глобальный секретный ключ, хранится в переменных окружения). В Meta Advanced Matching комбинация хеша + код страны увеличивает match rate на 12–18% (бенчмарк Meta 2025). Ограничение hash matching — consent: под GDPR вы не можете отправлять даже хеш, если пользователь не дал согласие.",{"type":32,"tag":103,"props":104,"children":106},"h3",{"id":105},"пример-bigquery-pipeline-для-hash-matching",[107],{"type":37,"value":108},"Пример BigQuery Pipeline для Hash Matching",{"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 модель: 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,280,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 модель: 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":259},{"class":122,"line":26},[260,265,270,275],{"type":32,"tag":120,"props":261,"children":262},{"style":137},[263],{"type":37,"value":264},"  FROM",{"type":32,"tag":120,"props":266,"children":267},{"style":143},[268],{"type":37,"value":269}," {{ ref(",{"type":32,"tag":120,"props":271,"children":272},{"style":220},[273],{"type":37,"value":274},"'raw_user_signups'",{"type":32,"tag":120,"props":276,"children":277},{"style":143},[278],{"type":37,"value":279},") }}\n",{"type":32,"tag":120,"props":281,"children":283},{"class":122,"line":282},9,[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},"Эта модель параметризирована в dbt, pepper хранится в переменных окружения, затем используется в sGTM event'ах в объекте ",{"type":32,"tag":57,"props":456,"children":458},{"className":457},[],[459],{"type":37,"value":460},"user_data",{"type":37,"value":462},". Без salt хеш PII остаётся обратимым — в production pepper обязателен.",{"type":32,"tag":40,"props":464,"children":466},{"id":465},"probabilistic-linking-отпечаток-устройства-и-граф-поведения",[467],{"type":37,"value":468},"Probabilistic Linking: отпечаток устройства и граф поведения",{"type":32,"tag":33,"props":470,"children":471},{},[472],{"type":37,"value":473},"Когда детерминированный match (электронная почта \u002F телефон) невозможен, активируется probabilistic linking. Вы кластеризуете пользователей на основе отпечатка устройства (User-Agent, IP, разрешение экрана, временная зона), последовательности событий и длительности сессии. Если confidence score падает ниже 60%, прекратите линкование — false positive напрямую влияет на маркетинговый бюджет.",{"type":32,"tag":33,"props":475,"children":476},{},[477],{"type":37,"value":478},"Пример сценария: с одного IP-адреса через 30 минут два разных устройства (iPhone Safari, MacBook Chrome) заходят на ваш e-commerce, оба просматривают один товар, оба прерывают процесс checkout. Вероятностный движок помечает эти две сессии как \"household same user\" с уверенностью 78%. Если позже тот же iPhone завершит покупку, уверенность повысится до 95%, идентификация объединится в графе.",{"type":32,"tag":33,"props":480,"children":481},{},[482],{"type":37,"value":483},"Решения вроде LiveRamp IdentityLink и The Trade Desk Unified ID 2.0 используют гибридный подход probabilistic + deterministic. UID2 framework сочетает хеш электронной почты + bidstream сигналы для расчёта оценки (UID2 spec 2025). Если вы строите собственный pipeline, попробуйте DBscan или hierarchical clustering, но в production критична интерпретируемость — rule-based скоринг предпочтительнее чёрного ящика ML-модели.",{"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},"Тип сигнала",{"type":32,"tag":497,"props":503,"children":504},{},[505],{"type":37,"value":506},"Match Confidence",{"type":32,"tag":497,"props":508,"children":509},{},[510],{"type":37,"value":511},"Privacy Risk",{"type":32,"tag":497,"props":513,"children":514},{},[515],{"type":37,"value":516},"Область применения",{"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},"Email hash (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},"Низкий (требуется согласие)",{"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},"Phone hash (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},"Средний (явное согласие КВКК)",{"type":32,"tag":525,"props":564,"children":565},{},[566],{"type":37,"value":567},"CRM → Ad platform sync",{"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},"Высокий (fingerprinting)",{"type":32,"tag":525,"props":587,"children":588},{},[589],{"type":37,"value":590},"Fraud detection, 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},"Behavioral sequence (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},"Низкий (анонимизированные данные)",{"type":32,"tag":525,"props":610,"children":611},{},[612],{"type":37,"value":613},"Session stitching, journey анализ",{"type":32,"tag":33,"props":615,"children":616},{},[617,619,628],{"type":37,"value":618},"Если вы делаете probabilistic linking в слое ",{"type":32,"tag":620,"props":621,"children":625},"a",{"href":622,"rel":623},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Fretention-engineering-cdp",[624],"nofollow",[626],{"type":37,"value":627},"CDP & Retention Engineering",{"type":37,"value":629},", вы можете хранить в data lake анонимизированный граф идентификации — compliance КВКК становится проще благодаря такой архитектуре.",{"type":32,"tag":40,"props":631,"children":633},{"id":632},"household-identity-идентификация-по-местоположению-а-не-устройству",[634],{"type":37,"value":635},"Household Identity: идентификация по местоположению, а не устройству",{"type":32,"tag":33,"props":637,"children":638},{},[639],{"type":37,"value":640},"Объединение всех устройств в доме (смарт-ТВ, планшет, телефон, ноутбук) под одним household ID, особенно критично для FMCG, телеком и финсектора. Вы определяете не одного пользователя, а «домохозяйство» — единица с платёжеспособностью.",{"type":32,"tag":33,"props":642,"children":643},{},[644],{"type":37,"value":645},"Google PAIR (Publisher Advertiser Identity Reconciliation) поддерживает household graph — устройства, подключённые к одной Wi-Fi сети (IP + location + timezone match), агрегируются в сигнал для объявлений. Однако PAIR требует согласия: без \"ad_storage=granted\" в Consent Mode v2 household ID не создаётся.",{"type":32,"tag":33,"props":647,"children":648},{},[649],{"type":37,"value":650},"Практический пример household identity: семья подписана на Netflix, родители смотрят в разных профилях, дети смотрят мультики на ТВ. OTT-платформа рекламы (Roku, Samsung Ads) назначает этим трём профилям один household ID, frequency capping работает на уровне домохозяйства, а не устройства. Один 30-секундный ролик показывается household'у максимум 5 раз в неделю — хотя на уровне устройств может быть 15 impression'ов.",{"type":32,"tag":103,"props":652,"children":654},{"id":653},"пример-pipeline-для-household-id",[655],{"type":37,"value":656},"Пример Pipeline для Household ID",{"type":32,"tag":110,"props":658,"children":660},{"className":112,"code":659,"language":114,"meta":16,"style":16},"-- dbt модель: 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 модель: 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":26},[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":282},[774,778,782,787],{"type":32,"tag":120,"props":775,"children":776},{"style":137},[777],{"type":37,"value":264},{"type":32,"tag":120,"props":779,"children":780},{"style":143},[781],{"type":37,"value":269},{"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":279},{"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":264},{"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],{"type":37,"value":1053},"Эта модель группирует устройства, исходящие с одного IP + timezone, в окне 1 час. В production замените ",{"type":32,"tag":57,"props":1055,"children":1057},{"className":1056},[],[1058],{"type":37,"value":1059},"session_hour",{"type":37,"value":1061}," на 4-часовое окно (вероятность одновременной активности устройств в доме растёт). Для защиты от fraud отфильтруйте household'ы с device_count > 10.",{"type":32,"tag":40,"props":1063,"children":1065},{"id":1064},"синхронизация-identity-graph-из-data-lake-на-платформы-рекламы",[1066],{"type":37,"value":1067},"Синхронизация Identity Graph: из Data Lake на платформы рекламы",{"type":32,"tag":33,"props":1069,"children":1070},{},[1071],{"type":37,"value":1072},"Ваш граф идентификации из hash matching и probabilistic linking хранится в BigQuery, но Google Ads, Meta, Klaviyo используют свои системы идентификации. Без слоя синхронизации identity resolution останется мёртвыми данными.",{"type":32,"tag":33,"props":1074,"children":1075},{},[1076,1078,1084],{"type":37,"value":1077},"Поток оркестрации: каждую ночь в 02:00 DAG Airflow запускается, вытягивает из BigQuery таблицы ",{"type":32,"tag":57,"props":1079,"children":1081},{"className":1080},[],[1082],{"type":37,"value":1083},"identity_graph",{"type":37,"value":1085}," записи, обновлённые за последние 7 дней, отправляет email-хеши в Google Ads Customer Match API, phone-хеши в Meta Conversions API. Контроль rate limit обязателен — Google Customer Match: 500K строк в сутки, Meta CAPI: 1M событий в лимит (стандарт 2025).",{"type":32,"tag":33,"props":1087,"children":1088},{},[1089,1091,1098],{"type":37,"value":1090},"Для Google Ads Customer Match требуется минимум 1.000 matched пользователей (порог audience). При загрузке email-хешей Google сравнивает с собственным графом, match rate 40–70% (зависит от качества данных). НеMatchированные хеши не попадают в систему — поэтому в слое ",{"type":32,"tag":620,"props":1092,"children":1095},{"href":1093,"rel":1094},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Ffirstparty",[624],[1096],{"type":37,"value":1097},"First-Party Data & Measurement Architecture",{"type":37,"value":1099}," вам нужно гарантировать качество данных с самого начала.",{"type":32,"tag":33,"props":1101,"children":1102},{},[1103,1105,1111,1113,1119,1121,1126,1128,1134],{"type":37,"value":1104},"В Meta Conversions API кроме hash matching можно отправлять ",{"type":32,"tag":57,"props":1106,"children":1108},{"className":1107},[],[1109],{"type":37,"value":1110},"fbc",{"type":37,"value":1112}," (Facebook Click ID) и ",{"type":32,"tag":57,"props":1114,"children":1116},{"className":1115},[],[1117],{"type":37,"value":1118},"fbp",{"type":37,"value":1120}," (Facebook Browser ID) cookie'ы. Если пользователь кликнул на Meta объявление и пришёл на сайт, параметр ",{"type":32,"tag":57,"props":1122,"children":1124},{"className":1123},[],[1125],{"type":37,"value":1110},{"type":37,"value":1127}," будет в URL (",{"type":32,"tag":57,"props":1129,"children":1131},{"className":1130},[],[1132],{"type":37,"value":1133},"fbclid=",{"type":37,"value":1135},"), захватите его server-side и добавьте в CAPI event — attribution window расширяется до 28 дней, match rate растёт на 18–25% (internal benchmark Meta 2025).",{"type":32,"tag":40,"props":1137,"children":1139},{"id":1138},"privacy-compliance-границы-identity-resolution",[1140],{"type":37,"value":1141},"Privacy + Compliance: границы Identity Resolution",{"type":32,"tag":33,"props":1143,"children":1144},{},[1145],{"type":37,"value":1146},"Если вы не выравняете identity resolution с КВКК, GDPR и CCPA, ваш pipeline несёт юридический риск. Основное правило: без явного согласия пользователя вы не можете даже создать хеш (КВКК статья 5). Интеграция с Consent Management Platform (OneTrust, Cookiebot) обязательна.",{"type":32,"tag":33,"props":1148,"children":1149},{},[1150,1152,1158,1160,1166,1168,1174],{"type":37,"value":1151},"В Consent Mode v2 если пользователь выбрал \"ad_storage=denied\", Google запрещает отправку PII, хеширование, всё. Слушайте ",{"type":32,"tag":57,"props":1153,"children":1155},{"className":1154},[],[1156],{"type":37,"value":1157},"consent",{"type":37,"value":1159}," event в server-side GTM, не запускайте ",{"type":32,"tag":57,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":37,"value":1165},"sha256()",{"type":37,"value":1167}," функцию без granted consent. То же правило для Meta CAPI — переводите ",{"type":32,"tag":57,"props":1169,"children":1171},{"className":1170},[],[1172],{"type":37,"value":1173},"data_processing_options",{"type":37,"value":1175}," в режим \"LDU\" (Limited Data Use).",{"type":32,"tag":33,"props":1177,"children":1178},{},[1179,1181,1187],{"type":37,"value":1180},"Под CCPA при получении сигнала \"Do Not Sell\" удалите пользователя из графа, удалите хешированный PII из API платформ. Google Customer Match и Meta Custom Audience имеют delete API — они удаляют хеш из систем в течение 48 часов (CCPA SLA compliance). В BigQuery ведите таблицу ",{"type":32,"tag":57,"props":1182,"children":1184},{"className":1183},[],[1185],{"type":37,"value":1186},"user_deletion_requests",{"type":37,"value":1188},", каждую ночь очищайте identity graph согласно этой таблице.",{"type":32,"tag":40,"props":1190,"children":1192},{"id":1191},"трассировка-как-дебажить-identity-resolution",[1193],{"type":37,"value":1194},"Трассировка: как дебажить Identity Resolution",{"type":32,"tag":33,"props":1196,"children":1197},{},[1198],{"type":37,"value":1199},"После запуска identity graph в production главный вопрос: \"почему эти два устройства не объединились?\" Без мониторинга это не разрешить.",{"type":32,"tag":33,"props":1201,"children":1202},{},[1203,1205,1211,1213,1219],{"type":37,"value":1204},"Создайте таблицу ",{"type":32,"tag":57,"props":1206,"children":1208},{"className":1207},[],[1209],{"type":37,"value":1210},"identity_resolution_log",{"type":37,"value":1212}," в BigQuery, логируйте metadata каждой операции merge: какие сигналы использовались (email_hash, phone_hash, ip_fingerprint), какой confidence score, когда был выполнен merge, на какую платформу синхронизирован. С помощью dbt тестов контролируйте качество данных — например, если под одним ",{"type":32,"tag":57,"props":1214,"children":1216},{"className":1215},[],[1217],{"type":37,"value":1218},"household_id",{"type":37,"value":1220}," более 50 устройств, бросайте alert (может быть bot traffic или proxy server).",{"type":32,"tag":33,"props":1222,"children":1223},{},[1224],{"type":37,"value":1225},"В Google Analytics 4 откройте отчёт User-ID и мониторьте cross-device пользователей. Если pipeline работает, метрика \"users (cross-device)\" должна быть на 15–30% ниже \"total users\" (реальных пользователей меньше, чем device count). Если этот разрыв не сокращается, в слое hash matching или probabilistic linking есть утечка данных — проверьте consent event'ы и hash pepper.",{"type":32,"tag":1227,"props":1228,"children":1229},"hr",{},[],{"type":32,"tag":33,"props":1231,"children":1232},{},[1233,1235,1240],{"type":37,"value":1234},"Строите identity resolution не как one-time проект, а как непрерывно оптимизируемый data pipeline. Комбинируйте hash matching + probabilistic linking + household identity, чтобы объединить фрагментированные сигналы, но закладывайте compliance с самого начала — иначе data lake станет хранилищем юридических рисков. Первый шаг: создайте таблицу ",{"type":32,"tag":57,"props":1236,"children":1238},{"className":1237},[],[1239],{"type":37,"value":1083},{"type":37,"value":1241}," в BigQuery, настройте dbt hash pipeline, синхронизируйте с Google Ads Customer Match через Airflow. Следующий шаг: поднимите confidence score threshold до 70%, измерьте false positive rate, потом расширьте на Meta и Klaviyo. Без identity resolution 22–35% маркетингового бюджета уходит на неверную атрибуцию (Forrester 2025) — спроектируйте граф сейчас.",{"type":32,"tag":1243,"props":1244,"children":1245},"style",{},[1246],{"type":37,"value":1247},"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":1249},[1250,1253,1254,1257,1258,1259],{"id":42,"depth":133,"text":45,"children":1251},[1252],{"id":105,"depth":159,"text":108},{"id":465,"depth":133,"text":468},{"id":632,"depth":133,"text":635,"children":1255},[1256],{"id":653,"depth":159,"text":656},{"id":1064,"depth":133,"text":1067},{"id":1138,"depth":133,"text":1141},{"id":1191,"depth":133,"text":1194},"markdown","content:ru:data:identity-resolution-six-signals-to-single-customer-identity.md","content","ru\u002Fdata\u002Fidentity-resolution-six-signals-to-single-customer-identity.md","ru\u002Fdata\u002Fidentity-resolution-six-signals-to-single-customer-identity","md",1785967485001]