[{"data":1,"prerenderedAt":942},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fru\u002Fdata\u002Fsgtm-conversion-api-production":13},{"i18nKey":4,"paths":5},"data-001-2026-07",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Fdata\u002Fserver-side-gtm-conversion-api-production","\u002Fen\u002Fdata\u002Fserver-side-gtm-conversion-api-production-deployment","\u002Fes\u002Fdata\u002Fsgtm-conversion-api-produccion","\u002Ffr\u002Fdata\u002Fserveur-gtm-et-api-conversion-de-zero-a-production","\u002Fit\u002Fdata\u002Fserver-side-gtm-conversion-api-production","\u002Fru\u002Fdata\u002Fsgtm-conversion-api-production","\u002Ftr\u002Fdata\u002Fserver-side-gtm-ve-conversion-api-sifirdan-productiona",{"_path":11,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":936,"_id":937,"_source":938,"_file":939,"_stem":940,"_extension":941},"data",false,"","Server-Side GTM и Conversion API: От нуля до Production","Практическое руководство по развертыванию контейнера sGTM на Cloud Run, интеграции Meta CAPI и повышению качества измерений через дедупликацию событий.","2026-07-31",[21,22,23,24,25],"server-side-gtm","conversion-api","cloud-run","event-deduplication","measurement",9,"Roibase",{"type":29,"children":30,"toc":929},"root",[31,39,46,51,56,72,78,83,103,113,121,242,271,297,314,350,356,361,379,429,548,567,607,612,712,732,750,756,761,794,819,837,855,889,894,900,913,918,923],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","График выведения cookies отложили в третий раз в 2024 году. Но критический перелом в маркетинговом измерении уже произошел: после ATT в iOS 14.5 коэффициент конверсий Facebook упал на 30-40%, session stitching в Google Analytics сломался, атрибуционные окна сократились с 7 дней до 1 дня. Server-side измерение — это уже не \"будущее\", а единственное инженерное решение для закрытия gaps атрибуции. В этой статье мы пошагово разберем развертывание Google Tag Manager на стороне сервера (sGTM) на Google Cloud Run с нуля, интеграцию с Meta Conversion API (CAPI), настройку дедупликации событий и приведение системы в production-ready состояние.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"анатомия-server-side-измерения",[44],{"type":37,"value":45},"Анатомия Server-Side Измерения",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"Client-side пиксели работают в браузере — когда пользователь загружает страницу, JavaScript код собирает событие и отправляет его на платформу. В этом процессе есть 3 точки разрыва: блокировщики объявлений (активны у 40% пользователей), механизмы защиты браузера типа ITP\u002FETP (в Safari время жизни cookie сокращено до 7 дней), отклонение на баннере согласия (30-50% отказов от GDPR в Европе). Server-side поток обходит эти ограничения, потому что события выходят не из браузера пользователя, а с вашего сервера — сигнал согласия измерен, first-party cookie прочитана, выполнена идентификация пользователя, обогащенные пакеты данных отправляются на платформы через HTTPS API.",{"type":32,"tag":33,"props":52,"children":53},{},[54],{"type":37,"value":55},"sGTM стандартизирует эту архитектуру. Теги, определенные в Web Container (GA4, Meta Pixel), срабатывают в браузере, но вместо прямой отправки события на платформу событие направляется на endpoint sGTM. Server Container получает это событие, извлекает параметры user_data (email, телефон, IP клиента, user agent), хеширует их, отправляет в тег Meta CAPI. Для дедупликации генерируется event_id — одинаковый event_id отправляется как пикселю, так и CAPI. Backend Meta считает событие с одинаковым event_id + event_name за одну конверсию, двойной подсчет предотвращается. Эта схема может поднять значения Facebook ROAS, упавшие на 30-40% после iOS 14.5, до уровня 15-20% (данные бенчмарка Meta 2023).",{"type":32,"tag":33,"props":57,"children":58},{},[59,61,70],{"type":37,"value":60},"Второе крупное преимущество server-side — вы освобождаете атрибуционное окно от ограничений браузера. В Safari из-за ITP невозможно использовать 7-дневную cookie — если пользователь вернется на 8-й день и совершит покупку, client-side пиксель это измерение не зафиксирует. Server-side first-party cookie хранится на вашем домене, имеет время жизни 1-2 года. Вы можете выполнять server-side идентификацию пользователя не только через cookie, но и через ваш CRM ID. Это работает вместе с ",{"type":32,"tag":62,"props":63,"children":67},"a",{"href":64,"rel":65},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Ffirstparty",[66],"nofollow",[68],{"type":37,"value":69},"архитектурой first-party данных",{"type":37,"value":71}," — вы объединяете client ID, user ID и email hash в один профиль.",{"type":32,"tag":40,"props":73,"children":75},{"id":74},"развертывание-sgtm-на-cloud-run",[76],{"type":37,"value":77},"Развертывание sGTM на Cloud Run",{"type":32,"tag":33,"props":79,"children":80},{},[81],{"type":37,"value":82},"Google Cloud Run — самый быстрый способ хостить контейнер sGTM, потому что существует готовый образ контейнера, автоскейлинг встроен, холодный старт занимает 100-200ms. Альтернативы — Cloud Run App Engine или Kubernetes, но с точки зрения ROI Cloud Run оптимален — для 100K событий в месяц стоимость составляет примерно $10-15 (вычисления Cloud Run + хранилище Firestore).",{"type":32,"tag":33,"props":84,"children":85},{},[86,92,94,101],{"type":32,"tag":87,"props":88,"children":89},"strong",{},[90],{"type":37,"value":91},"Шаг 1: Создание GCP проекта и активация биллинга.",{"type":37,"value":93}," В консоли создайте новый проект, привяжите биллинг-аккаунт. Настройте локальный CLI с помощью ",{"type":32,"tag":95,"props":96,"children":98},"code",{"className":97},[],[99],{"type":37,"value":100},"gcloud init",{"type":37,"value":102},".",{"type":32,"tag":33,"props":104,"children":105},{},[106,111],{"type":32,"tag":87,"props":107,"children":108},{},[109],{"type":37,"value":110},"Шаг 2: Создание Server Container для sGTM.",{"type":37,"value":112}," В Tag Manager UI создайте новый контейнер типа \"Server\". Нажмите \"Manually provision tagging server\" в правом верхнем углу — это позволит вам использовать собственный endpoint Cloud Run вместо автоматического App Engine.",{"type":32,"tag":33,"props":114,"children":115},{},[116],{"type":32,"tag":87,"props":117,"children":118},{},[119],{"type":37,"value":120},"Шаг 3: Развертывание сервиса Cloud Run.",{"type":32,"tag":122,"props":123,"children":127},"pre",{"className":124,"code":125,"language":126,"meta":16,"style":16},"language-bash shiki shiki-themes github-dark","gcloud run deploy sgtm-prod \\\n  --image=gcr.io\u002Fcloud-tagging-10302018\u002Fgtm-cloud-image:stable \\\n  --platform=managed \\\n  --region=europe-west1 \\\n  --allow-unauthenticated \\\n  --set-env-vars=CONTAINER_CONFIG=\u003Cserver_container_config_string>\n","bash",[128],{"type":32,"tag":95,"props":129,"children":130},{"__ignoreMap":16},[131,165,178,191,204,217],{"type":32,"tag":132,"props":133,"children":136},"span",{"class":134,"line":135},"line",1,[137,143,149,154,159],{"type":32,"tag":132,"props":138,"children":140},{"style":139},"--shiki-default:#B392F0",[141],{"type":37,"value":142},"gcloud",{"type":32,"tag":132,"props":144,"children":146},{"style":145},"--shiki-default:#9ECBFF",[147],{"type":37,"value":148}," run",{"type":32,"tag":132,"props":150,"children":151},{"style":145},[152],{"type":37,"value":153}," deploy",{"type":32,"tag":132,"props":155,"children":156},{"style":145},[157],{"type":37,"value":158}," sgtm-prod",{"type":32,"tag":132,"props":160,"children":162},{"style":161},"--shiki-default:#79B8FF",[163],{"type":37,"value":164}," \\\n",{"type":32,"tag":132,"props":166,"children":168},{"class":134,"line":167},2,[169,174],{"type":32,"tag":132,"props":170,"children":171},{"style":161},[172],{"type":37,"value":173},"  --image=gcr.io\u002Fcloud-tagging-10302018\u002Fgtm-cloud-image:stable",{"type":32,"tag":132,"props":175,"children":176},{"style":161},[177],{"type":37,"value":164},{"type":32,"tag":132,"props":179,"children":181},{"class":134,"line":180},3,[182,187],{"type":32,"tag":132,"props":183,"children":184},{"style":161},[185],{"type":37,"value":186},"  --platform=managed",{"type":32,"tag":132,"props":188,"children":189},{"style":161},[190],{"type":37,"value":164},{"type":32,"tag":132,"props":192,"children":194},{"class":134,"line":193},4,[195,200],{"type":32,"tag":132,"props":196,"children":197},{"style":161},[198],{"type":37,"value":199},"  --region=europe-west1",{"type":32,"tag":132,"props":201,"children":202},{"style":161},[203],{"type":37,"value":164},{"type":32,"tag":132,"props":205,"children":207},{"class":134,"line":206},5,[208,213],{"type":32,"tag":132,"props":209,"children":210},{"style":161},[211],{"type":37,"value":212},"  --allow-unauthenticated",{"type":32,"tag":132,"props":214,"children":215},{"style":161},[216],{"type":37,"value":164},{"type":32,"tag":132,"props":218,"children":220},{"class":134,"line":219},6,[221,226,232,237],{"type":32,"tag":132,"props":222,"children":223},{"style":161},[224],{"type":37,"value":225},"  --set-env-vars=CONTAINER_CONFIG=",{"type":32,"tag":132,"props":227,"children":229},{"style":228},"--shiki-default:#F97583",[230],{"type":37,"value":231},"\u003C",{"type":32,"tag":132,"props":233,"children":234},{"style":161},[235],{"type":37,"value":236},"server_container_config_string",{"type":32,"tag":132,"props":238,"children":239},{"style":228},[240],{"type":37,"value":241},">\n",{"type":32,"tag":33,"props":243,"children":244},{},[245,247,253,255,261,263,269],{"type":37,"value":246},"Строка ",{"type":32,"tag":95,"props":248,"children":250},{"className":249},[],[251],{"type":37,"value":252},"CONTAINER_CONFIG",{"type":37,"value":254}," копируется из Tag Manager UI (Settings → Container Configuration). Флаг ",{"type":32,"tag":95,"props":256,"children":258},{"className":257},[],[259],{"type":37,"value":260},"--allow-unauthenticated",{"type":37,"value":262}," критичен — web-клиентам нужен доступ к этому endpoint. Регион ",{"type":32,"tag":95,"props":264,"children":266},{"className":265},[],[267],{"type":37,"value":268},"europe-west1",{"type":37,"value":270}," обеспечивает соответствие GDPR и локализацию данных в Европе.",{"type":32,"tag":33,"props":272,"children":273},{},[274,279,281,287,289,295],{"type":32,"tag":87,"props":275,"children":276},{},[277],{"type":37,"value":278},"Шаг 4: Настройка пользовательского домена.",{"type":37,"value":280}," Cloud Run выделяет вам домен ",{"type":32,"tag":95,"props":282,"children":284},{"className":283},[],[285],{"type":37,"value":286},"*.run.app",{"type":37,"value":288},", но это рассматривается как third-party, некоторые браузеры обрабатывают cookie как SameSite=None. Создайте поддомен на вашем домене (например, ",{"type":32,"tag":95,"props":290,"children":292},{"className":291},[],[293],{"type":37,"value":294},"gtm.roibase.com.tr",{"type":37,"value":296},"). В Cloud Run → Domain Mappings настройте DNS-запись — перенаправьте CNAME на endpoint Cloud Run + SSL-сертификат автоматически создастся через Let's Encrypt.",{"type":32,"tag":33,"props":298,"children":299},{},[300,305,307,312],{"type":32,"tag":87,"props":301,"children":302},{},[303],{"type":37,"value":304},"Шаг 5: Хранилище состояния Firestore.",{"type":37,"value":306}," sGTM использует Firestore для хранения server-side состояния (например, сохранение заявленных client-side cookies). Активируйте Firestore в том же GCP-проекте, создайте базу данных в регионе ",{"type":32,"tag":95,"props":308,"children":310},{"className":309},[],[311],{"type":37,"value":268},{"type":37,"value":313},". Дополнительный код не требуется — контейнер sGTM автоматически его найдет.",{"type":32,"tag":33,"props":315,"children":316},{},[317,319,325,327,333,335,341,343,348],{"type":37,"value":318},"После развертывания вызов ",{"type":32,"tag":95,"props":320,"children":322},{"className":321},[],[323],{"type":37,"value":324},"curl https:\u002F\u002Fgtm.roibase.com.tr\u002Fhealthz",{"type":37,"value":326}," должен вернуть ",{"type":32,"tag":95,"props":328,"children":330},{"className":329},[],[331],{"type":37,"value":332},"200 OK",{"type":37,"value":334},". Проверьте логи с помощью ",{"type":32,"tag":95,"props":336,"children":338},{"className":337},[],[339],{"type":37,"value":340},"gcloud run logs read sgtm-prod",{"type":37,"value":342}," — любые ошибки парсинга ",{"type":32,"tag":95,"props":344,"children":346},{"className":345},[],[347],{"type":37,"value":252},{"type":37,"value":349}," здесь отобразятся.",{"type":32,"tag":40,"props":351,"children":353},{"id":352},"интеграция-meta-conversion-api-и-дедупликация",[354],{"type":37,"value":355},"Интеграция Meta Conversion API и дедупликация",{"type":32,"tag":33,"props":357,"children":358},{},[359],{"type":37,"value":360},"В Server Container создайте новый тег \"Facebook Conversion API\" (выберите из Tag Templates или используйте \"Facebook Conversions API by Stape\" из Community Template Gallery — более гибкий). Базовая конфигурация тега:",{"type":32,"tag":33,"props":362,"children":363},{},[364,369,371,377],{"type":32,"tag":87,"props":365,"children":366},{},[367],{"type":37,"value":368},"Маппинг Event Name:",{"type":37,"value":370}," Маппируйте ",{"type":32,"tag":95,"props":372,"children":374},{"className":373},[],[375],{"type":37,"value":376},"event_name",{"type":37,"value":378}," из Web Container на стандартные события Meta (purchase → Purchase, page_view → PageView). Вы можете отправлять пользовательские имена событий, но для дедупликации с пикселем лучше использовать стандартные события.",{"type":32,"tag":33,"props":380,"children":381},{},[382,387,389,395,397,403,405,411,413,419,421,427],{"type":32,"tag":87,"props":383,"children":384},{},[385],{"type":37,"value":386},"Параметры User Data:",{"type":37,"value":388}," Meta CAPI требует ",{"type":32,"tag":95,"props":390,"children":392},{"className":391},[],[393],{"type":37,"value":394},"em",{"type":37,"value":396}," (email), ",{"type":32,"tag":95,"props":398,"children":400},{"className":399},[],[401],{"type":37,"value":402},"ph",{"type":37,"value":404}," (телефон), ",{"type":32,"tag":95,"props":406,"children":408},{"className":407},[],[409],{"type":37,"value":410},"client_ip_address",{"type":37,"value":412},", ",{"type":32,"tag":95,"props":414,"children":416},{"className":415},[],[417],{"type":37,"value":418},"client_user_agent",{"type":37,"value":420},". sGTM автоматически читает это из заголовков request. Email\u002Fтелефон нужно отправлять из web-клиента — например, добавьте ",{"type":32,"tag":95,"props":422,"children":424},{"className":423},[],[425],{"type":37,"value":426},"user_email",{"type":37,"value":428}," в dataLayer:",{"type":32,"tag":122,"props":430,"children":434},{"className":431,"code":432,"language":433,"meta":16,"style":16},"language-javascript shiki shiki-themes github-dark","window.dataLayer.push({\n  event: 'purchase',\n  transaction_id: 'T12345',\n  value: 99.90,\n  currency: 'USD',\n  user_email: 'user@example.com'\n});\n","javascript",[435],{"type":32,"tag":95,"props":436,"children":437},{"__ignoreMap":16},[438,457,475,492,509,526,539],{"type":32,"tag":132,"props":439,"children":440},{"class":134,"line":135},[441,447,452],{"type":32,"tag":132,"props":442,"children":444},{"style":443},"--shiki-default:#E1E4E8",[445],{"type":37,"value":446},"window.dataLayer.",{"type":32,"tag":132,"props":448,"children":449},{"style":139},[450],{"type":37,"value":451},"push",{"type":32,"tag":132,"props":453,"children":454},{"style":443},[455],{"type":37,"value":456},"({\n",{"type":32,"tag":132,"props":458,"children":459},{"class":134,"line":167},[460,465,470],{"type":32,"tag":132,"props":461,"children":462},{"style":443},[463],{"type":37,"value":464},"  event: ",{"type":32,"tag":132,"props":466,"children":467},{"style":145},[468],{"type":37,"value":469},"'purchase'",{"type":32,"tag":132,"props":471,"children":472},{"style":443},[473],{"type":37,"value":474},",\n",{"type":32,"tag":132,"props":476,"children":477},{"class":134,"line":180},[478,483,488],{"type":32,"tag":132,"props":479,"children":480},{"style":443},[481],{"type":37,"value":482},"  transaction_id: ",{"type":32,"tag":132,"props":484,"children":485},{"style":145},[486],{"type":37,"value":487},"'T12345'",{"type":32,"tag":132,"props":489,"children":490},{"style":443},[491],{"type":37,"value":474},{"type":32,"tag":132,"props":493,"children":494},{"class":134,"line":193},[495,500,505],{"type":32,"tag":132,"props":496,"children":497},{"style":443},[498],{"type":37,"value":499},"  value: ",{"type":32,"tag":132,"props":501,"children":502},{"style":161},[503],{"type":37,"value":504},"99.90",{"type":32,"tag":132,"props":506,"children":507},{"style":443},[508],{"type":37,"value":474},{"type":32,"tag":132,"props":510,"children":511},{"class":134,"line":206},[512,517,522],{"type":32,"tag":132,"props":513,"children":514},{"style":443},[515],{"type":37,"value":516},"  currency: ",{"type":32,"tag":132,"props":518,"children":519},{"style":145},[520],{"type":37,"value":521},"'USD'",{"type":32,"tag":132,"props":523,"children":524},{"style":443},[525],{"type":37,"value":474},{"type":32,"tag":132,"props":527,"children":528},{"class":134,"line":219},[529,534],{"type":32,"tag":132,"props":530,"children":531},{"style":443},[532],{"type":37,"value":533},"  user_email: ",{"type":32,"tag":132,"props":535,"children":536},{"style":145},[537],{"type":37,"value":538},"'user@example.com'\n",{"type":32,"tag":132,"props":540,"children":542},{"class":134,"line":541},7,[543],{"type":32,"tag":132,"props":544,"children":545},{"style":443},[546],{"type":37,"value":547},"});\n",{"type":32,"tag":33,"props":549,"children":550},{},[551,553,558,560,565],{"type":37,"value":552},"В Tag Template сделайте маппинг ",{"type":32,"tag":95,"props":554,"children":556},{"className":555},[],[557],{"type":37,"value":426},{"type":37,"value":559}," → ",{"type":32,"tag":95,"props":561,"children":563},{"className":562},[],[564],{"type":37,"value":394},{"type":37,"value":566},". sGTM захеширует этот email в SHA256 и отправит на Meta (не отправляйте plain text — нарушение GDPR\u002FKVKK).",{"type":32,"tag":33,"props":568,"children":569},{},[570,575,577,583,585,591,593,598,600,605],{"type":32,"tag":87,"props":571,"children":572},{},[573],{"type":37,"value":574},"Event Deduplication:",{"type":37,"value":576}," Добавьте параметр ",{"type":32,"tag":95,"props":578,"children":580},{"className":579},[],[581],{"type":37,"value":582},"eventID",{"type":37,"value":584}," в client-side тег Facebook Pixel. Отправляйте этот же ID на server-side. В CAPI теге sGTM используйте тот же ",{"type":32,"tag":95,"props":586,"children":588},{"className":587},[],[589],{"type":37,"value":590},"event_id",{"type":37,"value":592},". Backend Meta в течение 48 часов будет считать одну и ту же комбинацию ",{"type":32,"tag":95,"props":594,"children":596},{"className":595},[],[597],{"type":37,"value":590},{"type":37,"value":599}," + ",{"type":32,"tag":95,"props":601,"children":603},{"className":602},[],[604],{"type":37,"value":376},{"type":37,"value":606}," как одну конверсию.",{"type":32,"tag":33,"props":608,"children":609},{},[610],{"type":37,"value":611},"Пример client-side pixel кода:",{"type":32,"tag":122,"props":613,"children":615},{"className":431,"code":614,"language":433,"meta":16,"style":16},"fbq('track', 'Purchase', {\n  value: 99.90,\n  currency: 'USD'\n}, {\n  eventID: 'T12345-1627384912'  \u002F\u002F transaction_id + Unix timestamp\n});\n",[616],{"type":32,"tag":95,"props":617,"children":618},{"__ignoreMap":16},[619,651,666,678,686,705],{"type":32,"tag":132,"props":620,"children":621},{"class":134,"line":135},[622,627,632,637,641,646],{"type":32,"tag":132,"props":623,"children":624},{"style":139},[625],{"type":37,"value":626},"fbq",{"type":32,"tag":132,"props":628,"children":629},{"style":443},[630],{"type":37,"value":631},"(",{"type":32,"tag":132,"props":633,"children":634},{"style":145},[635],{"type":37,"value":636},"'track'",{"type":32,"tag":132,"props":638,"children":639},{"style":443},[640],{"type":37,"value":412},{"type":32,"tag":132,"props":642,"children":643},{"style":145},[644],{"type":37,"value":645},"'Purchase'",{"type":32,"tag":132,"props":647,"children":648},{"style":443},[649],{"type":37,"value":650},", {\n",{"type":32,"tag":132,"props":652,"children":653},{"class":134,"line":167},[654,658,662],{"type":32,"tag":132,"props":655,"children":656},{"style":443},[657],{"type":37,"value":499},{"type":32,"tag":132,"props":659,"children":660},{"style":161},[661],{"type":37,"value":504},{"type":32,"tag":132,"props":663,"children":664},{"style":443},[665],{"type":37,"value":474},{"type":32,"tag":132,"props":667,"children":668},{"class":134,"line":180},[669,673],{"type":32,"tag":132,"props":670,"children":671},{"style":443},[672],{"type":37,"value":516},{"type":32,"tag":132,"props":674,"children":675},{"style":145},[676],{"type":37,"value":677},"'USD'\n",{"type":32,"tag":132,"props":679,"children":680},{"class":134,"line":193},[681],{"type":32,"tag":132,"props":682,"children":683},{"style":443},[684],{"type":37,"value":685},"}, {\n",{"type":32,"tag":132,"props":687,"children":688},{"class":134,"line":206},[689,694,699],{"type":32,"tag":132,"props":690,"children":691},{"style":443},[692],{"type":37,"value":693},"  eventID: ",{"type":32,"tag":132,"props":695,"children":696},{"style":145},[697],{"type":37,"value":698},"'T12345-1627384912'",{"type":32,"tag":132,"props":700,"children":702},{"style":701},"--shiki-default:#6A737D",[703],{"type":37,"value":704},"  \u002F\u002F transaction_id + Unix timestamp\n",{"type":32,"tag":132,"props":706,"children":707},{"class":134,"line":219},[708],{"type":32,"tag":132,"props":709,"children":710},{"style":443},[711],{"type":37,"value":547},{"type":32,"tag":33,"props":713,"children":714},{},[715,717,722,724,730],{"type":37,"value":716},"В Server-side теге маппируйте параметр ",{"type":32,"tag":95,"props":718,"children":720},{"className":719},[],[721],{"type":37,"value":590},{"type":37,"value":723}," на ",{"type":32,"tag":95,"props":725,"children":727},{"className":726},[],[728],{"type":37,"value":729},"{{event.event_id}}",{"type":37,"value":731}," (Event Data → event_id field). Таким образом, и пиксель, и CAPI отправляют одинаковый event_id — двойной подсчет упадет практически до нуля.",{"type":32,"tag":33,"props":733,"children":734},{},[735,740,742,748],{"type":32,"tag":87,"props":736,"children":737},{},[738],{"type":37,"value":739},"Тестирование:",{"type":37,"value":741}," Перейдите в Meta Events Manager → Test Events, получите тестовый код события, добавьте параметр ",{"type":32,"tag":95,"props":743,"children":745},{"className":744},[],[746],{"type":37,"value":747},"test_event_code",{"type":37,"value":749}," в тег sGTM. Триггерьте страницу, посмотрите, приходит ли событие в Events Manager. Для дедупликации триггерьте и пиксель, и CAPI одновременно — в Events Manager в столбце \"Deduplication\" должно появиться \"Deduplicated\".",{"type":32,"tag":40,"props":751,"children":753},{"id":752},"production-checklist-и-мониторинг",[754],{"type":37,"value":755},"Production Checklist и Мониторинг",{"type":32,"tag":33,"props":757,"children":758},{},[759],{"type":37,"value":760},"Перед переводом в production проверьте 5 критических пунктов:",{"type":32,"tag":33,"props":762,"children":763},{},[764,769,771,777,778,784,786,792],{"type":32,"tag":87,"props":765,"children":766},{},[767],{"type":37,"value":768},"1. Интеграция Consent Mode v2.",{"type":37,"value":770}," Соответствие GDPR\u002FKVKK требует Google Consent Mode v2 (обязателен с марта 2024). В Web Container интегрируйте CMP (Consent Management Platform), push'ьте статус согласия пользователя (",{"type":32,"tag":95,"props":772,"children":774},{"className":773},[],[775],{"type":37,"value":776},"ad_storage",{"type":37,"value":412},{"type":32,"tag":95,"props":779,"children":781},{"className":780},[],[782],{"type":37,"value":783},"analytics_storage",{"type":37,"value":785},") в dataLayer. sGTM может читать этот статус и фильтровать события — например, если ",{"type":32,"tag":95,"props":787,"children":789},{"className":788},[],[790],{"type":37,"value":791},"ad_storage: denied",{"type":37,"value":793},", не триггерьте тег Meta CAPI или отправляйте только агрегированные события (без user_data).",{"type":32,"tag":33,"props":795,"children":796},{},[797,802,804,810,812,817],{"type":32,"tag":87,"props":798,"children":799},{},[800],{"type":37,"value":801},"2. Rate limiting.",{"type":37,"value":803}," Cloud Run по умолчанию имеет параллелизм 80 запросов на контейнер. При скачках трафика (например, Black Friday) можно превысить этот лимит. Установите ",{"type":32,"tag":95,"props":805,"children":807},{"className":806},[],[808],{"type":37,"value":809},"--max-instances",{"type":37,"value":811}," между 10 и 20, Cloud Run будет автоматически масштабироваться. Для контроля затрат установите лимит ",{"type":32,"tag":95,"props":813,"children":815},{"className":814},[],[816],{"type":37,"value":809},{"type":37,"value":818}," — неконтролируемое масштабирование может привести к счету свыше $1000.",{"type":32,"tag":33,"props":820,"children":821},{},[822,827,829,835],{"type":32,"tag":87,"props":823,"children":824},{},[825],{"type":37,"value":826},"3. Логирование и алертинг ошибок.",{"type":37,"value":828}," sGTM не имеет собственного встроенного механизма логирования — логи stdout\u002Fstderr в Cloud Run попадают в Cloud Logging. Для перехвата ошибок HTTP 400\u002F500 от Meta CAPI создайте Custom Tag Template, логирующий ответ ",{"type":32,"tag":95,"props":830,"children":832},{"className":831},[],[833],{"type":37,"value":834},"fetch()",{"type":37,"value":836},". В Cloud Logging → Log-based Metrics создайте метрику \"capi_error_rate\", установите алерт в Cloud Monitoring (порог: более 5 ошибок\u002Fмин).",{"type":32,"tag":33,"props":838,"children":839},{},[840,845,847,853],{"type":32,"tag":87,"props":841,"children":842},{},[843],{"type":37,"value":844},"4. Оптимизация задержки.",{"type":37,"value":846}," Response time sGTM влияет на скорость загрузки веб-страницы. Cloud Run cold start занимает 100-200ms, warm instance — 10-20ms. Держите минимум 1 экземпляр в рабочем состоянии (",{"type":32,"tag":95,"props":848,"children":850},{"className":849},[],[851],{"type":37,"value":852},"--min-instances=1",{"type":37,"value":854},") — избежите холодного старта, но добавите idle-стоимость $5-10\u002Fмесяц. Альтернатива: в Cloud Run → CPU allocation выберите \"CPU is always allocated\" — instance будет тратить CPU даже в idle, но холодного старта не будет.",{"type":32,"tag":33,"props":856,"children":857},{},[858,863,865,871,873,879,881,887],{"type":32,"tag":87,"props":859,"children":860},{},[861],{"type":37,"value":862},"5. Server-side GA4 + CAPI одновременно.",{"type":37,"value":864}," Перенесите GA4 также на server-side — тег GA4 Server-Side встроен в sGTM. Одно событие может идти и в GA4, и в CAPI. Обратите внимание: ",{"type":32,"tag":95,"props":866,"children":868},{"className":867},[],[869],{"type":37,"value":870},"client_id",{"type":37,"value":872}," GA4 и ",{"type":32,"tag":95,"props":874,"children":876},{"className":875},[],[877],{"type":37,"value":878},"fbp",{"type":37,"value":880}," CAPI читаются из разных cookies. Для консистентности идентификации пошлите в dataLayer ",{"type":32,"tag":95,"props":882,"children":884},{"className":883},[],[885],{"type":37,"value":886},"user_id",{"type":37,"value":888},", используйте его и в GA4, и в CAPI — обеспечите кроссплатформенную консистентность атрибуции.",{"type":32,"tag":33,"props":890,"children":891},{},[892],{"type":37,"value":893},"На первой неделе production ежедневно проверяйте Events Manager: match rate (совпадения email\u002Fтелефон), count событий (соотношение client vs server), процент дедупликации. Бенчмарк Meta: 60-70% server-side событий должны найти совпадение user_data (если email захеширован). Если match rate ниже 30%, качество user_data низко — нормализуйте email (lowercase + trim) или отправляйте телефон в формате E.164.",{"type":32,"tag":40,"props":895,"children":897},{"id":896},"стратегические-слои-server-side-измерения",[898],{"type":37,"value":899},"Стратегические Слои Server-Side Измерения",{"type":32,"tag":33,"props":901,"children":902},{},[903,905,911],{"type":37,"value":904},"sGTM — это не просто технический контейнер, это решение об архитектуре маркетинговых данных. Первый слой: обогащение событий — на server-side вы можете обогащать данные CRM (чтение LTV клиента из BigQuery, добавление margin продукта из каталога). Например, добавляя параметр ",{"type":32,"tag":95,"props":906,"children":908},{"className":907},[],[909],{"type":37,"value":910},"customer_ltv",{"type":37,"value":912}," к событию покупки, вы подсеиваете value-based lookalike audience в Meta.",{"type":32,"tag":33,"props":914,"children":915},{},[916],{"type":37,"value":917},"Второй слой: мультиплатформенная оркестрация. Из одного контейнера sGTM вы можете отправлять одно событие в Meta CAPI, Google Ads Enhanced Conversions, TikTok Events API, Snapchat CAPI. Каждая платформа использует разные правила маппинга user_data (TikTok — phone hash SHA256, Google — email SHA256 + trim) — в Tag Templates настройте эту нормализацию.",{"type":32,"tag":33,"props":919,"children":920},{},[921],{"type":37,"value":922},"Третий слой: incrementality measurement. Вы можете A\u002FB тестировать server-side события, разделяя трафик на control\u002Ftreatment — например, отправляя CAPI событие только 10% трафика для измерения lift",{"type":32,"tag":924,"props":925,"children":926},"style",{},[927],{"type":37,"value":928},"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":180,"depth":180,"links":930},[931,932,933,934,935],{"id":42,"depth":167,"text":45},{"id":74,"depth":167,"text":77},{"id":352,"depth":167,"text":355},{"id":752,"depth":167,"text":755},{"id":896,"depth":167,"text":899},"markdown","content:ru:data:sgtm-conversion-api-production.md","content","ru\u002Fdata\u002Fsgtm-conversion-api-production.md","ru\u002Fdata\u002Fsgtm-conversion-api-production","md",1785967485843]