Афіліатна система і S2S-постбеки: Точний атрибуціон
1) Навіщо це все і що таке «точний атрибуціон»
Афіліати наводять трафік і очікують прозорої оплати за цільові дії (реєстрація/депозит/ревенью). Оператор хоче захист від фроду, консистентні звіти і передбачувану економіку. «Точний атрибуціон» означає:- однозначна зв'язка кліка → сесія → подія (FTD/депозит/виручка);
- детерміновані правила (вікна, пріоритети, мульти-тач);
- ідемпотентні S2S-постбеки і звірювані звіти;
- єдина валюта/таймзона розрахунку і зрозумілі статуси.
2) Моделі виплат та ключові визначення
CPA (Cost per Acquisition): фікс за подію (зазвичай FTD - перший депозит) при виконанні умов (КУС/хв. депозит/NGR> 0).
RevShare: відсоток від NGR/Net Gaming Revenue гравця за період/весь LTV (зі стелями/підлогою).
Hybrid: CPA + RevShare.
CPL/CTR/RS метрики: CR до реєстрації, CR до FTD, ARPU/ARPPU, eCPA/eRPS.
FTD - first time depositor, Qualified FTD - FTD після антифрод/вейтингу.
3) Маркування трафіку: посилання, UTM і саб-параметри
Трекінг-лінк афіліата (приклад):
https://brand. com/track? aff_id=42&campaign_id=uk_oct&click_id={CLICK_ID}
&sub_id1={SOURCE}&sub_id2={ADGROUP}&sub_id3={CREATIVE}&t=slot-promo- 'aff _ id'- партнер,'campaign _ id'- оффер/країна,'click _ id'- унікальний ідентифікатор кліка (GUID/ULID),'sub _ id1.. 5'- вільні поля (джерело/оголошення/креатив/плейсмент/А/В)
- На лендінгу створіть клік-сесію і встановіть cookie'aff _ click _ id'( HTTP-only, same-site), паралельно збережіть в серверному стораджі (anti-cookie-loss).
4) Вікна атрибуції та пріоритети
Click-through window: 30 днів (реєстрація/FTD).
Engagement window (після реєстрації до FTD): 7-14 днів.
Пріоритети: last-click серед афіліатів (всередині останнього промоусточника), але не перекриває прямий бренд-пошук за внутрішніми правилами (задокументуйте).
Мульти-тач: зберігайте ланцюжок кліків, але платіть за «правилом виплат» (наприклад, last-click). Для аналітики показуйте внесок всіх дотиків.
5) S2S-постбеки: події та контракти
Навіщо S2S: браузерний піксель ненадійний (адблок/браузерна політика). S2S-постбек → вебхук на бік афіліата/трекера без участі клієнта.
Події, які зазвичай шлють
`registration` (sign-up)- 'ftd'( перший депозит)
- 'qualified _ ftd'( після КУС/вейтингу)
- 'deposit'( кожен депозит)
- `revenue` (RevShare: NGR/GGR за період)
Приклад S2S-постбека (HTTP POST, JSON)
POST https://aff-network. com/postback
Headers: X-Signature: sha256=ab12..., X-Timestamp: 1730000000
Body:
{
"aff_id": "42",  "click_id": "clk_9f23",  "event": "ftd",  "user_id": "u_12345" ,//псевдонім, не PII
"amount_minor": 2000,  "currency": "EUR",  "market": "DE",  "ts": "2025-10-23T17:41:26Z",  "session_id": "s_77",  "sub_id1": "fb",  "sub_id2": "adg_12",  "sub_id3": "cr_88"
}Безпека та ідемпотентність
6) Прив'язка кліка: Як не втратити атрибуцію
При реєстрації: зіставити'aff _ click _ id'з cookie/серверної сесії з'user _ id'( + відбиток пристрою як резерв, але GDPR-чутливо, застосовуйте тільки за згодою).
При FTD: шукати останню діючу клік-сесію у вікні; якщо ні - повернути'organic/direct'.
Дедуп: якщо два FTD зайшли в один день через ретраїв PSP - платимо один раз (унікальний FTD-прапор на'user _ id').
7) Антифрод і вейтинги
Час життя: FTD → статус'PENDING'на 24-72 години, qualified після КУС/відсутності чарджбека.
Сигнали: «бурст» з hosting-ASN, VPN/Proxy, висока швидкість реєстрацій, cookie-stuffing (клік без реальної сесії), міс-матч гео/валюти.
Зважування (weighting): зменшуйте CPA-виплати за порогами якості (наприклад, NGR <0, утримання  Список винятків: брендове SEM, заборонені джерела, incent-трафік - бан/0-виплати. 8) Економіка і формули NGR = GGR − бонуси − джекпоти − провайдерські фі − PSP фі − chargebacks. RevShare payout = NGR × RS% (с min/max cap). Hybrid payout = CPA + NGR × RS%. eCPA = Payout/кількість FTD, ROI афіліату = Payout − TrafficCost. Документуйте валюту розрахунку (наприклад, EUR) і щоденний FX-курс (ЄСВ/провайдер). 9) Схеми даних (спрощено) 10) Звітність і панелі Performance (день/ринок/оффер): кліки, реєстрації, FTD, CR, депозитори, GGR/NGR, виплати, eCPA. Когортний зріз: утримання D1/D7/D30, NGR/депозити на гравця, частка chargebacks. Discrepancy-панель: розбіжності кліків/реєстрацій/FTD з афіліат-трекером (± X%). Fraud heatmap: ASN/країни/майданчики з аномаліями. 11) Порядок розрахунків і reconciliation 1. Щодня - сирі події в зрізах (кліки/рег/FTD/депозити/NGR), вивантаження CSV/S2S. 2. Раз в період (тиждень/місяць) - проект рахунку (invoice draft) з розшифровкою і коригуваннями (chargeback/повернення). 3. Арбітраж: вікно спорів (зазвичай 5-10 робочих днів), документовані причини відхилень (фрод, невідповідність офферу, incent). 4. Підсумковий рахунок → виплата (SEPA/SWIFT/крипто) з референсом періоду; статуси'issued/paid'. 5. Аудит: WORM-снапшоти звітів, підпис/хеш. 12) Приватність і комплаєнс Сторонам не потрібні PII: використовуйте псевдоніми ('user _ id','hash (email)'при необхідності з сіллю). DPA з афіліат-мережами, вказівка ролей (controller/processor), терміни зберігання кліків/подій. Consent для cookie/UTM; фінгерпринтинг - тільки при законній підставі. Гео-обмеження офферів (країни ліцензії), вікові фільтри. 13) Приклади API 13. 1. Реєстрація кліка (сервер-сайд, опціонально) 13. 2. Прив'язка користувача при реєстрації 13. 3. Постбек на бік мережі (наше «вихідне») 14) Анти-пастки та інциденти A. cookie-stuffing (перебивка кліка) Ознаки: багато кліків без сесії/скролла/часу на сторінці. Заходи: серверний клік-лог + поріг «валідної сесії» (мінімальна активність), ігнор останніх кліків при підозрі. B. різні таймзони/валюти → розбіжності звітів Заходи: єдина розрахункова TZ (наприклад, UTC або Europe/Kyiv) і валюта (EUR); конверсія за фіксованим джерелом курсу з денним снепшотом. С. Дублі постбеків Заходи: Idempotency-Key + унікальний індекс'event _ id', статусна машина'pending→acked'. D. сплеск фроду з hosting-ASN Заходи: WAF/бот-менеджер, стоп оффера за сегментами, вейтинги FTD, 0-платежі за спірними джерелами до розгляду. 15) Дашборди для щоденної роботи Affiliate Overview: FTD/депозитори/NGR/виплати по топ-10 партнерів за 7/30 днів. Funnel: кліки → реєстрації → KYC → FTD (CR по кроках, час до FTD). Quality: утримання/ARPPU/chargeback rate за оферами. Tech Health: затримка постбеків p95, помилка HMAC, ретраї, DLQ. Finance: акти/рахунки, статус виплат, дебіторка. 16) Чек-лист прод-готовності Надійна афіліатна система - це детерміновані правила атрибуції, безпечні S2S-постбеки з ідемпотентністю, антифрод-контури і строгий reconciliation. Стандартизуйте параметри посилання, зберігайте кліки і ланцюжки торкань, платіть по зрозумілій моделі (CPA/RevShare/Hybrid), фіксуйте вікна і таймзони, захищайте вебхуки і автоматизуйте інвойсинг. Тоді у вас будуть чисті звіти, менше суперечок і стійка юніт-економіка для оператора і партнерів.
sql
-- Кліки/сесії aff_clicks (
click_id text primary key,  aff_id int, campaign_id text,  sub1 text, sub2 text, sub3 text, sub4 text, sub5 text,  ts timestamptz, ip inet, asn int, ua text, landing text
);
-- Прив'язка до користувача aff_attribution (
user_id bigint primary key,  click_id text references aff_clicks(click_id),  aff_id int, campaign_id text,  attributed_at timestamptz,  window_days int, rule text -- e. g. 'last_click'
);
- Події для постбеків aff_events (
event_id uuid primary key,  user_id bigint, click_id text,  event_type text,     -- registration/ftd/deposit/revenue/adjustment amount_minor bigint, currency char(3),  ngr_minor bigint,     -- для revenue occurred_at timestamptz,  status text,       -- pending/sent/acked/failed retries int default 0
);
-- Фінансовий облік афіліата aff_payouts (
payout_id uuid primary key,  aff_id int, period month, currency char(3),  model text,        -- CPA/RevShare/Hybrid cpa_minor bigint, rs_minor bigint, adjustments_minor bigint,  total_minor bigint, status text   -- draft/issued/paid
);
http
POST /v1/aff/click
{"aff_id":42,"campaign_id":"uk_oct","click_id":"clk_9f23","sub1":"fb","sub2":"adg12"}
→ 202 {"status":"ok"}http
POST /v1/aff/attach
{"user_id":12345,"click_id":"clk_9f23","ip":"1. 2. 3. 4","ua":"..."}
→ 201 {"attributed": true, "rule":"last_click","window_days":30}http
POST https://aff. example/postback
Headers: X-Idempotency-Key: evt_7a1, X-Signature: sha256=...
Body: {"event":"ftd","click_id":"clk_9f23","amount_minor":2000,"currency":"EUR","ts":"..."}
→ 200 {"ok":true}
Резюме
