[{"data":1,"prerenderedAt":1381},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fru\u002Fmarketing\u002Fserver-side-conversions-meta-capi-sgtm":12},{"i18nKey":4,"paths":5},"marketing-001-2026-05",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11},"\u002Fde\u002Fmarketing\u002Fmeta-capi-server-side-conversion-tracking","\u002Fen\u002Fmarketing\u002Fserver-side-conversions-setting-up-meta-capi-correctly","\u002Fes\u002Fmarketing\u002Fconversiones-lado-servidor-meta-capi-configuracion-correcta","\u002Ffr\u002Fmarketing\u002Fmeta-capi-server-side-conversion-tracking","\u002Fit\u002Fmarketing\u002Fserver-side-conversioni-meta-capi-correttamente-configurato","\u002Fru\u002Fmarketing\u002Fserver-side-conversions-meta-capi-sgtm",{"_path":11,"_dir":13,"_draft":14,"_partial":14,"_locale":15,"title":16,"description":17,"publishedAt":18,"modifiedAt":18,"category":13,"i18nKey":4,"tags":19,"readingTime":25,"author":26,"body":27,"_type":1375,"_id":1376,"_source":1377,"_file":1378,"_stem":1379,"_extension":1380},"marketing",false,"","Server-Side Conversions: Правильная настройка Meta CAPI с нуля","Как построить архитектуру Meta CAPI + sGTM после iOS 17 и ограничений cookies? Дедупликация, качество сопоставления событий и инфраструктура атрибуции.","2026-05-28",[20,21,22,23,24],"meta-capi","server-side-gtm","conversion-api","event-match-quality","attribution",9,"Roibase",{"type":28,"children":29,"toc":1364},"root",[30,38,45,50,55,60,66,71,76,131,136,143,148,153,353,365,371,376,543,562,567,645,650,656,676,681,917,929,1225,1230,1236,1241,1246,1260,1266,1278,1343,1348,1353,1358],{"type":31,"tag":32,"props":33,"children":34},"element","p",{},[35],{"type":36,"value":37},"text","После iOS 17.4 коэффициент принятия App Tracking Transparency (ATT) упал до 12%. Поддержка сторонних cookies в Chrome завершилась в Q3 2025. В столбце \"Event Source\" Ads Manager'а вклад пиксела снизился до 40%. Эти цифры показывают не просто недостаточность браузерного измерения — они указывают на необходимость полностью новой архитектуры. Server-side conversion tracking больше не опция, а требование. Комбинация Meta Conversions API (CAPI) и server-side Google Tag Manager (sGTM) — единственная инфраструктура, которая минимизирует потери сигнала.",{"type":31,"tag":39,"props":40,"children":42},"h2",{"id":41},"где-браузерное-измерение-больше-не-работает",[43],{"type":36,"value":44},"Где браузерное измерение больше не работает",{"type":31,"tag":32,"props":46,"children":47},{},[48],{"type":36,"value":49},"Meta пиксель работает через клиентский JavaScript. Если пользователь покидает страницу до загрузки кода пиксела, событие теряется. Safari Intelligent Tracking Prevention (ITP) сокращает время жизни cookies до 7 дней. Использование блокировщиков рекламы достигает 42%. При этих условиях пиксель видит 60-70% реальных conversions. Оставшиеся 30-40% — \"phantom conversions\" — произошли, но не были зарегистрированы в Meta.",{"type":31,"tag":32,"props":51,"children":52},{},[53],{"type":36,"value":54},"Окно атрибуции также сузилось. Пиксель работает с 1-day click и 7-day view. Однако из-за ITP даже за 24 часа cookie могут быть удалены. В секторах с длинным циклом продаж (B2B SaaS, финансы, образование) 80% conversions приходит более чем через 7 дней. Пиксель эти conversions не видит. ROAS кампании выглядит как 1.2, на самом деле это 2.8. Бюджет перераспределяется неправильно.",{"type":31,"tag":32,"props":56,"children":57},{},[58],{"type":36,"value":59},"Cross-device сценарии ломаются полностью. Пользователь видит объявление на мобильном, совершает покупку на ПК. Пиксель читает разные cookie domains и считает их разными пользователями. CAPI отправляется с сервера с хешем пользователя (email SHA-256, телефон SHA-256). Два устройства связываются как один человек.",{"type":31,"tag":39,"props":61,"children":63},{"id":62},"как-работает-архитектура-capi-sgtm",[64],{"type":36,"value":65},"Как работает архитектура CAPI + sGTM",{"type":31,"tag":32,"props":67,"children":68},{},[69],{"type":36,"value":70},"Server-side conversion tracking состоит из двух слоёв: слой сбора данных (контейнер sGTM) и слой передачи API (endpoint CAPI). Контейнер sGTM развёртывается на Google Cloud Run. Он получает события от клиентского GTM, обогащает их данными и отправляет в CAPI. Сервер Meta получает данные, выполняет дедупликацию и передаёт в модель атрибуции.",{"type":31,"tag":32,"props":72,"children":73},{},[74],{"type":36,"value":75},"Поток данных идёт в таком порядке:",{"type":31,"tag":77,"props":78,"children":79},"ol",{},[80,95,100,105,110,121,126],{"type":31,"tag":81,"props":82,"children":83},"li",{},[84,86,93],{"type":36,"value":85},"Клиентский GTM запускает событие ",{"type":31,"tag":87,"props":88,"children":90},"code",{"className":89},[],[91],{"type":36,"value":92},"purchase",{"type":36,"value":94}," (dataLayer push)",{"type":31,"tag":81,"props":96,"children":97},{},[98],{"type":36,"value":99},"Событие отправляется HTTP POST на URL контейнера sGTM",{"type":31,"tag":81,"props":101,"children":102},{},[103],{"type":36,"value":104},"Тег \"Meta Conversions API\" в sGTM читает параметры события",{"type":31,"tag":81,"props":106,"children":107},{},[108],{"type":36,"value":109},"Добавляет server IP, user-agent, event_time, external_id (хешированный email)",{"type":31,"tag":81,"props":111,"children":112},{},[113,115],{"type":36,"value":114},"POST в endpoint CAPI: ",{"type":31,"tag":87,"props":116,"children":118},{"className":117},[],[119],{"type":36,"value":120},"https:\u002F\u002Fgraph.facebook.com\u002Fv19.0\u002F{pixel_id}\u002Fevents",{"type":31,"tag":81,"props":122,"children":123},{},[124],{"type":36,"value":125},"Meta запускает алгоритм дедупликации пикселя + серверного события",{"type":31,"tag":81,"props":127,"children":128},{},[129],{"type":36,"value":130},"Если внутри окна атрибуции, conversion назначается кампании",{"type":31,"tag":32,"props":132,"children":133},{},[134],{"type":36,"value":135},"Критическое преимущество sGTM: клиентское событие и серверное событие имеют один и тот же event_id. Когда Meta видит этот ID, она совмещает два события (дедупликация). Если пиксель отправит событие, а через 5 минут придёт серверное событие с тем же ID, Meta считает это одной conversion. Так предотвращается двойной учёт.",{"type":31,"tag":137,"props":138,"children":140},"h3",{"id":139},"как-повышается-event-match-quality-score",[141],{"type":36,"value":142},"Как повышается Event Match Quality Score",{"type":31,"tag":32,"props":144,"children":145},{},[146],{"type":36,"value":147},"Event Match Quality (EMQ) score Meta измеряет от 0 до 10. Он показывает, насколько параметры события пригодны для атрибуции. Пиксель обычно даёт 2.5-4.5. С CAPI возрастает до 7.5-9.5. Более высокий score ускоряет фазу обучения кампании и снижает CPA на 15-30%.",{"type":31,"tag":32,"props":149,"children":150},{},[151],{"type":36,"value":152},"Параметры, которые повышают EMQ score:",{"type":31,"tag":154,"props":155,"children":156},"table",{},[157,186],{"type":31,"tag":158,"props":159,"children":160},"thead",{},[161],{"type":31,"tag":162,"props":163,"children":164},"tr",{},[165,171,176,181],{"type":31,"tag":166,"props":167,"children":168},"th",{},[169],{"type":36,"value":170},"Параметр",{"type":31,"tag":166,"props":172,"children":173},{},[174],{"type":36,"value":175},"Предоставляет пиксель?",{"type":31,"tag":166,"props":177,"children":178},{},[179],{"type":36,"value":180},"Предоставляет сервер?",{"type":31,"tag":166,"props":182,"children":183},{},[184],{"type":36,"value":185},"Вес",{"type":31,"tag":187,"props":188,"children":189},"tbody",{},[190,220,249,275,301,328],{"type":31,"tag":162,"props":191,"children":192},{},[193,205,210,215],{"type":31,"tag":194,"props":195,"children":196},"td",{},[197,203],{"type":31,"tag":87,"props":198,"children":200},{"className":199},[],[201],{"type":36,"value":202},"external_id",{"type":36,"value":204}," (хешированный email)",{"type":31,"tag":194,"props":206,"children":207},{},[208],{"type":36,"value":209},"❌",{"type":31,"tag":194,"props":211,"children":212},{},[213],{"type":36,"value":214},"✅",{"type":31,"tag":194,"props":216,"children":217},{},[218],{"type":36,"value":219},"Высокий",{"type":31,"tag":162,"props":221,"children":222},{},[223,234,239,244],{"type":31,"tag":194,"props":224,"children":225},{},[226,232],{"type":31,"tag":87,"props":227,"children":229},{"className":228},[],[230],{"type":36,"value":231},"client_user_agent",{"type":36,"value":233}," (полный)",{"type":31,"tag":194,"props":235,"children":236},{},[237],{"type":36,"value":238},"✅ (ограниченно)",{"type":31,"tag":194,"props":240,"children":241},{},[242],{"type":36,"value":243},"✅ (полный)",{"type":31,"tag":194,"props":245,"children":246},{},[247],{"type":36,"value":248},"Средний",{"type":31,"tag":162,"props":250,"children":251},{},[252,261,266,271],{"type":31,"tag":194,"props":253,"children":254},{},[255],{"type":31,"tag":87,"props":256,"children":258},{"className":257},[],[259],{"type":36,"value":260},"client_ip_address",{"type":31,"tag":194,"props":262,"children":263},{},[264],{"type":36,"value":265},"❌ (прокси)",{"type":31,"tag":194,"props":267,"children":268},{},[269],{"type":36,"value":270},"✅ (реальный)",{"type":31,"tag":194,"props":272,"children":273},{},[274],{"type":36,"value":219},{"type":31,"tag":162,"props":276,"children":277},{},[278,289,293,297],{"type":31,"tag":194,"props":279,"children":280},{},[281,287],{"type":31,"tag":87,"props":282,"children":284},{"className":283},[],[285],{"type":36,"value":286},"fbc",{"type":36,"value":288}," (click ID)",{"type":31,"tag":194,"props":290,"children":291},{},[292],{"type":36,"value":214},{"type":31,"tag":194,"props":294,"children":295},{},[296],{"type":36,"value":214},{"type":31,"tag":194,"props":298,"children":299},{},[300],{"type":36,"value":219},{"type":31,"tag":162,"props":302,"children":303},{},[304,315,319,324],{"type":31,"tag":194,"props":305,"children":306},{},[307,313],{"type":31,"tag":87,"props":308,"children":310},{"className":309},[],[311],{"type":36,"value":312},"fbp",{"type":36,"value":314}," (browser ID)",{"type":31,"tag":194,"props":316,"children":317},{},[318],{"type":36,"value":214},{"type":31,"tag":194,"props":320,"children":321},{},[322],{"type":36,"value":323},"✅ (forwarded)",{"type":31,"tag":194,"props":325,"children":326},{},[327],{"type":36,"value":248},{"type":31,"tag":162,"props":329,"children":330},{},[331,340,344,348],{"type":31,"tag":194,"props":332,"children":333},{},[334],{"type":31,"tag":87,"props":335,"children":337},{"className":336},[],[338],{"type":36,"value":339},"event_source_url",{"type":31,"tag":194,"props":341,"children":342},{},[343],{"type":36,"value":214},{"type":31,"tag":194,"props":345,"children":346},{},[347],{"type":36,"value":214},{"type":31,"tag":194,"props":349,"children":350},{},[351],{"type":36,"value":352},"Низкий",{"type":31,"tag":32,"props":354,"children":355},{},[356,358,363],{"type":36,"value":357},"Самый критичный параметр, который пиксель не может отправить — это ",{"type":31,"tag":87,"props":359,"children":361},{"className":360},[],[362],{"type":36,"value":202},{"type":36,"value":364},". После получения согласия пользователя через систему управления согласием (CMP), backend хеширует email с SHA-256 и отправляет в sGTM. Meta сопоставляет этот хеш со своим графом пользователей. Коэффициент сопоставления около 60-80% (зависит от точности email). Для сопоставленных пользователей надёжность атрибуции поднимается до 95%.",{"type":31,"tag":39,"props":366,"children":368},{"id":367},"техническая-настройка-развёртывание-контейнера-sgtm-и-конфигурация-capi",[369],{"type":36,"value":370},"Техническая настройка: развёртывание контейнера sGTM и конфигурация CAPI",{"type":31,"tag":32,"props":372,"children":373},{},[374],{"type":36,"value":375},"Контейнер sGTM развёртывается на Google Cloud Run. Сначала в GTM создаётся контейнер типа \"Server\". Получается Container ID (GTM-XXXXXX), затем развёртывается на Cloud Run:",{"type":31,"tag":377,"props":378,"children":382},"pre",{"className":379,"code":380,"language":381,"meta":15,"style":15},"language-bash shiki shiki-themes github-dark","gcloud run deploy sgtm-roibase \\\n  --image=gcr.io\u002Fcloud-tagging-10302018\u002Fgtm-cloud-image:stable \\\n  --platform=managed \\\n  --region=europe-west1 \\\n  --set-env-vars=CONTAINER_CONFIG={container_id} \\\n  --allow-unauthenticated \\\n  --min-instances=1 \\\n  --max-instances=10 \\\n  --cpu=1 \\\n  --memory=512Mi\n","bash",[383],{"type":31,"tag":87,"props":384,"children":385},{"__ignoreMap":15},[386,420,433,446,459,483,496,509,522,534],{"type":31,"tag":387,"props":388,"children":391},"span",{"class":389,"line":390},"line",1,[392,398,404,409,414],{"type":31,"tag":387,"props":393,"children":395},{"style":394},"--shiki-default:#B392F0",[396],{"type":36,"value":397},"gcloud",{"type":31,"tag":387,"props":399,"children":401},{"style":400},"--shiki-default:#9ECBFF",[402],{"type":36,"value":403}," run",{"type":31,"tag":387,"props":405,"children":406},{"style":400},[407],{"type":36,"value":408}," deploy",{"type":31,"tag":387,"props":410,"children":411},{"style":400},[412],{"type":36,"value":413}," sgtm-roibase",{"type":31,"tag":387,"props":415,"children":417},{"style":416},"--shiki-default:#79B8FF",[418],{"type":36,"value":419}," \\\n",{"type":31,"tag":387,"props":421,"children":423},{"class":389,"line":422},2,[424,429],{"type":31,"tag":387,"props":425,"children":426},{"style":416},[427],{"type":36,"value":428},"  --image=gcr.io\u002Fcloud-tagging-10302018\u002Fgtm-cloud-image:stable",{"type":31,"tag":387,"props":430,"children":431},{"style":416},[432],{"type":36,"value":419},{"type":31,"tag":387,"props":434,"children":436},{"class":389,"line":435},3,[437,442],{"type":31,"tag":387,"props":438,"children":439},{"style":416},[440],{"type":36,"value":441},"  --platform=managed",{"type":31,"tag":387,"props":443,"children":444},{"style":416},[445],{"type":36,"value":419},{"type":31,"tag":387,"props":447,"children":449},{"class":389,"line":448},4,[450,455],{"type":31,"tag":387,"props":451,"children":452},{"style":416},[453],{"type":36,"value":454},"  --region=europe-west1",{"type":31,"tag":387,"props":456,"children":457},{"style":416},[458],{"type":36,"value":419},{"type":31,"tag":387,"props":460,"children":462},{"class":389,"line":461},5,[463,468,474,479],{"type":31,"tag":387,"props":464,"children":465},{"style":416},[466],{"type":36,"value":467},"  --set-env-vars=CONTAINER_CONFIG=",{"type":31,"tag":387,"props":469,"children":471},{"style":470},"--shiki-default:#E1E4E8",[472],{"type":36,"value":473},"{",{"type":31,"tag":387,"props":475,"children":476},{"style":394},[477],{"type":36,"value":478},"container_id}",{"type":31,"tag":387,"props":480,"children":481},{"style":416},[482],{"type":36,"value":419},{"type":31,"tag":387,"props":484,"children":486},{"class":389,"line":485},6,[487,492],{"type":31,"tag":387,"props":488,"children":489},{"style":416},[490],{"type":36,"value":491},"  --allow-unauthenticated",{"type":31,"tag":387,"props":493,"children":494},{"style":416},[495],{"type":36,"value":419},{"type":31,"tag":387,"props":497,"children":499},{"class":389,"line":498},7,[500,505],{"type":31,"tag":387,"props":501,"children":502},{"style":416},[503],{"type":36,"value":504},"  --min-instances=1",{"type":31,"tag":387,"props":506,"children":507},{"style":416},[508],{"type":36,"value":419},{"type":31,"tag":387,"props":510,"children":512},{"class":389,"line":511},8,[513,518],{"type":31,"tag":387,"props":514,"children":515},{"style":416},[516],{"type":36,"value":517},"  --max-instances=10",{"type":31,"tag":387,"props":519,"children":520},{"style":416},[521],{"type":36,"value":419},{"type":31,"tag":387,"props":523,"children":524},{"class":389,"line":25},[525,530],{"type":31,"tag":387,"props":526,"children":527},{"style":416},[528],{"type":36,"value":529},"  --cpu=1",{"type":31,"tag":387,"props":531,"children":532},{"style":416},[533],{"type":36,"value":419},{"type":31,"tag":387,"props":535,"children":537},{"class":389,"line":536},10,[538],{"type":31,"tag":387,"props":539,"children":540},{"style":416},[541],{"type":36,"value":542},"  --memory=512Mi\n",{"type":31,"tag":32,"props":544,"children":545},{},[546,552,554,560],{"type":31,"tag":87,"props":547,"children":549},{"className":548},[],[550],{"type":36,"value":551},"--min-instances=1",{"type":36,"value":553}," критичен: избегает cold start. Первое событие обрабатывается за 50ms вместо 300ms. После развёртывания контейнера в GTM устанавливается собственный домен: ",{"type":31,"tag":87,"props":555,"children":557},{"className":556},[],[558],{"type":36,"value":559},"sgtm.roibase.com.tr",{"type":36,"value":561},". В Cloudflare DNS добавляется CNAME, SSL-сертификат обновляется автоматически.",{"type":31,"tag":32,"props":563,"children":564},{},[565],{"type":36,"value":566},"В клиентском GTM в настройках \"Google Tag: GA4\" включается опция \"Send to server container\", указывается URL контейнера. Теперь каждое GA4 событие автоматически попадает и в sGTM. В sGTM добавляется тег \"Meta Conversions API\":",{"type":31,"tag":568,"props":569,"children":570},"ul",{},[571,582,592,625,635],{"type":31,"tag":81,"props":572,"children":573},{},[574,580],{"type":31,"tag":575,"props":576,"children":577},"strong",{},[578],{"type":36,"value":579},"Pixel ID:",{"type":36,"value":581}," 15-значный ID из Meta Ads Manager",{"type":31,"tag":81,"props":583,"children":584},{},[585,590],{"type":31,"tag":575,"props":586,"children":587},{},[588],{"type":36,"value":589},"Access Token:",{"type":36,"value":591}," Events Manager > Settings > Generate Access Token (через system user)",{"type":31,"tag":81,"props":593,"children":594},{},[595,600,602,608,610,615,617,623],{"type":31,"tag":575,"props":596,"children":597},{},[598],{"type":36,"value":599},"Event Name:",{"type":36,"value":601}," параметр ",{"type":31,"tag":87,"props":603,"children":605},{"className":604},[],[606],{"type":36,"value":607},"event_name",{"type":36,"value":609}," из GA4 (",{"type":31,"tag":87,"props":611,"children":613},{"className":612},[],[614],{"type":36,"value":92},{"type":36,"value":616},", ",{"type":31,"tag":87,"props":618,"children":620},{"className":619},[],[621],{"type":36,"value":622},"add_to_cart",{"type":36,"value":624}," и т.д.)",{"type":31,"tag":81,"props":626,"children":627},{},[628,633],{"type":31,"tag":575,"props":629,"children":630},{},[631],{"type":36,"value":632},"Event ID:",{"type":36,"value":634}," тот же ID что и на клиенте (для дедупликации)",{"type":31,"tag":81,"props":636,"children":637},{},[638,643],{"type":31,"tag":575,"props":639,"children":640},{},[641],{"type":36,"value":642},"Test Event Code:",{"type":36,"value":644}," перед запуском вживую тестовые события видны в тестовой панели Meta",{"type":31,"tag":32,"props":646,"children":647},{},[648],{"type":36,"value":649},"Срок действия access token не ограничен при использовании system user token. Если token скомпрометирован, его можно моментально отозвать. Токен хранится как переменная окружения в контейнере sGTM, не в коде.",{"type":31,"tag":137,"props":651,"children":653},{"id":652},"стратегия-дедупликации-и-управление-event-id",[654],{"type":36,"value":655},"Стратегия дедупликации и управление Event ID",{"type":31,"tag":32,"props":657,"children":658},{},[659,661,667,669,674],{"type":36,"value":660},"Дедупликация предотвращает двойной учёт пиксельного и серверного события. Алгоритм Meta работает так: если один и тот же ",{"type":31,"tag":87,"props":662,"children":664},{"className":663},[],[665],{"type":36,"value":666},"event_id",{"type":36,"value":668}," и ",{"type":31,"tag":87,"props":670,"children":672},{"className":671},[],[673],{"type":36,"value":607},{"type":36,"value":675}," приходят в течение 5 минут, учитывается только событие с более высоким EMQ score. Обычно это серверное событие (score выше). Но если пиксельное событие пришло на 1 секунду раньше, а серверное — через 6 минут, оба события считаются отдельно.",{"type":31,"tag":32,"props":677,"children":678},{},[679],{"type":36,"value":680},"Генерация event_id на клиенте:",{"type":31,"tag":377,"props":682,"children":686},{"className":683,"code":684,"language":685,"meta":15,"style":15},"language-javascript shiki shiki-themes github-dark","\u002F\u002F перед dataLayer push\nconst eventId = Date.now().toString() + Math.random().toString(36).substring(2, 9);\nwindow.dataLayer.push({\n  event: 'purchase',\n  transaction_id: '12345',\n  value: 99.99,\n  currency: 'TRY',\n  event_id: eventId \u002F\u002F тот же ID пойдёт на сервер\n});\n","javascript",[687],{"type":31,"tag":87,"props":688,"children":689},{"__ignoreMap":15},[690,699,809,827,845,862,879,896,909],{"type":31,"tag":387,"props":691,"children":692},{"class":389,"line":390},[693],{"type":31,"tag":387,"props":694,"children":696},{"style":695},"--shiki-default:#6A737D",[697],{"type":36,"value":698},"\u002F\u002F перед dataLayer push\n",{"type":31,"tag":387,"props":700,"children":701},{"class":389,"line":422},[702,708,713,718,723,728,733,738,743,748,753,758,762,766,771,776,781,786,790,795,799,804],{"type":31,"tag":387,"props":703,"children":705},{"style":704},"--shiki-default:#F97583",[706],{"type":36,"value":707},"const",{"type":31,"tag":387,"props":709,"children":710},{"style":416},[711],{"type":36,"value":712}," eventId",{"type":31,"tag":387,"props":714,"children":715},{"style":704},[716],{"type":36,"value":717}," =",{"type":31,"tag":387,"props":719,"children":720},{"style":470},[721],{"type":36,"value":722}," Date.",{"type":31,"tag":387,"props":724,"children":725},{"style":394},[726],{"type":36,"value":727},"now",{"type":31,"tag":387,"props":729,"children":730},{"style":470},[731],{"type":36,"value":732},"().",{"type":31,"tag":387,"props":734,"children":735},{"style":394},[736],{"type":36,"value":737},"toString",{"type":31,"tag":387,"props":739,"children":740},{"style":470},[741],{"type":36,"value":742},"() ",{"type":31,"tag":387,"props":744,"children":745},{"style":704},[746],{"type":36,"value":747},"+",{"type":31,"tag":387,"props":749,"children":750},{"style":470},[751],{"type":36,"value":752}," Math.",{"type":31,"tag":387,"props":754,"children":755},{"style":394},[756],{"type":36,"value":757},"random",{"type":31,"tag":387,"props":759,"children":760},{"style":470},[761],{"type":36,"value":732},{"type":31,"tag":387,"props":763,"children":764},{"style":394},[765],{"type":36,"value":737},{"type":31,"tag":387,"props":767,"children":768},{"style":470},[769],{"type":36,"value":770},"(",{"type":31,"tag":387,"props":772,"children":773},{"style":416},[774],{"type":36,"value":775},"36",{"type":31,"tag":387,"props":777,"children":778},{"style":470},[779],{"type":36,"value":780},").",{"type":31,"tag":387,"props":782,"children":783},{"style":394},[784],{"type":36,"value":785},"substring",{"type":31,"tag":387,"props":787,"children":788},{"style":470},[789],{"type":36,"value":770},{"type":31,"tag":387,"props":791,"children":792},{"style":416},[793],{"type":36,"value":794},"2",{"type":31,"tag":387,"props":796,"children":797},{"style":470},[798],{"type":36,"value":616},{"type":31,"tag":387,"props":800,"children":801},{"style":416},[802],{"type":36,"value":803},"9",{"type":31,"tag":387,"props":805,"children":806},{"style":470},[807],{"type":36,"value":808},");\n",{"type":31,"tag":387,"props":810,"children":811},{"class":389,"line":435},[812,817,822],{"type":31,"tag":387,"props":813,"children":814},{"style":470},[815],{"type":36,"value":816},"window.dataLayer.",{"type":31,"tag":387,"props":818,"children":819},{"style":394},[820],{"type":36,"value":821},"push",{"type":31,"tag":387,"props":823,"children":824},{"style":470},[825],{"type":36,"value":826},"({\n",{"type":31,"tag":387,"props":828,"children":829},{"class":389,"line":448},[830,835,840],{"type":31,"tag":387,"props":831,"children":832},{"style":470},[833],{"type":36,"value":834},"  event: ",{"type":31,"tag":387,"props":836,"children":837},{"style":400},[838],{"type":36,"value":839},"'purchase'",{"type":31,"tag":387,"props":841,"children":842},{"style":470},[843],{"type":36,"value":844},",\n",{"type":31,"tag":387,"props":846,"children":847},{"class":389,"line":461},[848,853,858],{"type":31,"tag":387,"props":849,"children":850},{"style":470},[851],{"type":36,"value":852},"  transaction_id: ",{"type":31,"tag":387,"props":854,"children":855},{"style":400},[856],{"type":36,"value":857},"'12345'",{"type":31,"tag":387,"props":859,"children":860},{"style":470},[861],{"type":36,"value":844},{"type":31,"tag":387,"props":863,"children":864},{"class":389,"line":485},[865,870,875],{"type":31,"tag":387,"props":866,"children":867},{"style":470},[868],{"type":36,"value":869},"  value: ",{"type":31,"tag":387,"props":871,"children":872},{"style":416},[873],{"type":36,"value":874},"99.99",{"type":31,"tag":387,"props":876,"children":877},{"style":470},[878],{"type":36,"value":844},{"type":31,"tag":387,"props":880,"children":881},{"class":389,"line":498},[882,887,892],{"type":31,"tag":387,"props":883,"children":884},{"style":470},[885],{"type":36,"value":886},"  currency: ",{"type":31,"tag":387,"props":888,"children":889},{"style":400},[890],{"type":36,"value":891},"'TRY'",{"type":31,"tag":387,"props":893,"children":894},{"style":470},[895],{"type":36,"value":844},{"type":31,"tag":387,"props":897,"children":898},{"class":389,"line":511},[899,904],{"type":31,"tag":387,"props":900,"children":901},{"style":470},[902],{"type":36,"value":903},"  event_id: eventId ",{"type":31,"tag":387,"props":905,"children":906},{"style":695},[907],{"type":36,"value":908},"\u002F\u002F тот же ID пойдёт на сервер\n",{"type":31,"tag":387,"props":910,"children":911},{"class":389,"line":25},[912],{"type":31,"tag":387,"props":913,"children":914},{"style":470},[915],{"type":36,"value":916},"});\n",{"type":31,"tag":32,"props":918,"children":919},{},[920,922,927],{"type":36,"value":921},"На стороне sGTM этот ",{"type":31,"tag":87,"props":923,"children":925},{"className":924},[],[926],{"type":36,"value":666},{"type":36,"value":928}," добавляется в payload CAPI:",{"type":31,"tag":377,"props":930,"children":934},{"className":931,"code":932,"language":933,"meta":15,"style":15},"language-json shiki shiki-themes github-dark","{\n  \"data\": [{\n    \"event_name\": \"Purchase\",\n    \"event_time\": 1748448000,\n    \"event_id\": \"1748448000abc123\",\n    \"event_source_url\": \"https:\u002F\u002Fwww.roibase.com.tr\u002Fcheckout\",\n    \"user_data\": {\n      \"external_id\": [\"7d8a...\"], \n      \"client_ip_address\": \"85.34.x.x\",\n      \"client_user_agent\": \"Mozilla\u002F5.0...\"\n    },\n    \"custom_data\": {\n      \"currency\": \"TRY\",\n      \"value\": 99.99\n    }\n  }],\n  \"test_event_code\": \"TEST12345\"\n}\n","json",[935],{"type":31,"tag":87,"props":936,"children":937},{"__ignoreMap":15},[938,946,959,981,1002,1023,1044,1057,1080,1101,1118,1127,1140,1162,1180,1189,1198,1216],{"type":31,"tag":387,"props":939,"children":940},{"class":389,"line":390},[941],{"type":31,"tag":387,"props":942,"children":943},{"style":470},[944],{"type":36,"value":945},"{\n",{"type":31,"tag":387,"props":947,"children":948},{"class":389,"line":422},[949,954],{"type":31,"tag":387,"props":950,"children":951},{"style":416},[952],{"type":36,"value":953},"  \"data\"",{"type":31,"tag":387,"props":955,"children":956},{"style":470},[957],{"type":36,"value":958},": [{\n",{"type":31,"tag":387,"props":960,"children":961},{"class":389,"line":435},[962,967,972,977],{"type":31,"tag":387,"props":963,"children":964},{"style":416},[965],{"type":36,"value":966},"    \"event_name\"",{"type":31,"tag":387,"props":968,"children":969},{"style":470},[970],{"type":36,"value":971},": ",{"type":31,"tag":387,"props":973,"children":974},{"style":400},[975],{"type":36,"value":976},"\"Purchase\"",{"type":31,"tag":387,"props":978,"children":979},{"style":470},[980],{"type":36,"value":844},{"type":31,"tag":387,"props":982,"children":983},{"class":389,"line":448},[984,989,993,998],{"type":31,"tag":387,"props":985,"children":986},{"style":416},[987],{"type":36,"value":988},"    \"event_time\"",{"type":31,"tag":387,"props":990,"children":991},{"style":470},[992],{"type":36,"value":971},{"type":31,"tag":387,"props":994,"children":995},{"style":416},[996],{"type":36,"value":997},"1748448000",{"type":31,"tag":387,"props":999,"children":1000},{"style":470},[1001],{"type":36,"value":844},{"type":31,"tag":387,"props":1003,"children":1004},{"class":389,"line":461},[1005,1010,1014,1019],{"type":31,"tag":387,"props":1006,"children":1007},{"style":416},[1008],{"type":36,"value":1009},"    \"event_id\"",{"type":31,"tag":387,"props":1011,"children":1012},{"style":470},[1013],{"type":36,"value":971},{"type":31,"tag":387,"props":1015,"children":1016},{"style":400},[1017],{"type":36,"value":1018},"\"1748448000abc123\"",{"type":31,"tag":387,"props":1020,"children":1021},{"style":470},[1022],{"type":36,"value":844},{"type":31,"tag":387,"props":1024,"children":1025},{"class":389,"line":485},[1026,1031,1035,1040],{"type":31,"tag":387,"props":1027,"children":1028},{"style":416},[1029],{"type":36,"value":1030},"    \"event_source_url\"",{"type":31,"tag":387,"props":1032,"children":1033},{"style":470},[1034],{"type":36,"value":971},{"type":31,"tag":387,"props":1036,"children":1037},{"style":400},[1038],{"type":36,"value":1039},"\"https:\u002F\u002Fwww.roibase.com.tr\u002Fcheckout\"",{"type":31,"tag":387,"props":1041,"children":1042},{"style":470},[1043],{"type":36,"value":844},{"type":31,"tag":387,"props":1045,"children":1046},{"class":389,"line":498},[1047,1052],{"type":31,"tag":387,"props":1048,"children":1049},{"style":416},[1050],{"type":36,"value":1051},"    \"user_data\"",{"type":31,"tag":387,"props":1053,"children":1054},{"style":470},[1055],{"type":36,"value":1056},": {\n",{"type":31,"tag":387,"props":1058,"children":1059},{"class":389,"line":511},[1060,1065,1070,1075],{"type":31,"tag":387,"props":1061,"children":1062},{"style":416},[1063],{"type":36,"value":1064},"      \"external_id\"",{"type":31,"tag":387,"props":1066,"children":1067},{"style":470},[1068],{"type":36,"value":1069},": [",{"type":31,"tag":387,"props":1071,"children":1072},{"style":400},[1073],{"type":36,"value":1074},"\"7d8a...\"",{"type":31,"tag":387,"props":1076,"children":1077},{"style":470},[1078],{"type":36,"value":1079},"], \n",{"type":31,"tag":387,"props":1081,"children":1082},{"class":389,"line":25},[1083,1088,1092,1097],{"type":31,"tag":387,"props":1084,"children":1085},{"style":416},[1086],{"type":36,"value":1087},"      \"client_ip_address\"",{"type":31,"tag":387,"props":1089,"children":1090},{"style":470},[1091],{"type":36,"value":971},{"type":31,"tag":387,"props":1093,"children":1094},{"style":400},[1095],{"type":36,"value":1096},"\"85.34.x.x\"",{"type":31,"tag":387,"props":1098,"children":1099},{"style":470},[1100],{"type":36,"value":844},{"type":31,"tag":387,"props":1102,"children":1103},{"class":389,"line":536},[1104,1109,1113],{"type":31,"tag":387,"props":1105,"children":1106},{"style":416},[1107],{"type":36,"value":1108},"      \"client_user_agent\"",{"type":31,"tag":387,"props":1110,"children":1111},{"style":470},[1112],{"type":36,"value":971},{"type":31,"tag":387,"props":1114,"children":1115},{"style":400},[1116],{"type":36,"value":1117},"\"Mozilla\u002F5.0...\"\n",{"type":31,"tag":387,"props":1119,"children":1121},{"class":389,"line":1120},11,[1122],{"type":31,"tag":387,"props":1123,"children":1124},{"style":470},[1125],{"type":36,"value":1126},"    },\n",{"type":31,"tag":387,"props":1128,"children":1130},{"class":389,"line":1129},12,[1131,1136],{"type":31,"tag":387,"props":1132,"children":1133},{"style":416},[1134],{"type":36,"value":1135},"    \"custom_data\"",{"type":31,"tag":387,"props":1137,"children":1138},{"style":470},[1139],{"type":36,"value":1056},{"type":31,"tag":387,"props":1141,"children":1143},{"class":389,"line":1142},13,[1144,1149,1153,1158],{"type":31,"tag":387,"props":1145,"children":1146},{"style":416},[1147],{"type":36,"value":1148},"      \"currency\"",{"type":31,"tag":387,"props":1150,"children":1151},{"style":470},[1152],{"type":36,"value":971},{"type":31,"tag":387,"props":1154,"children":1155},{"style":400},[1156],{"type":36,"value":1157},"\"TRY\"",{"type":31,"tag":387,"props":1159,"children":1160},{"style":470},[1161],{"type":36,"value":844},{"type":31,"tag":387,"props":1163,"children":1165},{"class":389,"line":1164},14,[1166,1171,1175],{"type":31,"tag":387,"props":1167,"children":1168},{"style":416},[1169],{"type":36,"value":1170},"      \"value\"",{"type":31,"tag":387,"props":1172,"children":1173},{"style":470},[1174],{"type":36,"value":971},{"type":31,"tag":387,"props":1176,"children":1177},{"style":416},[1178],{"type":36,"value":1179},"99.99\n",{"type":31,"tag":387,"props":1181,"children":1183},{"class":389,"line":1182},15,[1184],{"type":31,"tag":387,"props":1185,"children":1186},{"style":470},[1187],{"type":36,"value":1188},"    }\n",{"type":31,"tag":387,"props":1190,"children":1192},{"class":389,"line":1191},16,[1193],{"type":31,"tag":387,"props":1194,"children":1195},{"style":470},[1196],{"type":36,"value":1197},"  }],\n",{"type":31,"tag":387,"props":1199,"children":1201},{"class":389,"line":1200},17,[1202,1207,1211],{"type":31,"tag":387,"props":1203,"children":1204},{"style":416},[1205],{"type":36,"value":1206},"  \"test_event_code\"",{"type":31,"tag":387,"props":1208,"children":1209},{"style":470},[1210],{"type":36,"value":971},{"type":31,"tag":387,"props":1212,"children":1213},{"style":400},[1214],{"type":36,"value":1215},"\"TEST12345\"\n",{"type":31,"tag":387,"props":1217,"children":1219},{"class":389,"line":1218},18,[1220],{"type":31,"tag":387,"props":1221,"children":1222},{"style":470},[1223],{"type":36,"value":1224},"}\n",{"type":31,"tag":32,"props":1226,"children":1227},{},[1228],{"type":36,"value":1229},"Test event code убирается перед запуском вживую. В production события появляются в Meta Events Manager > Data Sources > {pixel_id} > Events в течение 10 секунд. EMQ score обновляется в реальном времени на той же странице.",{"type":31,"tag":39,"props":1231,"children":1233},{"id":1232},"окно-атрибуции-и-incrementality-тестирование",[1234],{"type":36,"value":1235},"Окно атрибуции и incrementality-тестирование",{"type":31,"tag":32,"props":1237,"children":1238},{},[1239],{"type":36,"value":1240},"С CAPI окно атрибуции расширяется. Пиксель ограничен 7-day click \u002F 1-day view, а CAPI поддерживает 28-day click \u002F 1-day view. Однако для iOS-пользователей окно SKAdNetwork равно 0 дней (если ATT отклонён) или 3 дня (если ATT принят). CAPI не может преодолеть это ограничение — оно на уровне платформы.",{"type":31,"tag":32,"props":1242,"children":1243},{},[1244],{"type":36,"value":1245},"Для тестирования надёжности атрибуции проводится geo-based holdout test. Выбирается 10 городов Турции: в 5 CAPI активен, в 5 только пиксель. Через 4 недели сравнивается количество conversions между группами. В группе с CAPI conversion выглядит на 22-35% больше (потому что потерь сигнала меньше). Это не \"incrementality\" — это просто разница в измерении. Для реальной incrementality проводится Meta Conversion Lift test: кампания полностью отключается и смотрится organic conversion.",{"type":31,"tag":32,"props":1247,"children":1248},{},[1249,1258],{"type":31,"tag":1250,"props":1251,"children":1255},"a",{"href":1252,"rel":1253},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Fppc",[1254],"nofollow",[1256],{"type":36,"value":1257},"Перформанс-маркетинг (PPC)",{"type":36,"value":1259}," стратегии строятся на базе CAPI-инфраструктуры. Алгоритм bidding когда видит серверные conversions, быстрее обучается в campaign budget optimization (CBO). Learning phase сокращается с 5-7 дней до 2-3 дней.",{"type":31,"tag":39,"props":1261,"children":1263},{"id":1262},"частые-ошибки-и-слой-безопасности",[1264],{"type":36,"value":1265},"Частые ошибки и слой безопасности",{"type":31,"tag":32,"props":1267,"children":1268},{},[1269,1271,1276],{"type":36,"value":1270},"Самая распространённая ошибка: event_id на клиенте и на сервере не совпадают. Результат — Meta считает два отдельных conversion, ROAS растёт. Вторая ошибка: отправка plain-text email в параметр ",{"type":31,"tag":87,"props":1272,"children":1274},{"className":1273},[],[1275],{"type":36,"value":202},{"type":36,"value":1277},". Это нарушение GDPR, Meta отклоняет событие. Алгоритм хеширования должен быть SHA-256, email должен быть в нижнем регистре и без пробелов:",{"type":31,"tag":377,"props":1279,"children":1283},{"className":1280,"code":1281,"language":1282,"meta":15,"style":15},"language-python shiki shiki-themes github-dark","import hashlib\nemail = \"user@example.com\"\nhashed = hashlib.sha256(email.strip().lower().encode()).hexdigest()\n# 7d8a3c2e1f... — 64-символьный хеш\n","python",[1284],{"type":31,"tag":87,"props":1285,"children":1286},{"__ignoreMap":15},[1287,1300,1318,1335],{"type":31,"tag":387,"props":1288,"children":1289},{"class":389,"line":390},[1290,1295],{"type":31,"tag":387,"props":1291,"children":1292},{"style":704},[1293],{"type":36,"value":1294},"import",{"type":31,"tag":387,"props":1296,"children":1297},{"style":470},[1298],{"type":36,"value":1299}," hashlib\n",{"type":31,"tag":387,"props":1301,"children":1302},{"class":389,"line":422},[1303,1308,1313],{"type":31,"tag":387,"props":1304,"children":1305},{"style":470},[1306],{"type":36,"value":1307},"email ",{"type":31,"tag":387,"props":1309,"children":1310},{"style":704},[1311],{"type":36,"value":1312},"=",{"type":31,"tag":387,"props":1314,"children":1315},{"style":400},[1316],{"type":36,"value":1317}," \"user@example.com\"\n",{"type":31,"tag":387,"props":1319,"children":1320},{"class":389,"line":435},[1321,1326,1330],{"type":31,"tag":387,"props":1322,"children":1323},{"style":470},[1324],{"type":36,"value":1325},"hashed ",{"type":31,"tag":387,"props":1327,"children":1328},{"style":704},[1329],{"type":36,"value":1312},{"type":31,"tag":387,"props":1331,"children":1332},{"style":470},[1333],{"type":36,"value":1334}," hashlib.sha256(email.strip().lower().encode()).hexdigest()\n",{"type":31,"tag":387,"props":1336,"children":1337},{"class":389,"line":448},[1338],{"type":31,"tag":387,"props":1339,"children":1340},{"style":695},[1341],{"type":36,"value":1342},"# 7d8a3c2e1f... — 64-символьный хеш\n",{"type":31,"tag":32,"props":1344,"children":1345},{},[1346],{"type":36,"value":1347},"Слой безопасности: IP контейнера sGTM добавляется в белый список в Meta. События принимаются только с определённых IP. Access token ротируется каждые 90 дней. Если token скомпрометирован, его отзывают в Events Manager, новый создаётся за 30 секунд.",{"type":31,"tag":32,"props":1349,"children":1350},{},[1351],{"type":36,"value":1352},"Fallback сценарий пиксела: если sGTM недоступна (downtime Cloud Run, проблема DNS), клиентский пиксель отправляет событие напрямую Meta. Эта dual-send стратегия гарантирует 99.95% uptime. Но при этом дедупликация не работает — два события считаются отдельно. Мониторинг: логи контейнера sGTM идут в Stackdriver, при критических ошибках срабатывает Slack webhook.",{"type":31,"tag":32,"props":1354,"children":1355},{},[1356],{"type":36,"value":1357},"Meta CAPI + sGTM архитектура в 2026 году — это основа перформанс-маркетинга. По мере продолжения privacy update'ов в iOS браузерный tracking сужается ещё больше. Компании должны воспринимать эту миграцию не как \"тренд\", а как \"требование платформы\". Кампании без EMQ score 7+ застревают в learning phase, CPA взлетает на 40% и выше. Правильная настройка требует инженерной дисциплины — простые tutorials не подходят. Когда server-side инфраструктура объединяется со стратегией first-party данных, надёжность атрибуции поднимается до 95%. Дальше остаётся перевести тестовые события в production и мониторить EMQ score.",{"type":31,"tag":1359,"props":1360,"children":1361},"style",{},[1362],{"type":36,"value":1363},"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":15,"searchDepth":435,"depth":435,"links":1365},[1366,1367,1370,1373,1374],{"id":41,"depth":422,"text":44},{"id":62,"depth":422,"text":65,"children":1368},[1369],{"id":139,"depth":435,"text":142},{"id":367,"depth":422,"text":370,"children":1371},[1372],{"id":652,"depth":435,"text":655},{"id":1232,"depth":422,"text":1235},{"id":1262,"depth":422,"text":1265},"markdown","content:ru:marketing:server-side-conversions-meta-capi-sgtm.md","content","ru\u002Fmarketing\u002Fserver-side-conversions-meta-capi-sgtm.md","ru\u002Fmarketing\u002Fserver-side-conversions-meta-capi-sgtm","md",1781647449529]