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 postback | Callback між серверами про конверсію. | 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 callback | Revenue і totals не подвоюються. | ☐ |
| Зміна статусу | Історія lead → approved/rejected правильна. | ☐ |
| Cost correction | Cost оновився лише на визначеному рівні. | ☐ |
| Meta/TikTok feedback | Прийняті правильні event, value, currency та ID. | ☐ |
| Відсутній ID | Подія quarantined/rejected, не приписана випадково. | ☐ |
| Buyer access | Видно лише assigned data, без raw secrets. | ☐ |
| Export і rollback | Recovery 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.