Перейти до вмісту
Усі статті
7 хв читання

Server-side tracking для медіабаїнгу: повний гайд

Подія з браузера проходить через захищений серверний relay до трьох рекламних платформ

Server-side tracking — це архітектура, у якій сервер під вашим контролем приймає, перевіряє й передає measurement events, замість того щоб браузер відвідувача напряму надсилав кожен запит у рекламні та аналітичні системи. Для affiliate- або media-buying команди корисна реалізація — не просто «поставити server GTM». Потрібен наскрізний маршрут даних, де один click ID зберігається від реклами до трекера й офера, а кожна конверсія, payout і зміна статусу повертаються до цього ID.

Сервер може відповісти 200 OK, хоча click ID загубився, purchase зарахувався двічі або revenue потрапив у неправильну кампанію. Впровадження закінчене лише тоді, коли контрольований тест доводить роботу всього маршруту.

Server-side tracking, server-side tagging і S2S postback

Терміни пов’язані, але не взаємозамінні.

ТермінЩо означаєТиповий inputТиповий output
Server-side trackingЗагальна архітектура обробки measurement data на серверному шарі.Події браузера, PWA, CRM, трекера або backendАналітика, рекламні платформи, звіти й внутрішнє сховище
Server-side taggingРеалізація через tag manager, наприклад server container у GTM.Запити, які розпізнав client контейнераНормалізовані події, передані потрібними tags
S2S postbackCallback між серверами про конверсію.Click ID, status, payout, transaction IDОдна атрибутована конверсія або зміна статусу

В офіційному описі Google server container приймає запити, перетворює їх на events і обробляє через tags, triggers та variables. Google окремо пояснює, що server-side tagging доповнює, а не магічно замінює browser collection. Постбек affiliate-мережі вужчий: він зазвичай повідомляє про конверсію після того, як клік уже залишив трекер. Якщо бракує саме цього зв’язку, почніть із гайда що таке S2S postback.

Production-маршрут даних

Корисна модель має п’ять етапів:

клік по рекламі
  → first-party route / tracker click
  → landing або PWA session
  → offer чи advertiser зі збереженим click ID
  → postback / backend conversion
  → normalized event у звіти та рекламні платформи

Для кожної стрілки запишіть реальне ім’я параметра й тестове значення. «Ми передаємо ID» — не специфікація. Ось специфікація:

Meta URL parameter: dc_campaign={{campaign.id}}
Tracker click ID:    dc_click_id=dc_01K4N8...
Network storage:     aff_sub=dc_01K4N8...
Network callback:    click_id={aff_sub}
Canonical event ID:  deposit:partner-transaction-9472

Ключ ліворуч належить receiver, макрос праворуч — sender. Саме тому click_id={aff_sub} може бути правильним. Детальна схема є в гайді про click ID, sub ID і postback macros.

1. Source context не повинен ставати ідентичністю кліку

Campaign ID, ad set ID, ad ID, placement і creative — це dimensions. Вони описують групу візитів, але не один унікальний візит. Зберігайте їх в окремих полях, а трекер нехай створює або приймає один стабільний click ID.

Для platform syntax використовуйте перевірені шаблони Facebook Ads URL parameters та TikTok Ads macros. Однакові фігурні дужки не означають, що макроси різних систем взаємозамінні.

2. Click ID має пережити кожен redirect і перехід між сторінками

Типові місця втрати:

  • JavaScript перебудовує offer URL і відкидає query string;
  • redirect зберігає UTM, але видаляє унікальний click token;
  • PWA install або reopen створює нову session без первинної attribution;
  • поле мережі обрізає ID через ліміт довжини;
  • два трекери перейменовують subid без задокументованого mapping.

Успішне завантаження фінальної сторінки нічого з цього не доводить. Перевірте URL фактичного destination і запис на стороні receiver.

3. Нормалізуйте backend event

До окремих payload для Meta, TikTok і analytics створіть canonical schema:

{
  "click_id": "dc_01K4N8...",
  "event_name": "deposit",
  "event_id": "deposit:partner-transaction-9472",
  "event_time": "2026-08-18T12:04:31Z",
  "transaction_id": "partner-transaction-9472",
  "value": 45.00,
  "currency": "USD",
  "status": "approved"
}

Не дозволяйте кожній інтеграції вигадувати власне значення для purchase, deposit, value або currency.

Click ID та event ID вирішують різні задачі

  • Click ID: який візит отримує attribution?
  • Transaction ID: яка бізнес-транзакція відбулась?
  • Event ID: чи browser- і server-копії описують ту саму подію?

Один click може дати registration, first deposit і redeposit. Повторний click ID нормальний. Один event ID для трьох різних подій — помилка.

Якщо Pixel і server API надсилають одну конверсію, використовуйте однакові event name та стабільний event ID в обох копіях. Meta у Conversions API overview описує CAPI разом із Pixel і прямо зазначає, що CAPI не обходить privacy rules. TikTok у документації deduplication вимагає однаковий event_id для overlapping Pixel та Events API events.

Не дедуплікуйте лише за timestamp: retries, queue delays і дві реальні транзакції можуть бути поруч у часі. Надійніший ключ — partner transaction ID разом із типом події.

Що server-side tracking покращує, а що — ні

Google називає privacy control, client performance і data quality серед причин використовувати server-side tagging. Для buying-stack це дає:

  • validation перед delivery;
  • єдиний mapping status, value і currency;
  • secrets поза browser JavaScript;
  • backend events, яких немає в браузері;
  • видимі retries та delivery responses;
  • менше third-party code на landing page.

Але server-side tracking не створює consent, не робить заборонені дані дозволеними, не відновлює ID, якого ніколи не захопили, і сам по собі не доводить приріст реклами. Broken macros, redirect cleanup, late callbacks і дублікати можуть втрачати більше даних, ніж browser restrictions.

План впровадження

Крок 1. Інвентаризуйте producers і consumers

Перелічіть Pixel, PWA events, tracker, affiliate network, CRM, payment backend, Meta CAPI, TikTok Events API й analytics. Для кожного зафіксуйте event names, IDs, формат часу й валют, consent, retention, retry behaviour і власника credentials.

Крок 2. Визначте canonical contract

Versioned map має містити click_id, event_name, event_id, event_time, transaction_id, status, value, currency, source context і consent state. Окремо визначте, що означає відсутнє value: zero, unknown чи invalid.

Крок 3. Побудуйте idempotent receiver

Перевіряйте authentication, mandatory keys і підтримувані statuses. Зберігайте raw request та normalized result із захистом sensitive data. Повтор тієї самої transaction і event type не повинен створювати новий revenue.

Крок 4. Доставляйте через queue з видимими outcomes

Надійний pattern: receive → validate → persist → enqueue → deliver. Записуйте attempt count, response class і final state. Відрізняйте тимчасовий rate limit від permanent schema rejection.

Крок 5. Pass/fail перевірка

ТестОчікуваний фактPass?
Route і fallbackКожне правило веде на правильний destination.
Перша конверсіяОдна подія на правильному click, campaign і offer.
Duplicate callbackRevenue і totals не подвоюються.
Зміна статусуІсторія lead → approved/rejected правильна.
Cost correctionCost оновився лише на визначеному рівні.
Meta/TikTok feedbackПрийняті правильні event, value, currency та ID.
Відсутній IDПодія quarantined/rejected, не приписана випадково.
Buyer accessВидно лише assigned data, без raw secrets.
Export і rollbackRecovery path перевірено.

Це і є різниця між «схоже, працює» та releasable measurement system. Для окремих помилок використовуйте postback troubleshooting checklist.

Які tools потрібні

  • tracker/routing layer для click identity, streams, offers і postbacks;
  • server tag/event gateway для validation і vendor delivery;
  • CRM/backend для business truth, наприклад deposit status;
  • analytics/finance для reconciled decisions;
  • queue/observability для retries та incident evidence.

Не купуйте overlapping dashboards, залишаючи joins між ними недокументованими. Tracker vs CRM пояснює, чому tracker може бачити conversion, але не знати, чи settlement відбувся.

DarkCore доречний, коли проблема проходить через ці межі: Streams з’єднують routing, offers і postbacks; Pixels маплять events; статуси конверсій зберігають business state; Analytics тримає цей контекст для рішень. Це fit, а не універсальний рейтинг: спочатку перевірте один реальний campaign path.

FAQ

Server-side tracking означає cookieless?

Ні. Сервер може отримувати cookies та identifiers і все одно підпадає під consent, platform terms і закон. «Server-side» описує місце processing, а не дозвіл на дані.

Він замінює Meta Pixel або TikTok Pixel?

У типовому рекомендованому setup — ні. Meta описує CAPI поруч із Pixel, TikTok — Pixel + Events API з deduplication. Для двох копій однієї події потрібен однаковий event ID.

Postback і Conversions API — одне й те саме?

Обидва є server-to-server requests, але postback зазвичай повертає конверсію в tracker, а platform API надсилає eligible event у рекламну систему.

Що тестувати першим?

Один click, один offer, одну conversion. Доведіть, що той самий click ID пішов в offer і повернувся у callback. Потім перевірте duplicate і status update.

Коли складність не виправдана?

Коли команда не може володіти monitoring, data contract, consent і retries. Тоді краще почати з вузької managed реалізації або спершу полагодити click-to-postback flow.

  • server side tracking
  • серверний трекінг
  • affiliate tracking
  • conversion api
  • s2s postback
  • медіабаїнг