[{"data":1,"prerenderedAt":2399},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fru\u002Fdata\u002Fprivacy-first-analytics-plausible-serverside-aggregation":13},{"i18nKey":4,"paths":5},"data-006-2026-07",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Fdata\u002Fprivacy-first-analytics-plausible-server-side","\u002Fen\u002Fdata\u002Fprivacy-first-analytics-plausible-server-side-aggregation","\u002Fes\u002Fdata\u002Fprivacidad-first-analytics-plausible-agregacion-servidor","\u002Ffr\u002Fdata\u002Fprivacy-first-analytics-plausible-server-side-aggregation","\u002Fit\u002Fdata\u002Fanalytics-privacy-first-plausible-aggregazione-lato-server","\u002Fru\u002Fdata\u002Fprivacy-first-analytics-plausible-serverside-aggregation","\u002Ftr\u002Fdata\u002Fprivacy-first-analytics-plausible-ve-sunucu-tarafi-aggregation",{"_path":11,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":20,"i18nKey":4,"tags":21,"readingTime":27,"author":28,"body":29,"_type":2393,"_id":2394,"_source":2395,"_file":2396,"_stem":2397,"_extension":2398},"data",false,"","Privacy-First Analytics: Plausible + Серверная агрегация","Архитектура без cookies: Plausible, серверная агрегация и соответствие GDPR. Сравнение с GA4, интеграция first-party данных и compliance-driven tracking.","2026-07-10","verianalizi",[22,23,24,25,26],"privacy-first-analytics","cookieless-tracking","plausible","gdpr-compliance","serverside-aggregation",9,"Roibase",{"type":30,"children":31,"toc":2384},"root",[32,40,47,52,73,78,84,89,94,581,586,591,774,779,786,802,807,1030,1035,1041,1046,1227,1232,1237,1243,1248,1420,1449,1725,1730,1932,1937,1950,1956,1961,1966,2368,2373,2378],{"type":33,"tag":34,"props":35,"children":36},"element","p",{},[37],{"type":38,"value":39},"text","Google Analytics 4 и обязательный режим согласия v2, а также рекордные штрафы по защите данных в 2024 году переосмысляют измерение маркетинга. В Европе %42 веб-трафика блокирует отслеживание (Ghostery 2025), в России этот показатель достигает %31. Системы на основе клиентских cookies теряют третую часть трафика. Privacy-first analytics становится не только compliance-требованием, но и архитектурной необходимостью — балансируя между техническими потребностями, соответствием регуляции и пользовательским опытом. Решения вроде Plausible в сочетании с серверной агрегацией обеспечивают этот баланс на уровне конкретных данных.",{"type":33,"tag":41,"props":42,"children":44},"h2",{"id":43},"архитектурная-логика-cookieless-analytics",[45],{"type":38,"value":46},"Архитектурная логика Cookieless Analytics",{"type":33,"tag":34,"props":48,"children":49},{},[50],{"type":38,"value":51},"Privacy-first analytics измеряет поведение пользователей в агрегированном виде, без зависимости от клиентских идентификаторов (cookies, device ID). Plausible регистрирует просмотры страниц, источники трафика, параметры UTM и события без записи cookies или LocalStorage. Каждый запрос отправляется POST-методом на сервер, сервер генерирует анонимный хеш (IP + User-Agent + домен сайта + ротирующая соль), и этот хеш используется для подсчёта уникальных посетителей в 24-часовом окне. Хеш не сохраняется — каждый день обнуляется, переидентификация невозможна.",{"type":33,"tag":34,"props":53,"children":54},{},[55,57,64,66,71],{"type":38,"value":56},"В GA4 идентификатор пользователя записывается в cookie (",{"type":33,"tag":58,"props":59,"children":61},"code",{"className":60},[],[62],{"type":38,"value":63},"_ga",{"type":38,"value":65},", срок жизни 2 года), для cross-domain tracking параметр ",{"type":33,"tag":58,"props":67,"children":69},{"className":68},[],[70],{"type":38,"value":63},{"type":38,"value":72}," добавляется в URL. По GDPR это требует явного согласия — отказ в consent-форме останавливает отслеживание. У Plausible нет необходимости в consent-баннере, так как обработка персональных данных не происходит. В соответствии с GDPR (статья 4(1)) и локальными нормами данные считаются анонимизированными, если хеш удаляется в течение 24 часов без возможности восстановления личности.",{"type":33,"tag":34,"props":74,"children":75},{},[76],{"type":38,"value":77},"Архитектура создаёт очевидный компромисс: анализ по воронке (funnel analysis), когортный анализ удержания (cohort retention), cross-device journey mapping — все эти возможности требуют идентификатора на уровне пользователя. Plausible предоставляет достижение целей и breakdown по источникам, но не имеет segment-based LTV или session replay. Здесь на сцену выходит слой агрегации.",{"type":33,"tag":41,"props":79,"children":81},{"id":80},"слой-серверной-агрегации",[82],{"type":38,"value":83},"Слой серверной агрегации",{"type":33,"tag":34,"props":85,"children":86},{},[87],{"type":38,"value":88},"Для компенсации недостатков cookieless tracking необходимо предварительно агрегировать поток событий на серверной стороне. Архитектура работает так: пока Plausible отправляет raw event на свой API, той же payload одновременно отправляется webhook на ваш бэкенд. Бэкенд записывает события в BigQuery, ежедневные job'ы на dbt агрегируют данные.",{"type":33,"tag":34,"props":90,"children":91},{},[92],{"type":38,"value":93},"Пример dbt-модели (ежедневная сводка по событиям):",{"type":33,"tag":95,"props":96,"children":100},"pre",{"className":97,"code":98,"language":99,"meta":16,"style":16},"language-sql shiki shiki-themes github-dark","WITH daily_events AS (\n  SELECT\n    DATE(timestamp) AS event_date,\n    page_path,\n    referrer_source,\n    utm_campaign,\n    COUNT(*) AS page_views,\n    COUNT(DISTINCT session_hash) AS sessions,\n    SUM(CASE WHEN event_name = 'goal_completed' THEN 1 ELSE 0 END) AS conversions\n  FROM {{ ref('plausible_raw_events') }}\n  WHERE DATE(timestamp) = CURRENT_DATE() - 1\n  GROUP BY 1, 2, 3, 4\n)\nSELECT\n  event_date,\n  page_path,\n  referrer_source,\n  utm_campaign,\n  page_views,\n  sessions,\n  conversions,\n  SAFE_DIVIDE(conversions, sessions) AS conversion_rate\nFROM daily_events\n","sql",[101],{"type":33,"tag":58,"props":102,"children":103},{"__ignoreMap":16},[104,132,141,174,183,192,201,233,269,345,369,414,455,464,473,482,491,500,509,518,531,540,567],{"type":33,"tag":105,"props":106,"children":109},"span",{"class":107,"line":108},"line",1,[110,116,122,127],{"type":33,"tag":105,"props":111,"children":113},{"style":112},"--shiki-default:#F97583",[114],{"type":38,"value":115},"WITH",{"type":33,"tag":105,"props":117,"children":119},{"style":118},"--shiki-default:#E1E4E8",[120],{"type":38,"value":121}," daily_events ",{"type":33,"tag":105,"props":123,"children":124},{"style":112},[125],{"type":38,"value":126},"AS",{"type":33,"tag":105,"props":128,"children":129},{"style":118},[130],{"type":38,"value":131}," (\n",{"type":33,"tag":105,"props":133,"children":135},{"class":107,"line":134},2,[136],{"type":33,"tag":105,"props":137,"children":138},{"style":112},[139],{"type":38,"value":140},"  SELECT\n",{"type":33,"tag":105,"props":142,"children":144},{"class":107,"line":143},3,[145,150,155,160,165,169],{"type":33,"tag":105,"props":146,"children":147},{"style":112},[148],{"type":38,"value":149},"    DATE",{"type":33,"tag":105,"props":151,"children":152},{"style":118},[153],{"type":38,"value":154},"(",{"type":33,"tag":105,"props":156,"children":157},{"style":112},[158],{"type":38,"value":159},"timestamp",{"type":33,"tag":105,"props":161,"children":162},{"style":118},[163],{"type":38,"value":164},") ",{"type":33,"tag":105,"props":166,"children":167},{"style":112},[168],{"type":38,"value":126},{"type":33,"tag":105,"props":170,"children":171},{"style":118},[172],{"type":38,"value":173}," event_date,\n",{"type":33,"tag":105,"props":175,"children":177},{"class":107,"line":176},4,[178],{"type":33,"tag":105,"props":179,"children":180},{"style":118},[181],{"type":38,"value":182},"    page_path,\n",{"type":33,"tag":105,"props":184,"children":186},{"class":107,"line":185},5,[187],{"type":33,"tag":105,"props":188,"children":189},{"style":118},[190],{"type":38,"value":191},"    referrer_source,\n",{"type":33,"tag":105,"props":193,"children":195},{"class":107,"line":194},6,[196],{"type":33,"tag":105,"props":197,"children":198},{"style":118},[199],{"type":38,"value":200},"    utm_campaign,\n",{"type":33,"tag":105,"props":202,"children":204},{"class":107,"line":203},7,[205,211,215,220,224,228],{"type":33,"tag":105,"props":206,"children":208},{"style":207},"--shiki-default:#79B8FF",[209],{"type":38,"value":210},"    COUNT",{"type":33,"tag":105,"props":212,"children":213},{"style":118},[214],{"type":38,"value":154},{"type":33,"tag":105,"props":216,"children":217},{"style":112},[218],{"type":38,"value":219},"*",{"type":33,"tag":105,"props":221,"children":222},{"style":118},[223],{"type":38,"value":164},{"type":33,"tag":105,"props":225,"children":226},{"style":112},[227],{"type":38,"value":126},{"type":33,"tag":105,"props":229,"children":230},{"style":118},[231],{"type":38,"value":232}," page_views,\n",{"type":33,"tag":105,"props":234,"children":236},{"class":107,"line":235},8,[237,241,245,250,255,259,264],{"type":33,"tag":105,"props":238,"children":239},{"style":207},[240],{"type":38,"value":210},{"type":33,"tag":105,"props":242,"children":243},{"style":118},[244],{"type":38,"value":154},{"type":33,"tag":105,"props":246,"children":247},{"style":112},[248],{"type":38,"value":249},"DISTINCT",{"type":33,"tag":105,"props":251,"children":252},{"style":118},[253],{"type":38,"value":254}," session_hash) ",{"type":33,"tag":105,"props":256,"children":257},{"style":112},[258],{"type":38,"value":126},{"type":33,"tag":105,"props":260,"children":261},{"style":112},[262],{"type":38,"value":263}," sessions",{"type":33,"tag":105,"props":265,"children":266},{"style":118},[267],{"type":38,"value":268},",\n",{"type":33,"tag":105,"props":270,"children":271},{"class":107,"line":27},[272,277,281,286,291,296,301,307,312,317,322,327,332,336,340],{"type":33,"tag":105,"props":273,"children":274},{"style":207},[275],{"type":38,"value":276},"    SUM",{"type":33,"tag":105,"props":278,"children":279},{"style":118},[280],{"type":38,"value":154},{"type":33,"tag":105,"props":282,"children":283},{"style":112},[284],{"type":38,"value":285},"CASE",{"type":33,"tag":105,"props":287,"children":288},{"style":112},[289],{"type":38,"value":290}," WHEN",{"type":33,"tag":105,"props":292,"children":293},{"style":118},[294],{"type":38,"value":295}," event_name ",{"type":33,"tag":105,"props":297,"children":298},{"style":112},[299],{"type":38,"value":300},"=",{"type":33,"tag":105,"props":302,"children":304},{"style":303},"--shiki-default:#9ECBFF",[305],{"type":38,"value":306}," 'goal_completed'",{"type":33,"tag":105,"props":308,"children":309},{"style":112},[310],{"type":38,"value":311}," THEN",{"type":33,"tag":105,"props":313,"children":314},{"style":207},[315],{"type":38,"value":316}," 1",{"type":33,"tag":105,"props":318,"children":319},{"style":112},[320],{"type":38,"value":321}," ELSE",{"type":33,"tag":105,"props":323,"children":324},{"style":207},[325],{"type":38,"value":326}," 0",{"type":33,"tag":105,"props":328,"children":329},{"style":112},[330],{"type":38,"value":331}," END",{"type":33,"tag":105,"props":333,"children":334},{"style":118},[335],{"type":38,"value":164},{"type":33,"tag":105,"props":337,"children":338},{"style":112},[339],{"type":38,"value":126},{"type":33,"tag":105,"props":341,"children":342},{"style":118},[343],{"type":38,"value":344}," conversions\n",{"type":33,"tag":105,"props":346,"children":348},{"class":107,"line":347},10,[349,354,359,364],{"type":33,"tag":105,"props":350,"children":351},{"style":112},[352],{"type":38,"value":353},"  FROM",{"type":33,"tag":105,"props":355,"children":356},{"style":118},[357],{"type":38,"value":358}," {{ ref(",{"type":33,"tag":105,"props":360,"children":361},{"style":303},[362],{"type":38,"value":363},"'plausible_raw_events'",{"type":33,"tag":105,"props":365,"children":366},{"style":118},[367],{"type":38,"value":368},") }}\n",{"type":33,"tag":105,"props":370,"children":372},{"class":107,"line":371},11,[373,378,383,387,391,395,399,404,409],{"type":33,"tag":105,"props":374,"children":375},{"style":112},[376],{"type":38,"value":377},"  WHERE",{"type":33,"tag":105,"props":379,"children":380},{"style":112},[381],{"type":38,"value":382}," DATE",{"type":33,"tag":105,"props":384,"children":385},{"style":118},[386],{"type":38,"value":154},{"type":33,"tag":105,"props":388,"children":389},{"style":112},[390],{"type":38,"value":159},{"type":33,"tag":105,"props":392,"children":393},{"style":118},[394],{"type":38,"value":164},{"type":33,"tag":105,"props":396,"children":397},{"style":112},[398],{"type":38,"value":300},{"type":33,"tag":105,"props":400,"children":401},{"style":118},[402],{"type":38,"value":403}," CURRENT_DATE() ",{"type":33,"tag":105,"props":405,"children":406},{"style":112},[407],{"type":38,"value":408},"-",{"type":33,"tag":105,"props":410,"children":411},{"style":207},[412],{"type":38,"value":413}," 1\n",{"type":33,"tag":105,"props":415,"children":417},{"class":107,"line":416},12,[418,423,427,432,437,441,446,450],{"type":33,"tag":105,"props":419,"children":420},{"style":112},[421],{"type":38,"value":422},"  GROUP BY",{"type":33,"tag":105,"props":424,"children":425},{"style":207},[426],{"type":38,"value":316},{"type":33,"tag":105,"props":428,"children":429},{"style":118},[430],{"type":38,"value":431},", ",{"type":33,"tag":105,"props":433,"children":434},{"style":207},[435],{"type":38,"value":436},"2",{"type":33,"tag":105,"props":438,"children":439},{"style":118},[440],{"type":38,"value":431},{"type":33,"tag":105,"props":442,"children":443},{"style":207},[444],{"type":38,"value":445},"3",{"type":33,"tag":105,"props":447,"children":448},{"style":118},[449],{"type":38,"value":431},{"type":33,"tag":105,"props":451,"children":452},{"style":207},[453],{"type":38,"value":454},"4\n",{"type":33,"tag":105,"props":456,"children":458},{"class":107,"line":457},13,[459],{"type":33,"tag":105,"props":460,"children":461},{"style":118},[462],{"type":38,"value":463},")\n",{"type":33,"tag":105,"props":465,"children":467},{"class":107,"line":466},14,[468],{"type":33,"tag":105,"props":469,"children":470},{"style":112},[471],{"type":38,"value":472},"SELECT\n",{"type":33,"tag":105,"props":474,"children":476},{"class":107,"line":475},15,[477],{"type":33,"tag":105,"props":478,"children":479},{"style":118},[480],{"type":38,"value":481},"  event_date,\n",{"type":33,"tag":105,"props":483,"children":485},{"class":107,"line":484},16,[486],{"type":33,"tag":105,"props":487,"children":488},{"style":118},[489],{"type":38,"value":490},"  page_path,\n",{"type":33,"tag":105,"props":492,"children":494},{"class":107,"line":493},17,[495],{"type":33,"tag":105,"props":496,"children":497},{"style":118},[498],{"type":38,"value":499},"  referrer_source,\n",{"type":33,"tag":105,"props":501,"children":503},{"class":107,"line":502},18,[504],{"type":33,"tag":105,"props":505,"children":506},{"style":118},[507],{"type":38,"value":508},"  utm_campaign,\n",{"type":33,"tag":105,"props":510,"children":512},{"class":107,"line":511},19,[513],{"type":33,"tag":105,"props":514,"children":515},{"style":118},[516],{"type":38,"value":517},"  page_views,\n",{"type":33,"tag":105,"props":519,"children":521},{"class":107,"line":520},20,[522,527],{"type":33,"tag":105,"props":523,"children":524},{"style":112},[525],{"type":38,"value":526},"  sessions",{"type":33,"tag":105,"props":528,"children":529},{"style":118},[530],{"type":38,"value":268},{"type":33,"tag":105,"props":532,"children":534},{"class":107,"line":533},21,[535],{"type":33,"tag":105,"props":536,"children":537},{"style":118},[538],{"type":38,"value":539},"  conversions,\n",{"type":33,"tag":105,"props":541,"children":543},{"class":107,"line":542},22,[544,549,554,558,562],{"type":33,"tag":105,"props":545,"children":546},{"style":118},[547],{"type":38,"value":548},"  SAFE_DIVIDE(conversions, ",{"type":33,"tag":105,"props":550,"children":551},{"style":112},[552],{"type":38,"value":553},"sessions",{"type":33,"tag":105,"props":555,"children":556},{"style":118},[557],{"type":38,"value":164},{"type":33,"tag":105,"props":559,"children":560},{"style":112},[561],{"type":38,"value":126},{"type":33,"tag":105,"props":563,"children":564},{"style":118},[565],{"type":38,"value":566}," conversion_rate\n",{"type":33,"tag":105,"props":568,"children":570},{"class":107,"line":569},23,[571,576],{"type":33,"tag":105,"props":572,"children":573},{"style":112},[574],{"type":38,"value":575},"FROM",{"type":33,"tag":105,"props":577,"children":578},{"style":118},[579],{"type":38,"value":580}," daily_events\n",{"type":33,"tag":34,"props":582,"children":583},{},[584],{"type":38,"value":585},"Эта модель запускается каждое утро, суммируя вчерашний трафик по источникам, средствам и кампаниям. Session hash — это ротирующий клиентский идентификатор, выводимый из IP + User-Agent + sliding window по времени, с истечением через 1 час. Используя этот хеш в BigQuery JOIN, вы объединяете многостраничные сессии, но не привязываете пользователя к постоянному идентификатору.",{"type":33,"tag":34,"props":587,"children":588},{},[589],{"type":38,"value":590},"Для анализа по типу GA4 funnel report сохраняйте последовательность событий в таблице агрегации:",{"type":33,"tag":95,"props":592,"children":594},{"className":97,"code":593,"language":99,"meta":16,"style":16},"SELECT\n  session_hash,\n  ARRAY_AGG(page_path ORDER BY timestamp) AS page_sequence,\n  MIN(timestamp) AS session_start,\n  MAX(timestamp) AS session_end\nFROM {{ ref('plausible_raw_events') }}\nWHERE DATE(timestamp) = CURRENT_DATE() - 1\nGROUP BY session_hash\n",[595],{"type":33,"tag":58,"props":596,"children":597},{"__ignoreMap":16},[598,605,613,644,673,702,721,761],{"type":33,"tag":105,"props":599,"children":600},{"class":107,"line":108},[601],{"type":33,"tag":105,"props":602,"children":603},{"style":112},[604],{"type":38,"value":472},{"type":33,"tag":105,"props":606,"children":607},{"class":107,"line":134},[608],{"type":33,"tag":105,"props":609,"children":610},{"style":118},[611],{"type":38,"value":612},"  session_hash,\n",{"type":33,"tag":105,"props":614,"children":615},{"class":107,"line":143},[616,621,626,631,635,639],{"type":33,"tag":105,"props":617,"children":618},{"style":118},[619],{"type":38,"value":620},"  ARRAY_AGG(page_path ",{"type":33,"tag":105,"props":622,"children":623},{"style":112},[624],{"type":38,"value":625},"ORDER BY",{"type":33,"tag":105,"props":627,"children":628},{"style":112},[629],{"type":38,"value":630}," timestamp",{"type":33,"tag":105,"props":632,"children":633},{"style":118},[634],{"type":38,"value":164},{"type":33,"tag":105,"props":636,"children":637},{"style":112},[638],{"type":38,"value":126},{"type":33,"tag":105,"props":640,"children":641},{"style":118},[642],{"type":38,"value":643}," page_sequence,\n",{"type":33,"tag":105,"props":645,"children":646},{"class":107,"line":176},[647,652,656,660,664,668],{"type":33,"tag":105,"props":648,"children":649},{"style":207},[650],{"type":38,"value":651},"  MIN",{"type":33,"tag":105,"props":653,"children":654},{"style":118},[655],{"type":38,"value":154},{"type":33,"tag":105,"props":657,"children":658},{"style":112},[659],{"type":38,"value":159},{"type":33,"tag":105,"props":661,"children":662},{"style":118},[663],{"type":38,"value":164},{"type":33,"tag":105,"props":665,"children":666},{"style":112},[667],{"type":38,"value":126},{"type":33,"tag":105,"props":669,"children":670},{"style":118},[671],{"type":38,"value":672}," session_start,\n",{"type":33,"tag":105,"props":674,"children":675},{"class":107,"line":185},[676,681,685,689,693,697],{"type":33,"tag":105,"props":677,"children":678},{"style":207},[679],{"type":38,"value":680},"  MAX",{"type":33,"tag":105,"props":682,"children":683},{"style":118},[684],{"type":38,"value":154},{"type":33,"tag":105,"props":686,"children":687},{"style":112},[688],{"type":38,"value":159},{"type":33,"tag":105,"props":690,"children":691},{"style":118},[692],{"type":38,"value":164},{"type":33,"tag":105,"props":694,"children":695},{"style":112},[696],{"type":38,"value":126},{"type":33,"tag":105,"props":698,"children":699},{"style":118},[700],{"type":38,"value":701}," session_end\n",{"type":33,"tag":105,"props":703,"children":704},{"class":107,"line":194},[705,709,713,717],{"type":33,"tag":105,"props":706,"children":707},{"style":112},[708],{"type":38,"value":575},{"type":33,"tag":105,"props":710,"children":711},{"style":118},[712],{"type":38,"value":358},{"type":33,"tag":105,"props":714,"children":715},{"style":303},[716],{"type":38,"value":363},{"type":33,"tag":105,"props":718,"children":719},{"style":118},[720],{"type":38,"value":368},{"type":33,"tag":105,"props":722,"children":723},{"class":107,"line":203},[724,729,733,737,741,745,749,753,757],{"type":33,"tag":105,"props":725,"children":726},{"style":112},[727],{"type":38,"value":728},"WHERE",{"type":33,"tag":105,"props":730,"children":731},{"style":112},[732],{"type":38,"value":382},{"type":33,"tag":105,"props":734,"children":735},{"style":118},[736],{"type":38,"value":154},{"type":33,"tag":105,"props":738,"children":739},{"style":112},[740],{"type":38,"value":159},{"type":33,"tag":105,"props":742,"children":743},{"style":118},[744],{"type":38,"value":164},{"type":33,"tag":105,"props":746,"children":747},{"style":112},[748],{"type":38,"value":300},{"type":33,"tag":105,"props":750,"children":751},{"style":118},[752],{"type":38,"value":403},{"type":33,"tag":105,"props":754,"children":755},{"style":112},[756],{"type":38,"value":408},{"type":33,"tag":105,"props":758,"children":759},{"style":207},[760],{"type":38,"value":413},{"type":33,"tag":105,"props":762,"children":763},{"class":107,"line":235},[764,769],{"type":33,"tag":105,"props":765,"children":766},{"style":112},[767],{"type":38,"value":768},"GROUP BY",{"type":33,"tag":105,"props":770,"children":771},{"style":118},[772],{"type":38,"value":773}," session_hash\n",{"type":33,"tag":34,"props":775,"children":776},{},[777],{"type":38,"value":778},"После завершения сессии хеш истекает, на следующий день тот же пользователь получает новый хеш. Этот подход соответствует GDPR: нет постоянного идентификатора.",{"type":33,"tag":780,"props":781,"children":783},"h3",{"id":782},"интеграция-server-side-gtm",[784],{"type":38,"value":785},"Интеграция Server-Side GTM",{"type":33,"tag":34,"props":787,"children":788},{},[789,791,800],{"type":38,"value":790},"Чтобы встроить Plausible в архитектуру ",{"type":33,"tag":792,"props":793,"children":797},"a",{"href":794,"rel":795},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Ffirstparty",[796],"nofollow",[798],{"type":38,"value":799},"first-party данных",{"type":38,"value":801},", используйте server-side Google Tag Manager (sGTM) для маршрутизации событий. Клиентский скрипт Plausible отправляет событие прямо на серверы Plausible, но одновременно POST-ит событие в контейнер sGTM. На сторону sGTM пользовательский тег пересылает события в Conversion API, CDP и BigQuery параллельно.",{"type":33,"tag":34,"props":803,"children":804},{},[805],{"type":38,"value":806},"Пример конфига sGTM-тага (Plausible event → BigQuery sink):",{"type":33,"tag":95,"props":808,"children":812},{"className":809,"code":810,"language":811,"meta":16,"style":16},"language-javascript shiki shiki-themes github-dark","const eventData = getAllEventData();\nconst BigQuery = require('BigQuery');\n\nBigQuery.insert({\n  projectId: 'roibase-analytics',\n  datasetId: 'plausible_events',\n  tableId: 'raw_events',\n  rows: [{\n    timestamp: eventData.timestamp,\n    page_path: eventData.page_url,\n    referrer: eventData.referrer,\n    utm_source: eventData.utm_source,\n    session_hash: eventData.session_id,\n    event_name: eventData.event_name\n  }]\n});\n","javascript",[813],{"type":33,"tag":58,"props":814,"children":815},{"__ignoreMap":16},[816,845,880,889,907,924,941,958,966,974,982,990,998,1006,1014,1022],{"type":33,"tag":105,"props":817,"children":818},{"class":107,"line":108},[819,824,829,834,840],{"type":33,"tag":105,"props":820,"children":821},{"style":112},[822],{"type":38,"value":823},"const",{"type":33,"tag":105,"props":825,"children":826},{"style":207},[827],{"type":38,"value":828}," eventData",{"type":33,"tag":105,"props":830,"children":831},{"style":112},[832],{"type":38,"value":833}," =",{"type":33,"tag":105,"props":835,"children":837},{"style":836},"--shiki-default:#B392F0",[838],{"type":38,"value":839}," getAllEventData",{"type":33,"tag":105,"props":841,"children":842},{"style":118},[843],{"type":38,"value":844},"();\n",{"type":33,"tag":105,"props":846,"children":847},{"class":107,"line":134},[848,852,857,861,866,870,875],{"type":33,"tag":105,"props":849,"children":850},{"style":112},[851],{"type":38,"value":823},{"type":33,"tag":105,"props":853,"children":854},{"style":207},[855],{"type":38,"value":856}," BigQuery",{"type":33,"tag":105,"props":858,"children":859},{"style":112},[860],{"type":38,"value":833},{"type":33,"tag":105,"props":862,"children":863},{"style":836},[864],{"type":38,"value":865}," require",{"type":33,"tag":105,"props":867,"children":868},{"style":118},[869],{"type":38,"value":154},{"type":33,"tag":105,"props":871,"children":872},{"style":303},[873],{"type":38,"value":874},"'BigQuery'",{"type":33,"tag":105,"props":876,"children":877},{"style":118},[878],{"type":38,"value":879},");\n",{"type":33,"tag":105,"props":881,"children":882},{"class":107,"line":143},[883],{"type":33,"tag":105,"props":884,"children":886},{"emptyLinePlaceholder":885},true,[887],{"type":38,"value":888},"\n",{"type":33,"tag":105,"props":890,"children":891},{"class":107,"line":176},[892,897,902],{"type":33,"tag":105,"props":893,"children":894},{"style":118},[895],{"type":38,"value":896},"BigQuery.",{"type":33,"tag":105,"props":898,"children":899},{"style":836},[900],{"type":38,"value":901},"insert",{"type":33,"tag":105,"props":903,"children":904},{"style":118},[905],{"type":38,"value":906},"({\n",{"type":33,"tag":105,"props":908,"children":909},{"class":107,"line":185},[910,915,920],{"type":33,"tag":105,"props":911,"children":912},{"style":118},[913],{"type":38,"value":914},"  projectId: ",{"type":33,"tag":105,"props":916,"children":917},{"style":303},[918],{"type":38,"value":919},"'roibase-analytics'",{"type":33,"tag":105,"props":921,"children":922},{"style":118},[923],{"type":38,"value":268},{"type":33,"tag":105,"props":925,"children":926},{"class":107,"line":194},[927,932,937],{"type":33,"tag":105,"props":928,"children":929},{"style":118},[930],{"type":38,"value":931},"  datasetId: ",{"type":33,"tag":105,"props":933,"children":934},{"style":303},[935],{"type":38,"value":936},"'plausible_events'",{"type":33,"tag":105,"props":938,"children":939},{"style":118},[940],{"type":38,"value":268},{"type":33,"tag":105,"props":942,"children":943},{"class":107,"line":203},[944,949,954],{"type":33,"tag":105,"props":945,"children":946},{"style":118},[947],{"type":38,"value":948},"  tableId: ",{"type":33,"tag":105,"props":950,"children":951},{"style":303},[952],{"type":38,"value":953},"'raw_events'",{"type":33,"tag":105,"props":955,"children":956},{"style":118},[957],{"type":38,"value":268},{"type":33,"tag":105,"props":959,"children":960},{"class":107,"line":235},[961],{"type":33,"tag":105,"props":962,"children":963},{"style":118},[964],{"type":38,"value":965},"  rows: [{\n",{"type":33,"tag":105,"props":967,"children":968},{"class":107,"line":27},[969],{"type":33,"tag":105,"props":970,"children":971},{"style":118},[972],{"type":38,"value":973},"    timestamp: eventData.timestamp,\n",{"type":33,"tag":105,"props":975,"children":976},{"class":107,"line":347},[977],{"type":33,"tag":105,"props":978,"children":979},{"style":118},[980],{"type":38,"value":981},"    page_path: eventData.page_url,\n",{"type":33,"tag":105,"props":983,"children":984},{"class":107,"line":371},[985],{"type":33,"tag":105,"props":986,"children":987},{"style":118},[988],{"type":38,"value":989},"    referrer: eventData.referrer,\n",{"type":33,"tag":105,"props":991,"children":992},{"class":107,"line":416},[993],{"type":33,"tag":105,"props":994,"children":995},{"style":118},[996],{"type":38,"value":997},"    utm_source: eventData.utm_source,\n",{"type":33,"tag":105,"props":999,"children":1000},{"class":107,"line":457},[1001],{"type":33,"tag":105,"props":1002,"children":1003},{"style":118},[1004],{"type":38,"value":1005},"    session_hash: eventData.session_id,\n",{"type":33,"tag":105,"props":1007,"children":1008},{"class":107,"line":466},[1009],{"type":33,"tag":105,"props":1010,"children":1011},{"style":118},[1012],{"type":38,"value":1013},"    event_name: eventData.event_name\n",{"type":33,"tag":105,"props":1015,"children":1016},{"class":107,"line":475},[1017],{"type":33,"tag":105,"props":1018,"children":1019},{"style":118},[1020],{"type":38,"value":1021},"  }]\n",{"type":33,"tag":105,"props":1023,"children":1024},{"class":107,"line":484},[1025],{"type":33,"tag":105,"props":1026,"children":1027},{"style":118},[1028],{"type":38,"value":1029},"});\n",{"type":33,"tag":34,"props":1031,"children":1032},{},[1033],{"type":38,"value":1034},"Эта конфигурация даёт три преимущества: (1) dashboard Plausible работает в режиме real-time, (2) исторические данные накапливаются в BigQuery, (3) CDP (Segment, RudderStack) получает поток событий без привязки к постоянному ID — используются только агрегированные метрики.",{"type":33,"tag":41,"props":1036,"children":1038},{"id":1037},"ga4-vs-plausible-sgtm-компромиссы-attribution-и-compliance",[1039],{"type":38,"value":1040},"GA4 vs Plausible + sGTM: Компромиссы attribution и compliance",{"type":33,"tag":34,"props":1042,"children":1043},{},[1044],{"type":38,"value":1045},"Сравнение GA4 с архитектурой Plausible + sGTM по возможностям attribution, нагрузке compliance и операционным затратам показывает следующие различия:",{"type":33,"tag":1047,"props":1048,"children":1049},"table",{},[1050,1074],{"type":33,"tag":1051,"props":1052,"children":1053},"thead",{},[1054],{"type":33,"tag":1055,"props":1056,"children":1057},"tr",{},[1058,1064,1069],{"type":33,"tag":1059,"props":1060,"children":1061},"th",{},[1062],{"type":38,"value":1063},"Метрика",{"type":33,"tag":1059,"props":1065,"children":1066},{},[1067],{"type":38,"value":1068},"GA4",{"type":33,"tag":1059,"props":1070,"children":1071},{},[1072],{"type":38,"value":1073},"Plausible + sGTM",{"type":33,"tag":1075,"props":1076,"children":1077},"tbody",{},[1078,1101,1122,1143,1164,1185,1206],{"type":33,"tag":1055,"props":1079,"children":1080},{},[1081,1091,1096],{"type":33,"tag":1082,"props":1083,"children":1084},"td",{},[1085],{"type":33,"tag":1086,"props":1087,"children":1088},"strong",{},[1089],{"type":38,"value":1090},"Период отслеживания пользователя",{"type":33,"tag":1082,"props":1092,"children":1093},{},[1094],{"type":38,"value":1095},"2 года (cookie)",{"type":33,"tag":1082,"props":1097,"children":1098},{},[1099],{"type":38,"value":1100},"24 часа (хеш)",{"type":33,"tag":1055,"props":1102,"children":1103},{},[1104,1112,1117],{"type":33,"tag":1082,"props":1105,"children":1106},{},[1107],{"type":33,"tag":1086,"props":1108,"children":1109},{},[1110],{"type":38,"value":1111},"Cross-device attribution",{"type":33,"tag":1082,"props":1113,"children":1114},{},[1115],{"type":38,"value":1116},"Да (Google Signals)",{"type":33,"tag":1082,"props":1118,"children":1119},{},[1120],{"type":38,"value":1121},"Нет",{"type":33,"tag":1055,"props":1123,"children":1124},{},[1125,1133,1138],{"type":33,"tag":1082,"props":1126,"children":1127},{},[1128],{"type":33,"tag":1086,"props":1129,"children":1130},{},[1131],{"type":38,"value":1132},"Требование consent-баннера",{"type":33,"tag":1082,"props":1134,"children":1135},{},[1136],{"type":38,"value":1137},"Да (GDPR)",{"type":33,"tag":1082,"props":1139,"children":1140},{},[1141],{"type":38,"value":1142},"Нет (анонимные данные)",{"type":33,"tag":1055,"props":1144,"children":1145},{},[1146,1154,1159],{"type":33,"tag":1082,"props":1147,"children":1148},{},[1149],{"type":33,"tag":1086,"props":1150,"children":1151},{},[1152],{"type":38,"value":1153},"Контроль residency данных",{"type":33,"tag":1082,"props":1155,"children":1156},{},[1157],{"type":38,"value":1158},"США (GCP)",{"type":33,"tag":1082,"props":1160,"children":1161},{},[1162],{"type":38,"value":1163},"Собственный сервер",{"type":33,"tag":1055,"props":1165,"children":1166},{},[1167,1175,1180],{"type":33,"tag":1082,"props":1168,"children":1169},{},[1170],{"type":33,"tag":1086,"props":1171,"children":1172},{},[1173],{"type":38,"value":1174},"Session stitching",{"type":33,"tag":1082,"props":1176,"children":1177},{},[1178],{"type":38,"value":1179},"Автоматическое (client ID)",{"type":33,"tag":1082,"props":1181,"children":1182},{},[1183],{"type":38,"value":1184},"Ручное (event sequence)",{"type":33,"tag":1055,"props":1186,"children":1187},{},[1188,1196,1201],{"type":33,"tag":1082,"props":1189,"children":1190},{},[1191],{"type":33,"tag":1086,"props":1192,"children":1193},{},[1194],{"type":38,"value":1195},"Глубина funnel-анализа",{"type":33,"tag":1082,"props":1197,"children":1198},{},[1199],{"type":38,"value":1200},"На уровне пользователя",{"type":33,"tag":1082,"props":1202,"children":1203},{},[1204],{"type":38,"value":1205},"На уровне сессии",{"type":33,"tag":1055,"props":1207,"children":1208},{},[1209,1217,1222],{"type":33,"tag":1082,"props":1210,"children":1211},{},[1212],{"type":33,"tag":1086,"props":1213,"children":1214},{},[1215],{"type":38,"value":1216},"Время операционного setup",{"type":33,"tag":1082,"props":1218,"children":1219},{},[1220],{"type":38,"value":1221},"2 часа",{"type":33,"tag":1082,"props":1223,"children":1224},{},[1225],{"type":38,"value":1226},"8 часов (backend + dbt)",{"type":33,"tag":34,"props":1228,"children":1229},{},[1230],{"type":38,"value":1231},"Преимущество GA4 — автоматическое user-level attribution: cross-device journey mapping, сегментирование аудитории, автоматическое создание списков для remarketing. Однако эта мощь сопровождается compliance-издержками. По GDPR вы должны объяснить цели обработки, раскрыть права субъекта данных. Consent-баннер приводит к потере %65 трафика (CookieBot 2025 benchmark). Plausible исключает эти издержки, но user-level LTV расчёт невозможен — вместо этого используется анализ на уровне сегмента.",{"type":33,"tag":34,"props":1233,"children":1234},{},[1235],{"type":38,"value":1236},"Различие моделей attribution также критично: GA4 использует data-driven attribution (ML взвешивает touchpoints), Plausible предлагает только last-click и first-click. Для multi-touch attribution в BigQuery обработайте event sequence вашей моделью. Пример MMM (Marketing Mix Modeling): загрузите дневные агрегаты (spend, impressions, sessions, conversions) в regression-модель, рассчитайте incremental вклад каждого канала. Этот метод работает без user-level данных.",{"type":33,"tag":41,"props":1238,"children":1240},{"id":1239},"операционное-развёртывание-plausible-self-hosted-dbt-pipeline",[1241],{"type":38,"value":1242},"Операционное развёртывание: Plausible Self-Hosted + dbt Pipeline",{"type":33,"tag":34,"props":1244,"children":1245},{},[1246],{"type":38,"value":1247},"Для production deployment privacy-first analytics необходимо развернуть самостоятельно размещённый экземпляр Plausible. Облачный Plausible (plausible.io) хранит данные на своих серверах — для контроля data residency требуется self-hosted вариант. Развёртывание через Docker Compose занимает 30 минут:",{"type":33,"tag":95,"props":1249,"children":1253},{"className":1250,"code":1251,"language":1252,"meta":16,"style":16},"language-yaml shiki shiki-themes github-dark","version: \"3.3\"\nservices:\n  plausible:\n    image: plausible\u002Fanalytics:latest\n    command: sh -c \"sleep 10 && \u002Fentrypoint.sh db createdb && \u002Fentrypoint.sh db migrate && \u002Fentrypoint.sh run\"\n    depends_on:\n      - plausible_db\n      - plausible_events_db\n    ports:\n      - \"8000:8000\"\n    env_file:\n      - plausible-conf.env\n","yaml",[1254],{"type":33,"tag":58,"props":1255,"children":1256},{"__ignoreMap":16},[1257,1276,1289,1301,1318,1335,1347,1360,1372,1384,1396,1408],{"type":33,"tag":105,"props":1258,"children":1259},{"class":107,"line":108},[1260,1266,1271],{"type":33,"tag":105,"props":1261,"children":1263},{"style":1262},"--shiki-default:#85E89D",[1264],{"type":38,"value":1265},"version",{"type":33,"tag":105,"props":1267,"children":1268},{"style":118},[1269],{"type":38,"value":1270},": ",{"type":33,"tag":105,"props":1272,"children":1273},{"style":303},[1274],{"type":38,"value":1275},"\"3.3\"\n",{"type":33,"tag":105,"props":1277,"children":1278},{"class":107,"line":134},[1279,1284],{"type":33,"tag":105,"props":1280,"children":1281},{"style":1262},[1282],{"type":38,"value":1283},"services",{"type":33,"tag":105,"props":1285,"children":1286},{"style":118},[1287],{"type":38,"value":1288},":\n",{"type":33,"tag":105,"props":1290,"children":1291},{"class":107,"line":143},[1292,1297],{"type":33,"tag":105,"props":1293,"children":1294},{"style":1262},[1295],{"type":38,"value":1296},"  plausible",{"type":33,"tag":105,"props":1298,"children":1299},{"style":118},[1300],{"type":38,"value":1288},{"type":33,"tag":105,"props":1302,"children":1303},{"class":107,"line":176},[1304,1309,1313],{"type":33,"tag":105,"props":1305,"children":1306},{"style":1262},[1307],{"type":38,"value":1308},"    image",{"type":33,"tag":105,"props":1310,"children":1311},{"style":118},[1312],{"type":38,"value":1270},{"type":33,"tag":105,"props":1314,"children":1315},{"style":303},[1316],{"type":38,"value":1317},"plausible\u002Fanalytics:latest\n",{"type":33,"tag":105,"props":1319,"children":1320},{"class":107,"line":185},[1321,1326,1330],{"type":33,"tag":105,"props":1322,"children":1323},{"style":1262},[1324],{"type":38,"value":1325},"    command",{"type":33,"tag":105,"props":1327,"children":1328},{"style":118},[1329],{"type":38,"value":1270},{"type":33,"tag":105,"props":1331,"children":1332},{"style":303},[1333],{"type":38,"value":1334},"sh -c \"sleep 10 && \u002Fentrypoint.sh db createdb && \u002Fentrypoint.sh db migrate && \u002Fentrypoint.sh run\"\n",{"type":33,"tag":105,"props":1336,"children":1337},{"class":107,"line":194},[1338,1343],{"type":33,"tag":105,"props":1339,"children":1340},{"style":1262},[1341],{"type":38,"value":1342},"    depends_on",{"type":33,"tag":105,"props":1344,"children":1345},{"style":118},[1346],{"type":38,"value":1288},{"type":33,"tag":105,"props":1348,"children":1349},{"class":107,"line":203},[1350,1355],{"type":33,"tag":105,"props":1351,"children":1352},{"style":118},[1353],{"type":38,"value":1354},"      - ",{"type":33,"tag":105,"props":1356,"children":1357},{"style":303},[1358],{"type":38,"value":1359},"plausible_db\n",{"type":33,"tag":105,"props":1361,"children":1362},{"class":107,"line":235},[1363,1367],{"type":33,"tag":105,"props":1364,"children":1365},{"style":118},[1366],{"type":38,"value":1354},{"type":33,"tag":105,"props":1368,"children":1369},{"style":303},[1370],{"type":38,"value":1371},"plausible_events_db\n",{"type":33,"tag":105,"props":1373,"children":1374},{"class":107,"line":27},[1375,1380],{"type":33,"tag":105,"props":1376,"children":1377},{"style":1262},[1378],{"type":38,"value":1379},"    ports",{"type":33,"tag":105,"props":1381,"children":1382},{"style":118},[1383],{"type":38,"value":1288},{"type":33,"tag":105,"props":1385,"children":1386},{"class":107,"line":347},[1387,1391],{"type":33,"tag":105,"props":1388,"children":1389},{"style":118},[1390],{"type":38,"value":1354},{"type":33,"tag":105,"props":1392,"children":1393},{"style":303},[1394],{"type":38,"value":1395},"\"8000:8000\"\n",{"type":33,"tag":105,"props":1397,"children":1398},{"class":107,"line":371},[1399,1404],{"type":33,"tag":105,"props":1400,"children":1401},{"style":1262},[1402],{"type":38,"value":1403},"    env_file",{"type":33,"tag":105,"props":1405,"children":1406},{"style":118},[1407],{"type":38,"value":1288},{"type":33,"tag":105,"props":1409,"children":1410},{"class":107,"line":416},[1411,1415],{"type":33,"tag":105,"props":1412,"children":1413},{"style":118},[1414],{"type":38,"value":1354},{"type":33,"tag":105,"props":1416,"children":1417},{"style":303},[1418],{"type":38,"value":1419},"plausible-conf.env\n",{"type":33,"tag":34,"props":1421,"children":1422},{},[1423,1425,1431,1433,1439,1441,1447],{"type":38,"value":1424},"В ",{"type":33,"tag":58,"props":1426,"children":1428},{"className":1427},[],[1429],{"type":38,"value":1430},"plausible-conf.env",{"type":38,"value":1432}," установите ",{"type":33,"tag":58,"props":1434,"children":1436},{"className":1435},[],[1437],{"type":38,"value":1438},"DISABLE_AUTH=false",{"type":38,"value":1440}," и ",{"type":33,"tag":58,"props":1442,"children":1444},{"className":1443},[],[1445],{"type":38,"value":1446},"SECRET_KEY_BASE",{"type":38,"value":1448},". После запуска инстанса настройте webhook для BigQuery sink. Plausible не имеет встроенного webhook — напишите custom middleware. Пример Node.js Express endpoint:",{"type":33,"tag":95,"props":1450,"children":1452},{"className":809,"code":1451,"language":811,"meta":16,"style":16},"app.post('\u002Fplausible-webhook', async (req, res) => {\n  const event = req.body;\n  await bigquery.dataset('plausible_events').table('raw_events').insert([{\n    timestamp: new Date(event.timestamp).toISOString(),\n    page_path: event.url,\n    referrer: event.referrer,\n    utm_source: event.utm_source,\n    session_hash: generateSessionHash(req.ip, req.headers['user-agent'])\n  }]);\n  res.sendStatus(200);\n});\n",[1453],{"type":33,"tag":58,"props":1454,"children":1455},{"__ignoreMap":16},[1456,1521,1543,1599,1632,1640,1648,1656,1684,1692,1718],{"type":33,"tag":105,"props":1457,"children":1458},{"class":107,"line":108},[1459,1464,1469,1473,1478,1482,1487,1492,1498,1502,1507,1511,1516],{"type":33,"tag":105,"props":1460,"children":1461},{"style":118},[1462],{"type":38,"value":1463},"app.",{"type":33,"tag":105,"props":1465,"children":1466},{"style":836},[1467],{"type":38,"value":1468},"post",{"type":33,"tag":105,"props":1470,"children":1471},{"style":118},[1472],{"type":38,"value":154},{"type":33,"tag":105,"props":1474,"children":1475},{"style":303},[1476],{"type":38,"value":1477},"'\u002Fplausible-webhook'",{"type":33,"tag":105,"props":1479,"children":1480},{"style":118},[1481],{"type":38,"value":431},{"type":33,"tag":105,"props":1483,"children":1484},{"style":112},[1485],{"type":38,"value":1486},"async",{"type":33,"tag":105,"props":1488,"children":1489},{"style":118},[1490],{"type":38,"value":1491}," (",{"type":33,"tag":105,"props":1493,"children":1495},{"style":1494},"--shiki-default:#FFAB70",[1496],{"type":38,"value":1497},"req",{"type":33,"tag":105,"props":1499,"children":1500},{"style":118},[1501],{"type":38,"value":431},{"type":33,"tag":105,"props":1503,"children":1504},{"style":1494},[1505],{"type":38,"value":1506},"res",{"type":33,"tag":105,"props":1508,"children":1509},{"style":118},[1510],{"type":38,"value":164},{"type":33,"tag":105,"props":1512,"children":1513},{"style":112},[1514],{"type":38,"value":1515},"=>",{"type":33,"tag":105,"props":1517,"children":1518},{"style":118},[1519],{"type":38,"value":1520}," {\n",{"type":33,"tag":105,"props":1522,"children":1523},{"class":107,"line":134},[1524,1529,1534,1538],{"type":33,"tag":105,"props":1525,"children":1526},{"style":112},[1527],{"type":38,"value":1528},"  const",{"type":33,"tag":105,"props":1530,"children":1531},{"style":207},[1532],{"type":38,"value":1533}," event",{"type":33,"tag":105,"props":1535,"children":1536},{"style":112},[1537],{"type":38,"value":833},{"type":33,"tag":105,"props":1539,"children":1540},{"style":118},[1541],{"type":38,"value":1542}," req.body;\n",{"type":33,"tag":105,"props":1544,"children":1545},{"class":107,"line":143},[1546,1551,1556,1561,1565,1569,1574,1578,1582,1586,1590,1594],{"type":33,"tag":105,"props":1547,"children":1548},{"style":112},[1549],{"type":38,"value":1550},"  await",{"type":33,"tag":105,"props":1552,"children":1553},{"style":118},[1554],{"type":38,"value":1555}," bigquery.",{"type":33,"tag":105,"props":1557,"children":1558},{"style":836},[1559],{"type":38,"value":1560},"dataset",{"type":33,"tag":105,"props":1562,"children":1563},{"style":118},[1564],{"type":38,"value":154},{"type":33,"tag":105,"props":1566,"children":1567},{"style":303},[1568],{"type":38,"value":936},{"type":33,"tag":105,"props":1570,"children":1571},{"style":118},[1572],{"type":38,"value":1573},").",{"type":33,"tag":105,"props":1575,"children":1576},{"style":836},[1577],{"type":38,"value":1047},{"type":33,"tag":105,"props":1579,"children":1580},{"style":118},[1581],{"type":38,"value":154},{"type":33,"tag":105,"props":1583,"children":1584},{"style":303},[1585],{"type":38,"value":953},{"type":33,"tag":105,"props":1587,"children":1588},{"style":118},[1589],{"type":38,"value":1573},{"type":33,"tag":105,"props":1591,"children":1592},{"style":836},[1593],{"type":38,"value":901},{"type":33,"tag":105,"props":1595,"children":1596},{"style":118},[1597],{"type":38,"value":1598},"([{\n",{"type":33,"tag":105,"props":1600,"children":1601},{"class":107,"line":176},[1602,1607,1612,1617,1622,1627],{"type":33,"tag":105,"props":1603,"children":1604},{"style":118},[1605],{"type":38,"value":1606},"    timestamp: ",{"type":33,"tag":105,"props":1608,"children":1609},{"style":112},[1610],{"type":38,"value":1611},"new",{"type":33,"tag":105,"props":1613,"children":1614},{"style":836},[1615],{"type":38,"value":1616}," Date",{"type":33,"tag":105,"props":1618,"children":1619},{"style":118},[1620],{"type":38,"value":1621},"(event.timestamp).",{"type":33,"tag":105,"props":1623,"children":1624},{"style":836},[1625],{"type":38,"value":1626},"toISOString",{"type":33,"tag":105,"props":1628,"children":1629},{"style":118},[1630],{"type":38,"value":1631},"(),\n",{"type":33,"tag":105,"props":1633,"children":1634},{"class":107,"line":185},[1635],{"type":33,"tag":105,"props":1636,"children":1637},{"style":118},[1638],{"type":38,"value":1639},"    page_path: event.url,\n",{"type":33,"tag":105,"props":1641,"children":1642},{"class":107,"line":194},[1643],{"type":33,"tag":105,"props":1644,"children":1645},{"style":118},[1646],{"type":38,"value":1647},"    referrer: event.referrer,\n",{"type":33,"tag":105,"props":1649,"children":1650},{"class":107,"line":203},[1651],{"type":33,"tag":105,"props":1652,"children":1653},{"style":118},[1654],{"type":38,"value":1655},"    utm_source: event.utm_source,\n",{"type":33,"tag":105,"props":1657,"children":1658},{"class":107,"line":235},[1659,1664,1669,1674,1679],{"type":33,"tag":105,"props":1660,"children":1661},{"style":118},[1662],{"type":38,"value":1663},"    session_hash: ",{"type":33,"tag":105,"props":1665,"children":1666},{"style":836},[1667],{"type":38,"value":1668},"generateSessionHash",{"type":33,"tag":105,"props":1670,"children":1671},{"style":118},[1672],{"type":38,"value":1673},"(req.ip, req.headers[",{"type":33,"tag":105,"props":1675,"children":1676},{"style":303},[1677],{"type":38,"value":1678},"'user-agent'",{"type":33,"tag":105,"props":1680,"children":1681},{"style":118},[1682],{"type":38,"value":1683},"])\n",{"type":33,"tag":105,"props":1685,"children":1686},{"class":107,"line":27},[1687],{"type":33,"tag":105,"props":1688,"children":1689},{"style":118},[1690],{"type":38,"value":1691},"  }]);\n",{"type":33,"tag":105,"props":1693,"children":1694},{"class":107,"line":347},[1695,1700,1705,1709,1714],{"type":33,"tag":105,"props":1696,"children":1697},{"style":118},[1698],{"type":38,"value":1699},"  res.",{"type":33,"tag":105,"props":1701,"children":1702},{"style":836},[1703],{"type":38,"value":1704},"sendStatus",{"type":33,"tag":105,"props":1706,"children":1707},{"style":118},[1708],{"type":38,"value":154},{"type":33,"tag":105,"props":1710,"children":1711},{"style":207},[1712],{"type":38,"value":1713},"200",{"type":33,"tag":105,"props":1715,"children":1716},{"style":118},[1717],{"type":38,"value":879},{"type":33,"tag":105,"props":1719,"children":1720},{"class":107,"line":371},[1721],{"type":33,"tag":105,"props":1722,"children":1723},{"style":118},[1724],{"type":38,"value":1029},{"type":33,"tag":34,"props":1726,"children":1727},{},[1728],{"type":38,"value":1729},"Функция хеширования сессии генерирует SHA-256 из IP + User-Agent + дневной соли:",{"type":33,"tag":95,"props":1731,"children":1733},{"className":809,"code":1732,"language":811,"meta":16,"style":16},"function generateSessionHash(ip, userAgent) {\n  const salt = new Date().toISOString().split('T')[0]; \u002F\u002F YYYY-MM-DD\n  return crypto.createHash('sha256').update(ip + userAgent + salt).digest('hex');\n}\n",[1734],{"type":33,"tag":58,"props":1735,"children":1736},{"__ignoreMap":16},[1737,1773,1846,1924],{"type":33,"tag":105,"props":1738,"children":1739},{"class":107,"line":108},[1740,1745,1750,1754,1759,1763,1768],{"type":33,"tag":105,"props":1741,"children":1742},{"style":112},[1743],{"type":38,"value":1744},"function",{"type":33,"tag":105,"props":1746,"children":1747},{"style":836},[1748],{"type":38,"value":1749}," generateSessionHash",{"type":33,"tag":105,"props":1751,"children":1752},{"style":118},[1753],{"type":38,"value":154},{"type":33,"tag":105,"props":1755,"children":1756},{"style":1494},[1757],{"type":38,"value":1758},"ip",{"type":33,"tag":105,"props":1760,"children":1761},{"style":118},[1762],{"type":38,"value":431},{"type":33,"tag":105,"props":1764,"children":1765},{"style":1494},[1766],{"type":38,"value":1767},"userAgent",{"type":33,"tag":105,"props":1769,"children":1770},{"style":118},[1771],{"type":38,"value":1772},") {\n",{"type":33,"tag":105,"props":1774,"children":1775},{"class":107,"line":134},[1776,1780,1785,1789,1794,1798,1803,1807,1811,1816,1820,1825,1830,1835,1840],{"type":33,"tag":105,"props":1777,"children":1778},{"style":112},[1779],{"type":38,"value":1528},{"type":33,"tag":105,"props":1781,"children":1782},{"style":207},[1783],{"type":38,"value":1784}," salt",{"type":33,"tag":105,"props":1786,"children":1787},{"style":112},[1788],{"type":38,"value":833},{"type":33,"tag":105,"props":1790,"children":1791},{"style":112},[1792],{"type":38,"value":1793}," new",{"type":33,"tag":105,"props":1795,"children":1796},{"style":836},[1797],{"type":38,"value":1616},{"type":33,"tag":105,"props":1799,"children":1800},{"style":118},[1801],{"type":38,"value":1802},"().",{"type":33,"tag":105,"props":1804,"children":1805},{"style":836},[1806],{"type":38,"value":1626},{"type":33,"tag":105,"props":1808,"children":1809},{"style":118},[1810],{"type":38,"value":1802},{"type":33,"tag":105,"props":1812,"children":1813},{"style":836},[1814],{"type":38,"value":1815},"split",{"type":33,"tag":105,"props":1817,"children":1818},{"style":118},[1819],{"type":38,"value":154},{"type":33,"tag":105,"props":1821,"children":1822},{"style":303},[1823],{"type":38,"value":1824},"'T'",{"type":33,"tag":105,"props":1826,"children":1827},{"style":118},[1828],{"type":38,"value":1829},")[",{"type":33,"tag":105,"props":1831,"children":1832},{"style":207},[1833],{"type":38,"value":1834},"0",{"type":33,"tag":105,"props":1836,"children":1837},{"style":118},[1838],{"type":38,"value":1839},"]; ",{"type":33,"tag":105,"props":1841,"children":1843},{"style":1842},"--shiki-default:#6A737D",[1844],{"type":38,"value":1845},"\u002F\u002F YYYY-MM-DD\n",{"type":33,"tag":105,"props":1847,"children":1848},{"class":107,"line":143},[1849,1854,1859,1864,1868,1873,1877,1882,1887,1892,1897,1901,1906,1911,1915,1920],{"type":33,"tag":105,"props":1850,"children":1851},{"style":112},[1852],{"type":38,"value":1853},"  return",{"type":33,"tag":105,"props":1855,"children":1856},{"style":118},[1857],{"type":38,"value":1858}," crypto.",{"type":33,"tag":105,"props":1860,"children":1861},{"style":836},[1862],{"type":38,"value":1863},"createHash",{"type":33,"tag":105,"props":1865,"children":1866},{"style":118},[1867],{"type":38,"value":154},{"type":33,"tag":105,"props":1869,"children":1870},{"style":303},[1871],{"type":38,"value":1872},"'sha256'",{"type":33,"tag":105,"props":1874,"children":1875},{"style":118},[1876],{"type":38,"value":1573},{"type":33,"tag":105,"props":1878,"children":1879},{"style":836},[1880],{"type":38,"value":1881},"update",{"type":33,"tag":105,"props":1883,"children":1884},{"style":118},[1885],{"type":38,"value":1886},"(ip ",{"type":33,"tag":105,"props":1888,"children":1889},{"style":112},[1890],{"type":38,"value":1891},"+",{"type":33,"tag":105,"props":1893,"children":1894},{"style":118},[1895],{"type":38,"value":1896}," userAgent ",{"type":33,"tag":105,"props":1898,"children":1899},{"style":112},[1900],{"type":38,"value":1891},{"type":33,"tag":105,"props":1902,"children":1903},{"style":118},[1904],{"type":38,"value":1905}," salt).",{"type":33,"tag":105,"props":1907,"children":1908},{"style":836},[1909],{"type":38,"value":1910},"digest",{"type":33,"tag":105,"props":1912,"children":1913},{"style":118},[1914],{"type":38,"value":154},{"type":33,"tag":105,"props":1916,"children":1917},{"style":303},[1918],{"type":38,"value":1919},"'hex'",{"type":33,"tag":105,"props":1921,"children":1922},{"style":118},[1923],{"type":38,"value":879},{"type":33,"tag":105,"props":1925,"children":1926},{"class":107,"line":176},[1927],{"type":33,"tag":105,"props":1928,"children":1929},{"style":118},[1930],{"type":38,"value":1931},"}\n",{"type":33,"tag":34,"props":1933,"children":1934},{},[1935],{"type":38,"value":1936},"Этот хеш обнуляется каждый день — в 24-часовом окне подсчёт уникальных посетителей точен, но persistent tracking невозможен.",{"type":33,"tag":34,"props":1938,"children":1939},{},[1940,1942,1948],{"type":38,"value":1941},"Планируйте dbt pipeline через Github Actions. Каждое утро в 06:00 запустите ",{"type":33,"tag":58,"props":1943,"children":1945},{"className":1944},[],[1946],{"type":38,"value":1947},"dbt run --select +plausible_daily_summary",{"type":38,"value":1949},", агрегаты вчерашнего дня пересчитаются. Dashboard'ы в Looker или Metabase питайте этими таблицами агрегации. Для real-time метрик используйте собственный dashboard Plausible, для исторических трендов — BigQuery + dbt outputs.",{"type":33,"tag":41,"props":1951,"children":1953},{"id":1952},"интеграция-с-cdp-и-retention-engineering",[1954],{"type":38,"value":1955},"Интеграция с CDP и Retention Engineering",{"type":33,"tag":34,"props":1957,"children":1958},{},[1959],{"type":38,"value":1960},"Связь privacy-first analytics с Customer Data Platform выглядит парадоксально — CDP хранит user profiles, Plausible генерирует анонимные данные. Решение — event-based интеграция: отправляйте в CDP агрегированные метрики без user identifiers, затем связывайте с email или phone hash. Пример: пользователь кликает по email-кампании и приходит на сайт, Plausible записывает события с session hash. Когда пользователь заполняет форму и указывает email, бэкенд хеширует email с SHA-256 и привязывает события этой сессии к email hash.",{"type":33,"tag":34,"props":1962,"children":1963},{},[1964],{"type":38,"value":1965},"JOIN в BigQuery работает так:",{"type":33,"tag":95,"props":1967,"children":1969},{"className":97,"code":1968,"language":99,"meta":16,"style":16},"WITH session_events AS (\n  SELECT session_hash, page_path, timestamp\n  FROM plausible_raw_events\n  WHERE DATE(timestamp) = CURRENT_DATE() - 1\n),\nidentified_sessions AS (\n  SELECT email_hash, session_hash, form_submit_timestamp\n  FROM user_identifications\n  WHERE DATE(form_submit_timestamp) = CURRENT_DATE() - 1\n)\nSELECT\n  i.email_hash,\n  ARRAY_AGG(STRUCT(e.page_path, e.timestamp) ORDER BY e.timestamp) AS session_journey\nFROM identified_sessions i\nJOIN session_events e ON i.session_hash = e.session_hash\nWHERE e.timestamp \u003C= i.form_submit_timestamp\nGROUP BY i.email_hash\n",[1970],{"type":33,"tag":58,"props":1971,"children":1972},{"__ignoreMap":16},[1973,1993,2011,2023,2062,2070,2086,2098,2110,2142,2149,2156,2178,2250,2262,2311,2348],{"type":33,"tag":105,"props":1974,"children":1975},{"class":107,"line":108},[1976,1980,1985,1989],{"type":33,"tag":105,"props":1977,"children":1978},{"style":112},[1979],{"type":38,"value":115},{"type":33,"tag":105,"props":1981,"children":1982},{"style":118},[1983],{"type":38,"value":1984}," session_events ",{"type":33,"tag":105,"props":1986,"children":1987},{"style":112},[1988],{"type":38,"value":126},{"type":33,"tag":105,"props":1990,"children":1991},{"style":118},[1992],{"type":38,"value":131},{"type":33,"tag":105,"props":1994,"children":1995},{"class":107,"line":134},[1996,2001,2006],{"type":33,"tag":105,"props":1997,"children":1998},{"style":112},[1999],{"type":38,"value":2000},"  SELECT",{"type":33,"tag":105,"props":2002,"children":2003},{"style":118},[2004],{"type":38,"value":2005}," session_hash, page_path, ",{"type":33,"tag":105,"props":2007,"children":2008},{"style":112},[2009],{"type":38,"value":2010},"timestamp\n",{"type":33,"tag":105,"props":2012,"children":2013},{"class":107,"line":143},[2014,2018],{"type":33,"tag":105,"props":2015,"children":2016},{"style":112},[2017],{"type":38,"value":353},{"type":33,"tag":105,"props":2019,"children":2020},{"style":118},[2021],{"type":38,"value":2022}," plausible_raw_events\n",{"type":33,"tag":105,"props":2024,"children":2025},{"class":107,"line":176},[2026,2030,2034,2038,2042,2046,2050,2054,2058],{"type":33,"tag":105,"props":2027,"children":2028},{"style":112},[2029],{"type":38,"value":377},{"type":33,"tag":105,"props":2031,"children":2032},{"style":112},[2033],{"type":38,"value":382},{"type":33,"tag":105,"props":2035,"children":2036},{"style":118},[2037],{"type":38,"value":154},{"type":33,"tag":105,"props":2039,"children":2040},{"style":112},[2041],{"type":38,"value":159},{"type":33,"tag":105,"props":2043,"children":2044},{"style":118},[2045],{"type":38,"value":164},{"type":33,"tag":105,"props":2047,"children":2048},{"style":112},[2049],{"type":38,"value":300},{"type":33,"tag":105,"props":2051,"children":2052},{"style":118},[2053],{"type":38,"value":403},{"type":33,"tag":105,"props":2055,"children":2056},{"style":112},[2057],{"type":38,"value":408},{"type":33,"tag":105,"props":2059,"children":2060},{"style":207},[2061],{"type":38,"value":413},{"type":33,"tag":105,"props":2063,"children":2064},{"class":107,"line":185},[2065],{"type":33,"tag":105,"props":2066,"children":2067},{"style":118},[2068],{"type":38,"value":2069},"),\n",{"type":33,"tag":105,"props":2071,"children":2072},{"class":107,"line":194},[2073,2078,2082],{"type":33,"tag":105,"props":2074,"children":2075},{"style":118},[2076],{"type":38,"value":2077},"identified_sessions ",{"type":33,"tag":105,"props":2079,"children":2080},{"style":112},[2081],{"type":38,"value":126},{"type":33,"tag":105,"props":2083,"children":2084},{"style":118},[2085],{"type":38,"value":131},{"type":33,"tag":105,"props":2087,"children":2088},{"class":107,"line":203},[2089,2093],{"type":33,"tag":105,"props":2090,"children":2091},{"style":112},[2092],{"type":38,"value":2000},{"type":33,"tag":105,"props":2094,"children":2095},{"style":118},[2096],{"type":38,"value":2097}," email_hash, session_hash, form_submit_timestamp\n",{"type":33,"tag":105,"props":2099,"children":2100},{"class":107,"line":235},[2101,2105],{"type":33,"tag":105,"props":2102,"children":2103},{"style":112},[2104],{"type":38,"value":353},{"type":33,"tag":105,"props":2106,"children":2107},{"style":118},[2108],{"type":38,"value":2109}," user_identifications\n",{"type":33,"tag":105,"props":2111,"children":2112},{"class":107,"line":27},[2113,2117,2121,2126,2130,2134,2138],{"type":33,"tag":105,"props":2114,"children":2115},{"style":112},[2116],{"type":38,"value":377},{"type":33,"tag":105,"props":2118,"children":2119},{"style":112},[2120],{"type":38,"value":382},{"type":33,"tag":105,"props":2122,"children":2123},{"style":118},[2124],{"type":38,"value":2125},"(form_submit_timestamp) ",{"type":33,"tag":105,"props":2127,"children":2128},{"style":112},[2129],{"type":38,"value":300},{"type":33,"tag":105,"props":2131,"children":2132},{"style":118},[2133],{"type":38,"value":403},{"type":33,"tag":105,"props":2135,"children":2136},{"style":112},[2137],{"type":38,"value":408},{"type":33,"tag":105,"props":2139,"children":2140},{"style":207},[2141],{"type":38,"value":413},{"type":33,"tag":105,"props":2143,"children":2144},{"class":107,"line":347},[2145],{"type":33,"tag":105,"props":2146,"children":2147},{"style":118},[2148],{"type":38,"value":463},{"type":33,"tag":105,"props":2150,"children":2151},{"class":107,"line":371},[2152],{"type":33,"tag":105,"props":2153,"children":2154},{"style":112},[2155],{"type":38,"value":472},{"type":33,"tag":105,"props":2157,"children":2158},{"class":107,"line":416},[2159,2164,2169,2174],{"type":33,"tag":105,"props":2160,"children":2161},{"style":207},[2162],{"type":38,"value":2163},"  i",{"type":33,"tag":105,"props":2165,"children":2166},{"style":118},[2167],{"type":38,"value":2168},".",{"type":33,"tag":105,"props":2170,"children":2171},{"style":207},[2172],{"type":38,"value":2173},"email_hash",{"type":33,"tag":105,"props":2175,"children":2176},{"style":118},[2177],{"type":38,"value":268},{"type":33,"tag":105,"props":2179,"children":2180},{"class":107,"line":457},[2181,2186,2191,2195,2200,2204,2208,2212,2216,2220,2224,2229,2233,2237,2241,2245],{"type":33,"tag":105,"props":2182,"children":2183},{"style":118},[2184],{"type":38,"value":2185},"  ARRAY_AGG(STRUCT(",{"type":33,"tag":105,"props":2187,"children":2188},{"style":207},[2189],{"type":38,"value":2190},"e",{"type":33,"tag":105,"props":2192,"children":2193},{"style":118},[2194],{"type":38,"value":2168},{"type":33,"tag":105,"props":2196,"children":2197},{"style":207},[2198],{"type":38,"value":2199},"page_path",{"type":33,"tag":105,"props":2201,"children":2202},{"style":118},[2203],{"type":38,"value":431},{"type":33,"tag":105,"props":2205,"children":2206},{"style":207},[2207],{"type":38,"value":2190},{"type":33,"tag":105,"props":2209,"children":2210},{"style":118},[2211],{"type":38,"value":2168},{"type":33,"tag":105,"props":2213,"children":2214},{"style":207},[2215],{"type":38,"value":159},{"type":33,"tag":105,"props":2217,"children":2218},{"style":118},[2219],{"type":38,"value":164},{"type":33,"tag":105,"props":2221,"children":2222},{"style":112},[2223],{"type":38,"value":625},{"type":33,"tag":105,"props":2225,"children":2226},{"style":207},[2227],{"type":38,"value":2228}," e",{"type":33,"tag":105,"props":2230,"children":2231},{"style":118},[2232],{"type":38,"value":2168},{"type":33,"tag":105,"props":2234,"children":2235},{"style":207},[2236],{"type":38,"value":159},{"type":33,"tag":105,"props":2238,"children":2239},{"style":118},[2240],{"type":38,"value":164},{"type":33,"tag":105,"props":2242,"children":2243},{"style":112},[2244],{"type":38,"value":126},{"type":33,"tag":105,"props":2246,"children":2247},{"style":118},[2248],{"type":38,"value":2249}," session_journey\n",{"type":33,"tag":105,"props":2251,"children":2252},{"class":107,"line":466},[2253,2257],{"type":33,"tag":105,"props":2254,"children":2255},{"style":112},[2256],{"type":38,"value":575},{"type":33,"tag":105,"props":2258,"children":2259},{"style":118},[2260],{"type":38,"value":2261}," identified_sessions i\n",{"type":33,"tag":105,"props":2263,"children":2264},{"class":107,"line":475},[2265,2270,2275,2280,2285,2289,2294,2298,2302,2306],{"type":33,"tag":105,"props":2266,"children":2267},{"style":112},[2268],{"type":38,"value":2269},"JOIN",{"type":33,"tag":105,"props":2271,"children":2272},{"style":118},[2273],{"type":38,"value":2274}," session_events e ",{"type":33,"tag":105,"props":2276,"children":2277},{"style":112},[2278],{"type":38,"value":2279},"ON",{"type":33,"tag":105,"props":2281,"children":2282},{"style":207},[2283],{"type":38,"value":2284}," i",{"type":33,"tag":105,"props":2286,"children":2287},{"style":118},[2288],{"type":38,"value":2168},{"type":33,"tag":105,"props":2290,"children":2291},{"style":207},[2292],{"type":38,"value":2293},"session_hash",{"type":33,"tag":105,"props":2295,"children":2296},{"style":112},[2297],{"type":38,"value":833},{"type":33,"tag":105,"props":2299,"children":2300},{"style":207},[2301],{"type":38,"value":2228},{"type":33,"tag":105,"props":2303,"children":2304},{"style":118},[2305],{"type":38,"value":2168},{"type":33,"tag":105,"props":2307,"children":2308},{"style":207},[2309],{"type":38,"value":2310},"session_hash\n",{"type":33,"tag":105,"props":2312,"children":2313},{"class":107,"line":484},[2314,2318,2322,2326,2330,2335,2339,2343],{"type":33,"tag":105,"props":2315,"children":2316},{"style":112},[2317],{"type":38,"value":728},{"type":33,"tag":105,"props":2319,"children":2320},{"style":207},[2321],{"type":38,"value":2228},{"type":33,"tag":105,"props":2323,"children":2324},{"style":118},[2325],{"type":38,"value":2168},{"type":33,"tag":105,"props":2327,"children":2328},{"style":207},[2329],{"type":38,"value":159},{"type":33,"tag":105,"props":2331,"children":2332},{"style":112},[2333],{"type":38,"value":2334}," \u003C=",{"type":33,"tag":105,"props":2336,"children":2337},{"style":207},[2338],{"type":38,"value":2284},{"type":33,"tag":105,"props":2340,"children":2341},{"style":118},[2342],{"type":38,"value":2168},{"type":33,"tag":105,"props":2344,"children":2345},{"style":207},[2346],{"type":38,"value":2347},"form_submit_timestamp\n",{"type":33,"tag":105,"props":2349,"children":2350},{"class":107,"line":493},[2351,2355,2359,2363],{"type":33,"tag":105,"props":2352,"children":2353},{"style":112},[2354],{"type":38,"value":768},{"type":33,"tag":105,"props":2356,"children":2357},{"style":207},[2358],{"type":38,"value":2284},{"type":33,"tag":105,"props":2360,"children":2361},{"style":118},[2362],{"type":38,"value":2168},{"type":33,"tag":105,"props":2364,"children":2365},{"style":207},[2366],{"type":38,"value":2367},"email_hash\n",{"type":33,"tag":34,"props":2369,"children":2370},{},[2371],{"type":38,"value":2372},"Этот запрос привязывает journey до submit'а формы к email hash. В CDP (Segment, RudderStack, Insider) это сохраняется как \"anonymous → identified\" переход. По GDPR пользователь дал согласие, заполнив форму (если на форме указаны цели GDPR), поэтому email hash становится допустимым идентификатором со этого момента. События до отправки формы остаются анонимными — это не user-level tracking, а aggregate funnel-анализ для сегмента \"пользователи, заполнившие форму\".",{"type":33,"tag":34,"props":2374,"children":2375},{},[2376],{"type":38,"value":2377},"Для retention engineering этот подход мощен: в CDP вы не можете cookieless способом отловить \"посетил сайт, но не заполнил форму\". Однако вы получаете aggregate данные о \"journey пользователей, заполнивших форму, с момента первого прихода\". Для когортного удержания считайте sessions по email hash через 7\u002F30\u002F90 дней после submit. Точ",{"type":33,"tag":2379,"props":2380,"children":2381},"style",{},[2382],{"type":38,"value":2383},"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":143,"depth":143,"links":2385},[2386,2387,2390,2391,2392],{"id":43,"depth":134,"text":46},{"id":80,"depth":134,"text":83,"children":2388},[2389],{"id":782,"depth":143,"text":785},{"id":1037,"depth":134,"text":1040},{"id":1239,"depth":134,"text":1242},{"id":1952,"depth":134,"text":1955},"markdown","content:ru:data:privacy-first-analytics-plausible-serverside-aggregation.md","content","ru\u002Fdata\u002Fprivacy-first-analytics-plausible-serverside-aggregation.md","ru\u002Fdata\u002Fprivacy-first-analytics-plausible-serverside-aggregation","md",1785103526878]