Trafflow / Документация ← В кабинет

Документация Trafflow

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

Обзор и термины

Trafflow — self-hosted трекер рекламы. Основной путь данных: клик → проходит через правило флоу кампании → попадает на лендинг и/или оффер → партнёрка или ваш же бэкенд присылает постбэк → постбэк превращается в конверсию с определённым статусом.

ТерминЧто это
КликОдин визит по трекинговой ссылке. Получает уникальный 26-символьный click_id.
КампанияТрекинговая ссылка + правила маршрутизации (флоу). Привязана к домену и источнику трафика.
Флоу / правилоУсловие (фильтр по гео, устройству и т.д.) → что показать: лендинг, оффер, прямую ссылку или действие.
ОффerПартнёрская ссылка, загруженный сайт или iframe, на который в итоге попадает трафик.
ЛендингПрокладочная страница перед оффером: внешний URL, загруженный ZIP или HTML-код.
ПостбэкHTTP-запрос от партнёрки (или вашего сайта) о событии: лид, продажа, отказ и т.д.
КонверсияЗапись о событии в базе Trafflow, созданная или обновлённая постбэком.
sub1–sub3030 универсальных слотов для передачи параметров (ID объявления, названия кампании рекламной сети и т.п.) через весь путь клика.
Важно про деньги и статусы. Доход на дашборде считается только по статусу APPROVED. На панели «Отчёты» по умолчанию в доход попадают ещё и PENDING. Трэш и отклонённые не считаются нигде. Это частая причина, почему цифры на дашборде и в отчётах расходятся — см. раздел «Аналитика и отчёты».

Как устроен клик

Коротко — что происходит между открытием ссылки и редиректом:

  1. Посетитель открывает https://домен/путь.
  2. Если кампания не активна — редирект на запасной URL (Fallback) или ответ 410. Если домен отключён — тоже 410.
  3. Считаются гео, устройство и признаки бота (см. ниже).
  4. Выбирается правило: сначала «Принудительные» (INTERCEPT), затем «Обычные» (NORMAL), затем «По умолчанию» (FALLBACK).
  5. Внутри правила отдельно крутятся лендинг и оффер (ротация, капы, замены).
  6. Клик сохраняется, посетитель получает редирект.

click_id и sub-параметры

  • click_id — 26-символьный ID, уникальный для каждого клика. Передавайте его в партнёрку макросом {clickid} — именно его партнёрка должна вернуть в постбэке.
  • sub1–sub30 заполняются в таком порядке: маппинг источника трафика → маппинг кампании (Parameters, побеждает при конфликте) → обычный ?subN=значение в самой ссылке.
  • fbclid улавливается автоматически всегда — он нужен для Meta CAPI.

Уникальные клики

Первый визит по кампании за период (по умолчанию 24 часа) с одним и тем же ключом посетителя. Ключ — либо IP + User-Agent + язык браузера, либо только IP — выбирается в настройках кампании.

Определение ботов

Это только данные — само по себе ничего не блокирует и не перенаправляет. Чтобы бот не долетал до оффера, нужно отдельное правило флоу с фильтром по типу трафика или бот-скору.

Тип трафикаКогда ставится
BOT (скор 100)Нет заголовка User-Agent
BOT (скор 90)Headless-браузер
CRAWLER (скор 60)Известные краулеры: Googlebot, facebookexternalhit и т.п.
SCRAPER (скор 80)curl, python-requests и похожие клиенты
HUMAN / SUSPICIOUS / BOTИначе — накопительный скор: нет Accept-Language +10, нераспознанный браузер +20, датацентровый ASN +30. 0 = HUMAN, до 50 = SUSPICIOUS, выше — BOT.

Признак «датацентр» работает только если на сервере подключена база GeoIP ASN. Боты и заблокированные клики всё равно сохраняются в логах — просто помечены.

Неизвестная ссылка, заблокированный клик и правило без назначения — всё отдаёт один и тот же нейтральный 404, чтобы ничего не раскрывать постороннему.

Источники трафика

Кабинет → Источники трафика

Источник описывает, откуда идёт трафик (Meta, Google Ads, TikTok, Push, Native или Custom), как считать его стоимость и — для Meta — интеграцию с CAPI и синком реальных расходов.

Создание и типы

Тип выбирается один раз и не меняется после создания. Meta/Google/TikTok сразу подставляют пресет маппинга sub-параметров:

ИсточникМаппинг по умолчанию
Meta Adssub1=campaign_name, sub2=ad_id, sub3=adset_id, sub4=campaign_id
Google Adssub1=campaign_id, sub2=adgroup_id, sub3=creative_id, sub4=keyword, sub8=gclid
TikTok Adssub1=campaign_id, sub2=adgroup_id, sub3=creative_id, sub4=campaign_name
Push / NativeМаппинга нет, но включён захват цены клика по параметру cost
CustomПусто, настраивается вручную

Вкладки карточки источника

General, Sub Mapping, Cost, Meta CAPI, Ad Spend Sync, Ads, S2S Postbacks, Campaigns, Statistics, Audit — плюс Clone и Delete.

Модель стоимости (вкладка General)

МодельФормула
CPCцена × клики
CPMцена × клики ÷ 1000 (показов нет — это по сути «за 1000 кликов»)
CPAцена × конверсии
FIXEDфиксированная сумма за период, если был хотя бы один клик
В движке Отчётов FIXED не учитывается вообще, а CPA считается только по засчитанным конверсиям. Если расходы на дашборде и в Отчётах не совпадают — проверьте, не стоит ли у источника FIXED.

Приоритет расчёта стоимости

Применяется на страницах Источников, Кампаний и на дашборде:

  1. Если за период есть захваченная цена по клику (параметр cost в ссылке) — вся стоимость берётся из неё.
  2. Иначе: стоимость = ручные расходы кампании + формула модели.
  3. Синк реальных расходов Meta (ниже) переопределяет это, но только в плитках дашборда.

Доверенные referrer'ы

Список хостов (по одному на строку, поддомены тоже подходят). Если список не пуст — захваченная цена клика принимается, только если Referer посетителя из этого списка. Это влияет только на захват цены, трафик они не фильтруют.

Meta CAPI требует план Pro+

Доступно только для источников Meta. Поля: чекбокс включения, Pixel ID (5–20 цифр), Access token, необязательный Test event code. Сохранённый токен больше не показывается — только точки; новое значение полностью заменяет старое.

  • Отправляются только конверсии со статусом APPROVED — при создании или при переходе в этот статус.
  • Имя события зависит от типа: LEAD → Lead, REGISTRATION → CompleteRegistration, остальное → Purchase.
  • В событие уходят: payout как value, хэш click_id как external_id, IP, User-Agent и fbc, собранный из захваченного fbclid.
  • 3 попытки доставки с таймаутом 5 секунд. Результат каждой — в Логах → CAPI.

Синк расходов (Ad Spend Sync) только Meta

Поля: Ad Account ID (с act_ или без) и токен доступа с правом ads_read. Каждые 6 часов подтягивает реальный расход по ad_id из Meta Insights за последние 3 дня; кнопка «Синхронизировать сейчас» — запускает немедленно.

Реальный расход заменяет формулу только в плитках дашборда. Статистика кампаний, офферов, ротация и Отчёты всё ещё считают по формуле — это сделано сознательно и пока не изменится.

Вкладка Ads показывает разбивку по ad_id с реальным расходом — для этого один из sub-параметров источника должен быть смаплен на URL-параметр ad_id.

S2S-постбэки источника

Исходящие вызовы в сторону рекламной площадки (не путать с постбэками кампании). У каждого: имя, URL, метод GET/POST, статусы-триггеры (по умолчанию APPROVED), включён/выключен.

  • Доставка надёжная: воркер каждые 30 секунд, до 5 попыток с паузами 1 мин / 5 мин / 15 мин / 1 час.
  • 4xx-ответ — доставка считается проваленной сразу, кроме 408, 425 и 429 (их ретраит).
  • Комбинация (постбэк, конверсия, статус) отправляется не больше одного раза. У лога есть кнопка Retry.
  • Если источник отключён (DISABLED) — постбэки не отправляются вовсе.
В подсказках на этой вкладке упоминаются макросы {conversion_id} и {transaction_id} — на самом деле их не существует, они останутся в URL как есть.

Удаление и клон

Удалить источник, пока к нему привязаны кампании, нельзя — предложат отключить или удалить принудительно (кампании останутся без источника). Клон копирует вообще всё, включая токены и постбэки.

Кампании и флоу

Кабинет → Кампании → создать / редактировать

Кампания — это трекинговая ссылка плюс один скрытый флоу с правилами маршрутизации. Редактор открывается на вкладках General, Link, Parameters, Postbacks, Notes; Расходы и Статистика — из диалогов списка кампаний.

Основные настройки (General)

  • Путь: 4–10 латинских букв/цифр, уникален по всей установке. Пусто — сгенерируется случайный 8-символьный. Зарезервированы: api, postback, go, l, c, admin, login и другие.
  • Домен — только из активных доменов. Источник — отключённые недоступны для выбора.
  • Уникальный клик по: «IP + User-Agent» (с учётом языка браузера) или «Только IP», плюс окно в часах (по умолчанию 24).
  • Ротация: «По порядку» или «По весу» (по умолчанию) — определяет, как выбирается правило флоу среди подходящих.
  • Метод: «Динамический (редирект)». «PHP-интеграция» показывается только если на сервере явно включена эта опция.
  • Fallback URL — куда идёт трафик, пока кампания на паузе или отключена. Пусто — ответ 410.

Ссылка (Link)

Формат: https://{домен}/{путь}, также работает /c/{путь}. Если на домене назначена кампания «по умолчанию» — она сработает на запрос корня домена (GET /). Вариант «С параметрами» добавляет смапленные sub-параметры в ссылку.

Для ссылок вида /{путь} заголовок Host обязан совпадать с собственным активным доменом кампании. Для /c/{путь} подходит любой хост, если на сервере не включена принудительная проверка хоста.

Параметры (sub-маппинг кампании)

Маппинг на этой вкладке побеждает маппинг источника для того же параметра. Простое ?subN=значение в ссылке по-прежнему принимается, но смапленные параметры имеют приоритет.

Флоу: типы правил

ТипПоведение
Принудительное (INTERCEPT)Проверяется раньше всех. Если фильтр подошёл — побеждает безусловно.
Обычное (NORMAL)Конкурирует по порядку или по весу среди подошедших по фильтру правил.
По умолчанию (FALLBACK)Срабатывает, если ничего больше не подошло. Только одно на кампанию, клонировать нельзя.

У каждого правила есть: имя, вес (для Обычных), лимит кликов (пусто = без лимита), «Считать клики» да/нет, статус активно/отключено.

  • «Считать клики: нет» — клики всё равно записываются и атрибутируются, но не идут в счётчик правила и не расходуют его лимит.
  • Лимит кликов — по достижении правило пропускается, выбирается следующий подходящий кандидат.
  • Клонированное правило стартует отключённым.
  • Правила можно перетаскивать для смены порядка.

Фильтры правил

Доступные поля: страна, регион, город, язык, устройство, ОС, браузер, User-Agent, тип соединения, IP (отдельные адреса или CIDR), провайдер (ISP), referrer, признаки бота/VPN/прокси/датацентра, уникальность клика, бот-скор, sub1–30, ASN, модель устройства, версии ОС/браузера, тип трафика, источник трафика.

  • Только операторы IS и IS NOT, комбинируются через AND/OR.
  • Правило без фильтров подходит всем.
  • Отсутствующее значение никогда не совпадает с IS.
  • Для булевых признаков IS NOT пропускает и «неизвестно».
  • Мобильный оператор (выпадающий список, можно переключить на текстовое поле), Тип подключения (MOBILE / BROADBAND / DATACENTER), isProxy и isVpn определяются по ASN и названию провайдера (нужна база GeoLite2-ASN: переменная GEOIP_ASN_DATABASE_PATH). Это эвристика: надёжно узнаёт известных мобильных операторов, хостинги и VPN-сервисы, но не видит резидентные прокси на домашних IP. Если ASN не определён, значение остаётся «неизвестно».

Что делает выигравшее правило (Schema)

  • Лендинги и офферы — взвешенные списки.
  • Прямой URL — с типом редиректа: HTTP 302, Meta refresh, JavaScript, No referrer, Proxy (сервер сам забирает страницу и отдаёт её).
  • Действие: показать 404, показать текст, показать HTML, пустой ответ 204, перевод в другую кампанию (Transfer).

Transfer не может указывать на саму себя, цепочка максимум вида A→B→C, циклы отклоняются.

Ротация лендингов и офферов внутри правила

Крутятся независимо друг от друга, у каждого — 4 режима:

  • Вручную — по весам. Для лендингов: если сумма весов меньше 100, остаток отправляет сразу на оффер без лендинга. Для офферов: суммарный вес 0 — используется первый включённый оффер.
  • Round robin — атомарный счётчик циклически проходит включённые варианты.
  • Bandit план Ultra+ — настройки: метрика (CR, EPC, ROI, CPA), период (сегодня/N дней/всё время), стратегия (Агрессивная 80/15/5, Сбалансированная 70/20/10, Консервативная 50/25/25, своя доля лидера 50–95%), минимум кликов для учёта, буст для новых вариантов, автопауза слабых вариантов ниже X% от лидера. Веса пересчитываются каждые 30 секунд; таблица обновляется каждые 10. Автопауза снимается сама, если вариант отыгрался; ручная пауза — никогда не снимается автоматически. Есть Preview (без применения) и Freeze (зафиксировать текущие веса как «вручную»).
  • A/B-тест план Ultra+ — равный сплит, уверенность (0.8–0.999) и минимальная выборка на вариант определяют, когда объявляется победитель.
Если план лишается фичи «умная ротация», Bandit и A/B мгновенно откатываются на режим «Вручную».

Блокировка и капы внутри правила

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

Postbacks (исходящие постбэки кампании)

Это постбэки в ваш собственный эндпоинт, не путать с S2S-постбэками источника. Поля: URL, GET/POST, включён, статусы-триггеры. Доставка «выстрелил и забыл»: 3 попытки, таймаут 5 секунд, без постоянного лога. Срабатывает заново при каждом следующем совпавшем статусе.

Расходы (ручные)

Диапазон дат, сумма, валюта (USD/EUR/RUB/UAH), заметка. Сумма размазывается равномерно по дням диапазона и добавляется к Cost. Конвертация в USD — по фиксированным курсам (EUR 1.08, RUB 0.011, UAH 0.024), без привязки к реальному курсу на момент расхода.

Очистка статистики и прочие действия

  • Очистить статистику — удаляет клики и конверсии кампании за диапазон дат, нужно ввести имя кампании для подтверждения. Клики с конверсиями вне диапазона не удаляются.
  • Пауза/Запуск, Клон (копирует всё, кроме статистики; клон стартует на паузе), Удаление (мягкое — история остаётся в отчётах, путь освобождается для повторного использования).

Инструмент Flow Debugger позволяет ввести гипотетические параметры посетителя и увидеть, какое правило сработает и почему — реальные данные не трогаются.

Офферы

Кабинет → Офферы

Типы офферов

  • Внешний — редирект на URL.
  • Загрузка (ZIP) — отдаётся на /offer/{slug}/. index.html обязан лежать в корне архива. PHP не выполняется: архив только с index.php получит статус ERROR.
  • Iframe — трекер отдаёт страницу, встраивающую указанный URL через iframe.

Роль оффера (OFFER / MAIN_SITE / WHITE_PAGE) — это просто метка, на маршрутизацию не влияет; выбор всё равно делает правило флоу.

Выплата (Payout)

  • FIXED — фиксированная сумма в центах.
  • PERCENTAGE — доля от суммы (в базисных пунктах), которую партнёрка прислала в постбэке параметром amount.

Капы (лимиты конверсий)

Поля: Cap (число конверсий; пусто или 0 = без лимита), период (день/неделя/месяц/всё время), часовой пояс, оффер-замена на случай достижения капа. Цепочка замен — до 5 уровней, циклы отклоняются.

Кап считает конверсии, а не клики. Счётчик растёт, когда приходит конверсия со статусом, у которого включено «влияет на кап оффера» — по умолчанию это все статусы, кроме REJECTED и TRASH. Отклонённая позже конверсия вычитается из счётчика только в следующем периоде, не сразу. Счётчик живёт в Redis и восстанавливается из базы при потере.

Как собирается итоговый URL оффера

  1. URL оффера.
  2. + шаблон Offer URL сети — добавляется как query-string; параметры, уже заданные в URL оффера, побеждают.
  3. Подстановка макросов и URL-кодирование.

Макросы в URL оффера

ГруппаМакросы
Клик{clickid} / {click_id}, {sub1}–{sub30}, {campaign}, {campaign_id}, {source}, {source_id}, {stream_id}/{flow_id}, {landing_id}, {offer_id}
Посетитель{country}, {region}, {city}, {asn}, {isp}, {ip}, {user_agent}, {browser}, {browser_version}, {os}, {os_version}, {device}, {device_type}, {language}, {referrer}, {host}, {connection}
Флаги и время{is_bot}, {is_proxy}, {is_vpn}, {is_datacenter}, {timestamp}, {date}, {hour}

Неизвестный макрос {что-то} остаётся в ссылке как есть, без ошибки.

Удаление — мягкое. Если оффер используется в правилах или как замена по капу, предложат отключить вместо удаления. Клон создаёт копию с припиской «Copy».

Статистика оффера считает cost только по источникам с моделью CPC — из-за этого ROI на карточке оффера может показывать 0, даже если реальные расходы есть.

Лендинги

Кабинет → Лендинги → редактор / тепловая карта

Типы

  • Внешний URL — редирект 302 или 307, макросы работают.
  • Загрузка (ZIP) — index.html обязателен в корне; исполняемые файлы, симлинки и попытки выйти за пределы архива (path traversal) отклоняются. Лимит размера по умолчанию — 50 МБ.
  • Inline HTML — код прямо в редакторе.

Отдаются на /l/{slug}/, слаги уникальны по всей установке. Страницы работают в песочнице и не имеют доступа к дашборду. PHP-файлы внутри архива отдаются как обычный текст, не выполняются.

Ссылка на оффер с лендинга

  • Свои лендинги (Upload/Inline): используйте {offer_link}, например <a href="{offer_link}">. Ссылка ведёт на /go/{clickId}, которая фиксирует «клик по лендингу» и редиректит на оффер этого клика.
  • Внешние лендинги: {offer} (выбранный оффер, URL-кодированный) или {offer:N} — N-й оффер правила по счёту с 1.
/go/ использует «сырой» URL оффера с макросами — не добавляет шаблон сети и не работает с типами оффера Upload/Iframe.

Любые клик-макросы (из раздела Офферов выше) работают и внутри HTML своего лендинга.

Просмотры и версии

Просмотр считается один раз на клик, только на входной странице. Каждое сохранение или загрузка нового ZIP создаёт новую версию — хранятся последние 30, любую можно восстановить со страницы лендинга. Предпросмотр в редакторе всегда на тестовых данных, не на реальных посетителях.

В файловом редакторе: новый файл, загрузка, переименование, перемещение, удаление. Разрешены html, php, css, json, js, log, md, txt, изображения, avi/mp4/webm/mp3. Редактировать в браузере можно файлы до 2 МБ. Входной файл нельзя переименовать, переместить или удалить.

Тепловая карта и скролл требует план Pro+

Скрипт отслеживания подключается автоматически к реальным просмотрам своих (не внешних) лендингов. Клики группируются по сетке 5%, глубина скролла — по полосам 10%. Можно фильтровать по устройству: все/десктоп/мобильные/планшеты. Данные общие для всего лендинга, без разбивки по версиям.

Удалить или отключить лендинг, пока он используется в флоу, нельзя — предложат отключить вместо удаления. На странице лендинга видно, какие флоу его используют.

Конверсии и постбэки

Кабинет → Конверсии · Постбэки · Сети

Это самый частый источник путаницы, поэтому — подробно. Есть два способа присылать постбэк на /postback (GET или POST оба работают):

Способ A — простая ссылка без токена (legacy)

/postback?click_id={click_id}&payout={payout}&type=sale&status=¤cy=&txid=

Именно такая ссылка показана на странице «Постбэки». Аутентификации нет — валидного click_id достаточно.

  • type обязателен и должен быть одним из: LEAD, SALE, REGISTRATION, PURCHASE, DEPOSIT, REBILL, CUSTOM. Неизвестный тип — ошибка 400.
  • Проверка дубля — по связке клик + тип (+ txid, если он передан).
Главное ограничение этого способа: повторный постбэк по той же связке клик+тип считается дублем и не может сменить статус уже созданной конверсии. Если вам нужно «лид → потом продажа» или «лид → потом треш» на одном и том же событии — этот способ не подойдёт, нужен способ B.

status мапится только через карту статусов сети и может стать только PENDING, REJECTED или APPROVED. Неизвестное значение (и TRASH тоже!) становится APPROVED.

Способ B — ссылка с токеном сети (рекомендуется)

Берётся на странице Сети → (ваша сеть) → Постбэк. Формат: /postback?token=nt_…&event=…&<параметры сети>.

  • Токен однозначно определяет сеть. Неверный токен или отключённая сеть — ответ 403.
  • Проверка дубля — по связке сеть + клик + событие + (ID события или transaction_id сети). Статус в эту связку не входит — значит, второй постбэк с тем же событием, но другим статусом (например, pending → approved), обновит ту же конверсию, а не создаст дубль. Это и есть ответ на «как сделать, чтобы и лид, и продажа отбивались по одному заказу».
  • Идентичный повторный статус считается дублем и игнорируется.

Параметры, которые распознаются автоматически

ПолеПринимаемые имена параметра
click_idclick_id, clickid, cid, subid, sub_id
payoutpayout, amount, revenue, sum, commission
currencycurrency, cur
statusstatus, state, event_status, conversion_status
transaction_idtransaction_id, txid, tid, order_id, conversion_id
eventevent, type, goal

Если у сети задан свой маппинг параметров — он проверяется первым, эти имена — запасной вариант.

Поле event определяет тип конверсии: lead, registration/reg, sale, purchase, deposit/dep, rebill. Всё остальное — CUSTOM.

Как считается payout и валюта

Если постбэк прислал payout — побеждает он. Если нет — берётся выплата оффера (FIXED, либо доля × параметр amount из постбэка). Валюта: из постбэка → из оффера → из настроек сети по умолчанию. На токен-постбэке более поздний payout может заменить payout, рассчитанный из оффера, но никогда не заменит payout, который сеть уже реально прислала.

Статусы конверсий

Настройка статусов не вынесена в интерфейс — доступна только через API (/workspaces/:id/conversion-statuses), только для ролей Owner и Admin.
Системный статусВнутренний lifecycle
lead, registration, deposit, saleAPPROVED
pending, holdPENDING
rejectedREJECTED
trashTRASH

У каждого статуса настраивается: сырые значения сети, которые в него мапятся; цвет; «считать конверсией»; «считать доходом»; «отправлять постбэк источнику»; «влияет на кап оффера»; допустимые следующие статусы.

  • По умолчанию pending и hold считаются конверсией и доходом, но не отправляются источнику.
  • rejected и trash не считаются нигде.
  • Сырой статус, которого воркспейс не узнаёт, становится «sale» (approved) — по умолчанию неизвестное трактуется как успех, будьте внимательны.
  • Порядок сопоставления: сначала карта статусов сети, потом сырые значения воркспейса.
  • Собственный статус можно удалить, только если его не использует ни одна конверсия.

Что происходит после сохранения конверсии (по порядку)

  1. Исходящие постбэки кампании.
  2. Meta CAPI.
  3. Вебхук (CONVERSION_CREATED или CONVERSION_UPDATED).
  4. S2S-постбэки источника (только если у статуса включено «отправлять источнику»).
  5. Счётчик капа оффера.

Страницы

  • Конверсии — список только для чтения: время, click_id, кампания, оффер, тип, payout, статус. Вручную статус менять нельзя.
  • Постбэки — показывает простую (legacy) ссылку и журнал входящих запросов (последние 50, максимум 200 в хранении).
  • Тестовый прогон постбэка сети (dry-run) — на странице Сетей, ничего не записывает в базу.

Сети

Кабинет → Сети

Описывает партнёрскую сеть/CPA-сеть: шаблон постбэка, карту статусов, токен и шаблон URL оффера.

  • Шаблон Offer URL — query-строка вида ?aff_sub={clickid}; полный URL с доменом не принимается. Если в шаблоне нет {clickid} — интерфейс предупредит.
  • События — у каждого ключа события (lead, sale, deposit, rebill и т.д.) своя готовая ссылка постбэка с &event=ключ.
  • Карта статусов — строка статуса сети → APPROVED/PENDING/REJECTED/TRASH.
  • Токен постбэка генерируется на сеть и виден только внутри готовых ссылок. «Перевыпустить токен» сразу гасит старую ссылку.

Готовые пресеты

ПресетЛогика
Genericclick_id + payout + status
aff_sub-стильиспользует transaction_id
Lead + Salelead → PENDING, sale → APPROVED (обновляет ту же конверсию)
Registration / Deposit / Rebillкаждое — отдельный тип конверсии

Общая для всех пресетов карта статусов: approve/approved/confirmed → APPROVED; pending/hold → PENDING; declined/rejected/reject → REJECTED; trash → TRASH.

Отключённую сеть нельзя назначить новым офферам, её постбэки отклоняются. Удалить сеть, пока к ней привязаны офферы, нельзя.

Домены

Кабинет → Домены

  1. Добавьте хостнейм.
  2. Создайте A-запись на IP сервера (показан в интерфейсе; если сервер не настроил TRACKER_PUBLIC_IP — будет предупреждение). Используйте @ для корневого домена.
  3. Проверка запускается сразу, затем автоматически: каждую минуту пока DNS_PENDING, каждые 10 минут при ошибке, каждые 6 часов если истекает SSL.
СтатусЗначит
DNS_PENDING / DNS_ERRORЗапись не найдена / указывает не туда
SSL_PENDING / SSL_ERROR / SSL_EXPIRINGСертификат ещё не выпущен / ошибка / осталось меньше 14 дней
ACTIVEМожно использовать в кампаниях — только в этом статусе
DISABLEDВесь трафик на домене остановлен

SSL — настройка сервера, не домена: external (TLS снаружи — Cloudflare, прокси, wildcard-сертификат; домен становится ACTIVE сразу по DNS) или certbot (Let's Encrypt, HTTP-01, обновление за 30 дней до истечения).

На домене можно включить «доступ к дашборду» (по умолчанию выключен — трекинговые домены отдают 404 на попытку открыть интерфейс) и назначить «кампанию по умолчанию» для голого домена.

Системные домены (метка «нельзя удалить») не считаются в лимит плана и не проверяются автоматически — их настраивает не пользователь, а оператор сервера.

Удалить домен, пока на нём есть кампании, нельзя. Лимит доменов плана проверяется при добавлении.

Аналитика и отчёты

Кабинет → Дашборд · Отчёты · Сводная таблица · Логи · Клики

Дашборд

Плитки: клики, уникальные клики, конверсии, расход, доход, профит — у каждой % изменения к такому же предыдущему периоду. Есть график по дням, таблица по кампаниям с CSV-экспортом, последние клики, разбивка по кампании/офферу/лендингу/источнику/стране/устройству/типу трафика/ОС/браузеру.

Особенности дашборда, которые часто путают:
  • Диапазон дат считается в UTC, а не в часовом поясе воркспейса.
  • «Конверсии» и CR на дашборде считают все статусы, включая отклонённые и треш.
  • Доход (Revenue) считает только APPROVED.
  • Боты не исключаются из счётчиков.
  • Синк реальных расходов Meta применяется только здесь.

Отчёты (Report Builder)

Диапазон дат в выбранном часовом поясе (до 400 дней), до 6 измерений группировки с drill-in/раскрытием, дерево фильтров AND/OR, режим трафика (все / без ботов / только люди), диапазон часов, дни недели, условия HAVING по метрикам, сортировка, Top-N с объединением остатка в «Другое», сравнение с предыдущим периодом, поиск по click_id.

Измерения: гео (страна/регион/город/язык), устройство (тип, модель, ОС+версия, браузер+версия), сеть (ISP, ASN, referrer), качество (тип трафика, бот, уникальность, блокировка), время (час/день недели/день/неделя/месяц), сущности (кампания, оффер, лендинг, источник, домен, правило флоу), sub1–30 (подписаны по маппингу источника, например «[S2] ad_id»).

Метрики: клики, уникальные, боты, % ботов, прокси/датацентр-клики; просмотры лендинга, LP-клики, LP CTR; конверсии (по умолчанию = «считается конверсией», то есть pending+approved), подтверждённые (только APPROVED), продажи/лиды/регистрации/депозиты/отклонённые/треш по отдельности; доход (по умолчанию включает pending), подтверждённый доход, расход, профит, ROI, ROAS, маржа; EPC, CPC, CPA, CR, % одобрения и другие производные.

Отчёты считают по дате клика — конверсия атрибутируется на день, когда был клик, а не когда пришла конверсия (на дашборде — наоборот, по дате получения). Расход в Отчётах = захваченная цена по клику, иначе формула CPC/CPM + CPA с конверсии. FIXED, ручные расходы кампании и синк Meta в Отчётах не учитываются вообще.

Итоги всегда пересчитываются из сырых цифр, не усредняются. Показывается максимум 2000 строк, дальше — пометка «усечено».

Сохранённые отчёты: видимость Личный / Команда / Все. Делиться (Команда/Все) могут только Owner и Admin. Viewer не может сохранять отчёты и видит только отчёты «Все». Member не может делиться шире, чем «Личный». Раскладка колонок сохраняется для каждого пользователя отдельно.

CSV-экспорт отчётов ограничен 5 запросами в минуту, плюс у воркспейса может быть отдельный лимит (включён/выключен, максимум строк — настраивается без интерфейса, через API). Каждый экспорт попадает в журнал аудита. Экспорт списков (кампании, источники, офферы, лендинги, сети, дашборд) этим лимитам не подчиняется.

Сводная таблица (Pivot)

Измерение по строкам × измерение по колонкам × одна метрика. Строки и колонки должны быть разными. Сохраняется так же, как обычный отчёт.

Логи (Log Center)

Вкладки: клики, трассировка маршрутизации, конверсии, постбэки, ошибки, CAPI. Есть фильтры и сохранённые виды (Viewer сохранять не может). Открытие клика ведёт на полную детализацию.

Трассировка маршрутизации сэмплируется — по умолчанию около 5% запросов. Хранение логов (дни): маршрутизация — 14, ошибки — 30, CAPI — 60, постбэки — 90 (обработанные постбэки хранятся).

Команда и роли

Настройки → Команда

РольПрава
Owner / AdminВсё, включая Настройки, API-ключи, журнал аудита, настройку статусов конверсий, часовой пояс/валюту воркспейса, retention.
MemberНе может делиться отчётами шире «Личный».
ViewerНе может сохранять отчёты и сохранённые виды логов; видит только отчёты с видимостью «Все».
Ограничения Member/Viewer сейчас затрагивают только отчёты и логи — на кампании, офферы, источники и флоу в коде отдельного «только чтение» для этих ролей нет.

Кастомные права — чекбоксы для Member/Viewer, выдаются только Owner/Admin: manageTeam (приглашать/удалять людей) и manageWebhooks.

Приглашения

«Создать ссылку-приглашение» — email + роль. Письмо не отправляется — ссылку /invite/{token} нужно скопировать и переслать самостоятельно. Действует 7 дней, можно отозвать. Принятие приглашения создаёт новый аккаунт — если на этот email уже есть аккаунт, принять приглашение не получится.

Удаление человека удаляет его аккаунт и освобождает место. Owner удалить нельзя, самого себя — тоже нельзя.

Места (Seats)

Считаются все аккаунты на установке. При достижении лимита новые приглашения блокируются; если людей уже больше, чем позволяет план, самые новые аккаунты получают ошибку о превышении лимита при входе. Владелец лицензии (первый зарегистрированный аккаунт) место сохраняет всегда.

На лицензированной установке самостоятельно зарегистрироваться может только самый первый аккаунт — дальше регистрация закрыта, людей добавляют только приглашением.

Безопасность

Настройки → Двухфакторная аутентификация · Сессии · Журнал аудита

Двухфакторная аутентификация (2FA)

2FA настраивается в личном кабинете на сайте (Настройки → Двухфакторная аутентификация), а не внутри трекера. Это приложение-аутентификатор (TOTP): отсканируйте QR-код (или введите ключ вручную) и подтвердите 6-значным кодом. После включения показываются 10 одноразовых резервных кодов — сохраните их сразу, повторно они не показываются. При входе после пароля запрашивается код из приложения или резервный код; код действует один раз, после 5 неверных попыток вход блокируется на 15 минут. Отключение требует пароль и код.

Сессии

Список устройств, с которых выполнен вход: браузер, ОС, IP, время. Текущее устройство помечено, любую другую сессию можно завершить.

Журнал аудита план Platinum

Доступен только Owner/Admin. Фильтр по сущности и действию, подгрузка по кнопке, разворачивание записи для деталей. Покрывает кампании, флоу, офферы, сети, источники, домены, повторные отправки постбэков, экспорты отчётов. У Источников и Сетей есть собственные вкладки Audit.

Прочая защита

Рейт-лимиты: вход и регистрация — 5 запросов в минуту, трекинговые ссылки — 20 за 10 секунд с IP, постбэки — 30 за 10 секунд. Исходящие URL (постбэки, вебхуки) блокируются, если указывают на приватные/внутренние адреса.

Интеграции

Настройки → Вебхуки · Публичный API

Вебхуки

События: создание клика, создание конверсии, обновление конверсии. Клик-событие не отправляется для ботов и заблокированных кликов.

POST ваш_URL
X-Webhook-Event: conversion.created
X-Webhook-Signature: sha256=<HMAC-SHA256 от тела запроса, ключ — ваш секрет>

{"event": "...", "sentAt": "...", "data": {...}}

Секрет показывается только один раз при создании. Кнопка «Тест» шлёт пробную доставку и показывает HTTP-ответ. Доставка: 3 попытки, таймаут 5 секунд, без постоянного журнала. Управлять вебхуками может Owner/Admin или участник с правом manageWebhooks.

Публичный API план Pro+

Owner/Admin создаёт именованный ключ вида tfk_… — показывается только один раз. В списке видны только префикс, последнее использование и кнопка отзыва. Эндпоинты только для чтения, под /api/public-api/v1, заголовок Authorization: Bearer <ключ>:

  • campaigns, offers, landings — списки.
  • stats — диапазон today/yesterday/7d/30d/month/custom.
  • POST report — группировка до 6 измерений, сравнение, Top-N, сортировка.

MCP-сервер

Скачивается с {ваш_трекер}/api/mcp-server.js; готовую curl-команду интерфейс покажет после создания ключа. Запуск — node, переменные окружения TRACKER_BASE_URL и TRACKER_API_KEY. Инструменты: list_campaigns, list_offers, list_landings, get_stats, get_report.

Лицензия и тарифы

Настройки → Лицензия

Ключ вводится не в Настройках — пока установка лицензирована, но не активирована, вместо всего интерфейса показывается полноэкранная форма активации (формат ключа AT-XXXX-XXXX-XXXX-XXXX, виден Install ID установки). Ключ также можно передать при установке переменной LICENSE_KEY.

Карточка «Лицензия» в Настройках (видна Owner/Admin, пока лицензия активна) — только для просмотра: план, часть ключа, срок действия (или «Бессрочно»), занятые места, лимиты доменов/кампаний/лендингов/офферов и включённые фичи.

Проверка и офлайн-режим

Лицензия перепроверяется каждые 5 минут, с запасом офлайн-работы около 72 часов. Если сервер лицензий недоступен и до истечения запаса остаётся меньше 24 часов — показывается жёлтый баннер с предупреждением.

Что происходит при блокировке

Дашборд возвращает ошибку 402 и показывается экран активации. При этом вход в систему, трекинговые ссылки, лендинги и приём постбэков продолжают работать — под угрозой только сам интерфейс управления.

Лимиты по тарифам

Превышение лимита доменов/кампаний/лендингов/офферов — ошибка «лимит достигнут (X / Y)». Функция вне плана — «не входит в ваш текущий план, обновите до …». Meta CAPI, тепловые карты и Публичный API — от Pro, умная ротация — от Ultra, журнал аудита — от Platinum. Сбор данных для CAPI и тепловых карт молча останавливается, если фича пропала из плана (например, при понижении тарифа).

Если установка вообще не лицензирована (self-hosted без сервера лицензий) — все лимиты сняты, все фичи разблокированы.

Настройки

Кабинет → Настройки

Карточки сверху вниз: Язык (EN/RU), Тема (светлая/тёмная), Лицензия, Воркспейс (часовой пояс и валюта — Owner/Admin), Команда, Профиль, Пароль, Сессии, Двухфакторная аутентификация, Публичный API, Вебхуки, Журнал аудита.

Часовой пояс воркспейса влияет только на часовой пояс по умолчанию в Отчётах. Валюта — только отображение по умолчанию, реальной конвертации валют нигде нет: payout'ы в разных валютах складываются как есть, без пересчёта по курсу.

Доступно только через API, без интерфейса: настройка статусов конверсий и режима даты конверсии (по дате постбэка или по дате первой конверсии); срок хранения кликов/конверсий/логов/данных вовлечённости в месяцах (из фиксированного списка значений или «хранить всегда» — уменьшение срока требует подтверждения потери данных); максимальный размер загружаемого файла (по умолчанию 50 МБ). Срок хранения логов в днях задаётся в разделе Логи.