Server Attribution — sGTM, CAPI, Privacy Sandbox
860 subscribers
17 photos
2 videos
41 links
Server-side GTM, Facebook Conversions API (CAPI), TikTok Events API,
Google Privacy Sandbox, Topics API, Attribution Reporting. Как считать
конверсии когда cookies умирают. Гайды Simo Ahava и IAB Tech Lab
на русском. Канал сети public.tg.
Download Telegram
LinkedIn CAPI подключили. А потом забыли, что CRM-матчинг тоже надо обслуживать

У Zapier разложили базовую вещь: есть большая разница между «CRM и LinkedIn соединены» и «интеграция реально поддерживается». Большинство B2B-маркетинговых команд уже внедрили LinkedIn Conversions API, но этого недостаточно.

Смысл для server-side трекинга прямой: CAPI — не проект, который закрыли после первого потока событий. Это операционный стандарт. Если сигналы идут с задержкой, дублируются или теряют связку с CRM, воронка начинает врать на уровне deal stage, а не только на уровне ad click.

Для аудитории канала тут фокус на трёх вещах: регулярный контроль completeness, timeliness и consistency сигналов; проверка, что CRM-поля реально мапятся в события; и отдельный мониторинг качества after setup. Иначе ситуация классическая: «всё отправили», а через месяц матчинг уже просел.

Быстрый чек на завтра: кто у вас отвечает не за запуск CAPI, а за его maintenance?
This media is not supported in your browser
VIEW IN TELEGRAM
Арбитраж на вертикаль астрологии: как начать с ней работать

Астрология — белая вертикаль с низким порогом входа для CPA-арбитража. Можно создать собственного астробота через конструктор или нейросеть, подключив платежи через сервисы вроде Tribute, либо работать через партнёрки с готовыми ботами и SP-офферами. Также доступны нишевые площадки типа Bongacams с эзотериками (A. W. Empire). Трафик заливают со стандартных источников без клоачинга — Яндекс Директ, МТС Ads, ВК. Вертикаль привлекательна скромной к…

➡️ Читайте на сайте: https://aff.top/blog/arbitrazh-na-vertikal-astrologii-kak-nachat-s-nei-rabotat

🧠 Ещё больше инсайтов → в канале AFF.top
До 30% конверсий теряются без S2S Postback — и это не проблема пикселя

AppsFlyer оценивает: без настроенной передачи через S2S Postback до 30% конверсий могут теряться или уходить не в тот источник. В iGaming CPI в Facebook на PWA/WebView может расти в 2–3 раза во время обновлений алгоритмов.

Для server-side атрибуции это простой чек: если постбек живёт отдельно от sGTM/CAPI, дедупликация и source mapping начинают расходиться. Завтра проверьте цепочку:
click_id / fbclid сохраняется до события;
event_id одинаковый для Pixel + CAPI;
— postback не режет user_agent, IP и timestamp;
— статусы rejected/duplicate смотрятся не в рекламном кабинете, а в логах endpoint.

Privacy Sandbox не отменяет S2S. Она делает плохую серверную схему заметнее.
ЕСИА на 110 млн учёток рядом с CAPI — плохая идея для вашего sGTM

Максут Шадаев на ПМЭФ говорил о возрастной верификации; базой в РФ называют «Госуслуги»/ЕСИА с 110+ млн подтверждённых учётных записей. Пилот для технологий — Roblox. В ЕС с 2024 DSA требует age-check у VLOP: Google, Meta, TikTok.

Для server-side стека это не повод тащить возраст, паспортные статусы или ESIA-derived поля в GTM Server и дальше в CAPI/Events API. Разделяйте identity/age-gate контур и рекламные события: в sGTM оставляйте только разрешённые match keys, consent flags и event_id для deduplication.

Завтра стоит проверить:
— нет ли age/status/user_verified в GA4 → sGTM payload;
— не мапятся ли такие поля в Meta user_data;
— логируются ли они в request/response logs Cloud Run;
— есть ли отдельный denylist на уровне Custom Client или Transformations.

Иначе оптимизация sGTM превращается в сбор лишней чувствительной атрибуции, которую потом трудно удалить из логов и downstream-коннекторов.
Hashing PII для Meta CAPI ломают не SHA-256, а плохая нормализация

Если email/phone хешируются «как есть», EMQ растёт хуже ожидаемого. Meta сравнивает уже нормализованные значения, поэтому ошибка обычно не в криптографии, а в подготовке данных до хеша.

Что делать:
— email: trim, lowercase, убрать пробелы;
— phone: E.164 без пробелов, скобок и тире;
— имена/город/region: lowercase, trim, без лишних символов;
— хеш: SHA-256 только после нормализации;
— не смешивать raw и hashed поля в одном пайплайне.

Типовая ошибка: в браузере хешируют одно значение, на сервере — другое. В итоге deduplication и match rate падают, а в дебаге видно «правильный SHA-256», который просто посчитан из неправильной строки.

Для CAPI важна не только отправка user_data, но и стабильность формата: один и тот же email должен давать один и тот же хеш независимо от источника. Если есть CRM, checkout и формы — нормализация должна быть общей функцией, а не тремя разными скриптами.

Вывод простой: сначала привести PII к одному формату, потом хешировать, и только после этого строить CAPI-поток. Иначе вы оптимизируете не атрибуцию, а шум.
Типовая архитектура sGTM для арбитража: что ставить в первый контур, а что не тащить на сервер

В арбитражных сетапах sGTM обычно нужен не «для галочки», а как слой нормализации событий между лендингом, CRM и рекламными системами.

Базовая схема простая:
— Web → sGTM endpoint
— sGTM → Meta CAPI / TikTok Events API / Google Ads Enhanced Conversions
— отдельный поток для offline-конверсий из CRM
— единый event_id для дедупликации Pixel + CAPI

На входе серверу передают только то, что реально нужно для матчингa:
— fbp / fbc
— client_ip / user_agent
— email_hash / phone_hash, если есть consent
— click_id, если он сохраняется от клика до лида

На сервере полезно сразу делать три вещи:
— нормализацию полей: lowercase, trim, SHA-256 для PII
— роутинг по типу события: lead, sale, qualified_lead
— фильтрацию мусора: пустые поля, дубли, тестовые отправки

Отдельная ошибка — строить sGTM как «прокладку для всего». Если через него гонять каждый pageview и лишние кастомные хиты, усложняется дебаг и растёт шум в логах. Для арбитража сервер должен быть коротким: принять, обогатить, дедуплицировать, отправить.

Если нужен устойчивый сетап, начинайте с трёх событий: page_view, lead, purchase. Всё остальное добавляйте только когда понятна схема атрибуции и есть контроль качества событий.
Cloud Run для sGTM: как собрать контейнер и не утонуть в биллинге

Для server-side GTM Cloud Run обычно берут, когда нужен автоскейл без ручного тюнинга VPS. Базовая схема простая: контейнер sGTM, HTTPS-эндпоинт, домен на первом уровне и отдельный бюджет на запросы, CPU и память.

Что важно в настройке:
— держите минимальное число инстансов близко к нулю, если трафик волнообразный;
— выставляйте лимит по памяти с запасом, иначе начнутся рестарты под пиками;
— отключайте лишние маршруты и клиенты в контейнере, чтобы не платить за пустые вызовы;
— логируйте только то, что нужно для дебага, иначе Cloud Logging быстро раздувает счёт.

По стоимости чаще всего бьют не сами хиты, а фон: простои инстансов, лишние логи, долгие холодные старты и лишний CPU на обработке больших payload. Если шлёте много событий, выгоднее оптимизировать размер запросов и сократить число промежуточных тегов, чем «докручивать» мощность.

Практика простая: сначала меряйте запросы в минуту и средний размер события, потом уже выбирайте память и concurrency. Для стабильного потока часто достаточно одного аккуратно настроенного сервиса, а не отдельной инфраструктуры на каждый проект.

Итог: Cloud Run хорошо подходит для sGTM, если считать не только трафик, но и логи, инстансы и холодные старты. Сначала режьте лишнее в контейнере, потом — масштабируйте.
Topics API: как браузер выбирает интересы и почему это не замена cookie

Privacy Sandbox с Topics работает так: браузер сам назначает пользователю несколько тем интереса на основе истории посещений. Сайт не получает длинный профиль, а только ограниченный список категорий, которые хранятся локально в браузере.

Механика простая:
— браузер смотрит на домены, которые посещал пользователь;
— маппит их в темы из таксономии;
— отдаёт сайту только часть тем, обычно несколько штук;
— темы периодически обновляются, а старые со временем выпадают.

Для performance это не “новый user ID”, а очень грубый сигнал для сегментации. Его нельзя воспринимать как источник точной атрибуции: он не заменяет first-party data, event_id, CAPI или Enhanced Conversions.

Где Topics может помочь:
— контекстные сценарии, когда нужен дополнительный interest-signal;
— расширение аудиторий на уровне браузера;
— тесты в связке с другими privacy-preserving API.

На практике полезно смотреть не на сам факт наличия Topics, а на качество всей цепочки: consent, first-party события, server-side доставка, дедупликация. Без этого Topics остаётся слабым вспомогательным сигналом.

Если строите атрибуцию на долгую дистанцию, Topics стоит воспринимать как один из входов в систему, а не как основу измерения.
TTL для server-side cookies: слишком длинный срок тоже ломает атрибуцию

Для sGTM-cookie нет одного «правильного» TTL. Слишком короткий срок — теряете возвраты и повторные сессии. Слишком длинный — тащите в атрибуцию устаревшие идентификаторы, а это раздувает overlap между каналами и ухудшает разбор дедупликации.

Практика такая:
— session-id: TTL 30 минут, чтобы не склеивать разные визиты;
— click-id / fbc-подобные параметры: 7–30 дней, если у вас длинный цикл сделки;
— first-party identifier: 90–180 дней, если есть логин или стабильный CRM-key;
— consent-state: отдельный короткий TTL, чтобы не держать решение дольше нужного.

Главное правило: TTL должен отражать жизненный цикл события, а не «чтобы было подольше». Для e-commerce обычно достаточно 30–90 дней для маркетинговых cookie и короткого окна для session-логики. Для B2B можно расширять срок, но только если этот идентификатор реально участвует в матчингe и не устаревает между визитами.

Проверьте два сценария: повторный визит через неделю и конверсию после серии касаний. Если событие матчится по старому cookie там, где уже должен работать новый идентификатор, TTL завышен. Если же EMQ и deduplication проседают из-за раннего обнуления — TTL слишком короткий.

Выбирайте TTL от данных, а не от привычки: сначала карта идентификаторов, потом срок жизни, и только потом — настройка cookie.
Protected Audience API: почему lookalike не исчезает, а меняет место исполнения

Lookalike в классическом виде завязан на передачу аудитории в ad platform. В Privacy Sandbox логика смещается: сегменты остаются first-party, а отбор релевантных объявлений происходит локально, на стороне браузера.

Если упростить, Protected Audience API работает так:
— сайт-источник формирует audience и передаёт browser-side сигнал
— браузер хранит membership без раскрытия списка наружу
— при показе рекламы запускается on-device auction между подходящими креативами

Для performance это важно по двум причинам:
— меньше dependence на third-party cookies
— меньше прозрачности для внешнего ретаргетинга в привычном виде

Что готовить вместо «аудитории lookalike»:
— качественные first-party сегменты: high-intent, repeat buyers, lead stages
— чистую event taxonomy, чтобы audience строилась по понятным триггерам
— server-side signals: conversion, value, event_id, consent state
— креативные наборы под разные intent-группы, а не один broad bucket

На практике Protected Audience лучше думать не как замену lookalike 1:1, а как новый механизм доставки релевантности. Если у вас аудитория описана плохо, браузеру просто нечего будет оптимизировать.

Самая частая ошибка — пытаться перенести старую логику «экспортируем список, потом крутим похожих». Здесь выигрывает тот, у кого first-party данные чище, а события размечены стабильнее.

Вывод простой: строить нужно не «lookalike», а систему сегментов, сигналов и креативов, которую можно обслуживать без зависимости от cookie-матча.
This media is not supported in your browser
VIEW IN TELEGRAM
Anthropic отменили доступ к Claude Fable 5

Fable 5, нейросетевая модель, которая должна была революционизировать индустрию, была отключена через три дня после релиза из-за ограничений на использование для граждан США и найденной уязвимости в безопасности. Компания не смогла технически реализовать географические ограничения и вынуждена была отозвать публично опубликованную модель со всех аккаунтов — первый такой прецедент. Это может стать предвестником нового тренда, когда компании будут …

➡️ Читайте на сайте: https://aff.top/blog/anthropic-otmenili-dostup-k-claude-fable-5

🧠 Ещё больше инсайтов → в канале AFF.top
This media is not supported in your browser
VIEW IN TELEGRAM
Арбитраж трафика для новичков в 2026: стоит ли начинать?

Три опытных арбитражника — Дима Leto, Михаил Харди и Роман Croyman — развенчивают миф о лёгких деньгах в CPA-арбитраже. Главный вывод: успех требует серьёзного бюджета (минимум $1000, реально больше), года работы с убытками и постоянного тестирования. Маркетинговое образование помогает, но не критично — важнее опыт в конкретной нише. Кейсы с миллионными прибылями создают завышенные ожидания, но без них новичок не верит в возможность вообще. Лучш…

➡️ Читайте на сайте: https://aff.top/blog/arbitrazh-trafika-dlia-novichkov-v-2026-stoit-li-nachinat

🧠 Ещё больше инсайтов → в канале AFF.top
Attribution Reporting API в Chrome: что реально уже можно планировать в стек

Attribution Reporting API — это не замена CAPI или sGTM, а отдельный канал измерения конверсий без передачи user-level данных. Он строится вокруг двух режимов: event-level для грубой связки клика и конверсии, и aggregatable — для сводной аналитики по шумным отчётам.

Если смотреть на внедрение в продуктовый стек, важно закладывать не «ещё один пиксель», а новую логику сбора:
— на стороне сайта помечать источники трафика через eligible click / view события;
— на стороне конверсии задавать триггер регистрации отчёта;
— не ждать привычного уровня детализации по user journey: атрибуция становится ограниченной и с задержкой;
— заранее проверить, где у вас сейчас зависимость от third-party cookies и postback-логики.

Для аналитики это означает сдвиг от user-level reconciliation к model-friendly measurement. Хорошая практика — держать параллельно: Pixel/CAPI для оптимизации платформ, server-side first-party события для внутреннего BI, и Attribution Reporting как privacy-preserving слой для браузерной среды.

Типовая ошибка — пытаться сравнивать отчёты API 1:1 с GA4 или ad platform dashboards. Сравнивать надо не сырые числа, а тренд, покрытие и долю событий, которые вообще можно измерить без идентификаторов. Если этого не сделать, команда будет чинить не трекинг, а ожидания.

Лучший старт — описать карту событий: какие конверсии критичны, где допустима агрегация, где нужен event-level сигнал, и какие разрывы нужно закрывать sGTM. Тогда Attribution Reporting API становится не экспериментом, а ещё одним слоем атрибуции в cookieless-архитектуре.
Custom domain для sGTM: зачем он нужен и где чаще всего ломают трекинг

Custom domain в server-side трекинге — это не про «красивый URL», а про контроль над first-party контекстом. Когда трафик уходит на отдельный домен вида sgtm.example.com, вы снижаете зависимость от стороннего хоста и получаете предсказуемее работу cookies, consent и маршрутизации.

Что важно сделать до запуска:
— Использовать поддомен основного сайта, а не отдельный брендовый домен
— Привести DNS, TLS и сертификаты к стабильной схеме
— Проверить, что endpoint принимает только нужные методы и пути
— Сразу настроить логирование запросов и ошибок 4xx/5xx

Типовая ошибка — отправлять все события на custom domain, но забыть про согласованность cookie scope. В итоге fbp, fbc, client_id и собственные идентификаторы живут в разных контекстах, а дедупликация начинает «плавать».

Еще один частый баг — смешивать server endpoint для трекинга и публичный API на одном поддомене без маршрутизации. Тогда кэш, редиректы и WAF могут резать события, особенно если не разделены пути для collect и admin-запросов.

Минимальный чек-лист:
— один поддомен под сбор событий
— отдельные пути для ingestion и healthcheck
— отсутствие лишних редиректов
— same-site/cookie policy проверены в браузере и в сетевых логах
— тест на дубли и потерю event_id

Если custom domain не помогает вам лучше видеть запросы и стабильнее передавать идентификаторы, значит он настроен как «витрина», а не как транспорт.
This media is not supported in your browser
VIEW IN TELEGRAM
Claude скоро станет по паспорту

С 8 июля 2026 года все модели Claude потребуют верификации личности через паспорт и селфи. Это произошло после закрытия доступа к Fable 5, выпущенной в открытый доступ буквально на неделю. Ограничение касается веб-версии на сайте Anthropic, но остаётся неясным, будут ли верификацию требовать API и AI-агенты вроде Codex. Решение выглядит излишне строгим в свете качества моделей, однако компания явно ужесточает контроль над доступом к своим продук…

➡️ Читайте на сайте: https://aff.top/blog/claude-skoro-stanet-po-pasportu

🧠 Ещё больше инсайтов → в канале AFF.top
TTL для server-side cookies: где ставить срок, чтобы не сломать атрибуцию и privacy

TTL у first-party cookies в sGTM — это баланс между окнами атрибуции, повторными визитами и минимизацией лишнего хранения. Если TTL слишком короткий, вы теряете связку между сессиями и падает match rate. Если слишком длинный — растёт объём данных, а часть сигналов начинает жить дольше, чем нужно для performance-логики.

Рабочий подход такой:
_fbp и аналоги для advertising-сигналов держат обычно 90 дней, если бизнес-окно атрибуции длинное.
_fbc логично ограничивать сроком жизни click-id в ваших отчётах.
— session cookies: 30 минут без активности или по правилам вашей аналитики.
— user-id / auth cookies: только пока реально нужен persistent login, не “на всякий случай”.

Для server-side важно не копировать client-side TTL слепо. В sGTM cookie часто используется как мост между запросами, а не как постоянный идентификатор. Поэтому сначала определите: это идентификатор сессии, клик-сигнал или пользовательский ключ? От этого зависит TTL, path, domain и SameSite.

Хорошая практика: хранить минимум для дедупликации и склейки, а не всё подряд. Если cookie не участвует в активации события в течение окна атрибуции, TTL можно сокращать без потери качества.

Итог простой: TTL настраивают от функции cookie, а не от привычки “поставить побольше”. Начните с 30 минут для сессии, 90 дней для рекламных сигналов и пересмотрите всё, что живёт дольше бизнес-окна.
Типовая sGTM-архитектура для арбитража: что должно быть в контуре с первого дня

Базовая схема почти всегда одна: client-side ловит сигнал, server-side нормализует его и уже потом раздаёт в Meta, Google, TikTok. Если сразу тащить всё напрямую из браузера в платформы, получите дубли, дырки в дедупликации и грязный event payload.

Что обычно закладывают:
— отдельный subdomain для sGTM, чтобы не смешивать трекинг с основным сайтом
— Client для входящих событий: web, MP, custom endpoint
— единый event_id на событие для Pixel + CAPI deduplication
— нормализацию user data: email, phone, fbp, fbc, external_id
— роутинг по платформам через один event bus, а не через набор разрозненных тегов

Главная ошибка — делать sGTM как «прокладку» между GA4 и рекламными сетями. Тогда в контейнере оказываются лишние зависимости, а логика атрибуции расползается по тегам. Лучше держать в сервере только transport layer: принять, проверить, обогатить, отправить.

Для арбитража особенно важно:
— не терять click_id и gclid/fbclid на входе
— сохранять raw payload для дебага
— отдельно логировать accepted / dropped / duplicated events
— не смешивать production и test traffic в одном потоке

Если архитектура собрана правильно, потом проще чинить EMQ, дедупликацию и расход событий. А если нет — sGTM превращается в ещё одну точку отказа.
This media is not supported in your browser
VIEW IN TELEGRAM
Google выпустил Android 17

Android получил встроенную Gemini с функциями автоматизации задач, конспектирования браузера и редактирования медиа. Обновление принесло новый интерфейс Bubble, двухкамерную запись и игровой режим для складных телефонов. Критический момент: Gemini Intelligence требует Gemini Nano v3 и минимум 12 ГБ RAM, что ограничивает аудиторию премиум-девайсов. Это создаёт потенциал для таргетинга криптооффера на узкий сегмент владельцев флагманов, готовых пл…

➡️ Читайте на сайте: https://aff.top/blog/google-vypustil-android-17

🧠 Ещё больше инсайтов → в канале AFF.top
Adblock режет не весь трафик: как считать события, когда клиентский пиксель молчит

Когда Pixel или analytics.js не доезжают до браузера, ошибка обычно не в отчёте, а в архитектуре сбора. Сначала отделите блокировку загрузки от блокировки отправки: скрипт может не загрузиться, но запрос с формы, order API или backend webhook всё ещё доступен.

Рабочая схема для performance:
— ключевые события отправляйте с сервера: purchase, lead, submit_form, signup
— клиент оставляйте для UI-событий и мягкого сигнала
— для каждого события задайте event_id, чтобы дедуплицировать Pixel + CAPI
— передавайте server-side user_agent, ip, fbp, fbc, если они доступны легально и стабильно

Если нужно понять, где именно теряются события, сравнивайте три слоя:
1) browser hit
2) server hit
3) backend truth, например заказ в CRM

Если backend truth выше server hit — проблема в маршрутизации sGTM, очередях, таймаутах или фильтрах. Если server hit выше browser hit — это нормальная зона, где server-side как раз и закрывает разрыв.

Важно не пытаться “обойти” блокировщики. Правильный путь — минимизировать зависимость от клиентского JS, унести критичные конверсии в first-party endpoint и держать одинаковую схему идентификаторов между каналами.

Практика простая: сначала переносите purchase и lead, потом уже всё остальное. Так вы быстрее увидите, где именно adblock съедает атрибуцию, а где у вас ломается сбор.
QA server-side трекинга: 9 проверок до запуска, чтобы не ловить пустые события

Первый слой — сетевой маршрут. Проверь, что все хиты доходят до sGTM, нет 4xx/5xx, а таймауты не рвут цепочку. Если используешь Cloud Run или VPS, отдельно смотри latency p95 и наличие редиректов: один лишний hop легко убивает часть браузерных запросов.

Второй слой — валидность payload. Сверь schema для каждого события: обязательные поля, типы, пустые значения, длину строк. Для CAPI и аналогичных API особенно важно, чтобы user_data приходили уже нормализованными: lowercase, trim, телефон в E.164, email без пробелов. Иначе событие уходит, а match quality не растёт.

Третий слой — дедупликация. Убедись, что browser и server отправляют один event_id, а не два разных ID на одну конверсию. Типовая ошибка — генерировать event_id на клиенте и заново на сервере. В QA прогоняй сценарий: refresh страницы, повторный submit, back button, двойной клик по кнопке.

Дальше проверь, что в логах видно: какой client принял запрос, какой tag сработал, какой upstream ответил ошибкой. Если есть трансформация cookies, сравни fbp/fbc, IP и User-Agent до и после маршрутизации. Когда эти поля теряются по пути, серверный трекинг становится просто дорогой пересылкой пустых данных.

Финальный чек: event count client-side vs server-side, доля deduplication, и тестовая конверсия от первого клика до отправки. Если хотя бы один шаг расходится, сначала чинится QA-цепочка, потом атрибуция.
This media is not supported in your browser
VIEW IN TELEGRAM
Армения заблокирует онлайн-казино для получающих пособия

Армения ввела жёсткие ограничения на онлайн-гемблинг: запретила депозиты для получателей соцпособий и пенсий, ограничила остальным суммы до 20% дохода, обязала казино добавить кнопку самозапрета. Сайты, не подчинившиеся требованиям, будут заблокированы — технология реализации неясна. Проблемы с платёжками неизбежны. Криптоказино, вероятно, останутся без контроля, что открывает новый канал для залива трафика.

➡️ Читайте на сайте: https://aff.top/blog/armeniia-zablokiruet-onlain-kazino-dlia-poluchaiuschikh-posobiia

🧠 Ещё больше инсайтов → в канале AFF.top