Документация Trafflow
Полное руководство по трекеру: от первой ссылки до флоу с бандит-ротацией. Каждый раздел называет страницу в кабинете, где искать настройку, и честно отмечает, где поведение неочевидно.
Обзор и термины
Trafflow — self-hosted трекер рекламы. Основной путь данных: клик → проходит через правило флоу кампании → попадает на лендинг и/или оффер → партнёрка или ваш же бэкенд присылает постбэк → постбэк превращается в конверсию с определённым статусом.
| Термин | Что это |
|---|---|
| Клик | Один визит по трекинговой ссылке. Получает уникальный 26-символьный click_id. |
| Кампания | Трекинговая ссылка + правила маршрутизации (флоу). Привязана к домену и источнику трафика. |
| Флоу / правило | Условие (фильтр по гео, устройству и т.д.) → что показать: лендинг, оффер, прямую ссылку или действие. |
| Оффer | Партнёрская ссылка, загруженный сайт или iframe, на который в итоге попадает трафик. |
| Лендинг | Прокладочная страница перед оффером: внешний URL, загруженный ZIP или HTML-код. |
| Постбэк | HTTP-запрос от партнёрки (или вашего сайта) о событии: лид, продажа, отказ и т.д. |
| Конверсия | Запись о событии в базе Trafflow, созданная или обновлённая постбэком. |
| sub1–sub30 | 30 универсальных слотов для передачи параметров (ID объявления, названия кампании рекламной сети и т.п.) через весь путь клика. |
Как устроен клик
Коротко — что происходит между открытием ссылки и редиректом:
- Посетитель открывает
https://домен/путь. - Если кампания не активна — редирект на запасной URL (Fallback) или ответ 410. Если домен отключён — тоже 410.
- Считаются гео, устройство и признаки бота (см. ниже).
- Выбирается правило: сначала «Принудительные» (INTERCEPT), затем «Обычные» (NORMAL), затем «По умолчанию» (FALLBACK).
- Внутри правила отдельно крутятся лендинг и оффер (ротация, капы, замены).
- Клик сохраняется, посетитель получает редирект.
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. Боты и заблокированные клики всё равно сохраняются в логах — просто помечены.
Источники трафика
Кабинет → Источники трафика
Источник описывает, откуда идёт трафик (Meta, Google Ads, TikTok, Push, Native или Custom), как считать его стоимость и — для Meta — интеграцию с CAPI и синком реальных расходов.
Создание и типы
Тип выбирается один раз и не меняется после создания. Meta/Google/TikTok сразу подставляют пресет маппинга sub-параметров:
| Источник | Маппинг по умолчанию |
|---|---|
| Meta Ads | sub1=campaign_name, sub2=ad_id, sub3=adset_id, sub4=campaign_id |
| Google Ads | sub1=campaign_id, sub2=adgroup_id, sub3=creative_id, sub4=keyword, sub8=gclid |
| TikTok Ads | sub1=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 | фиксированная сумма за период, если был хотя бы один клик |
Приоритет расчёта стоимости
Применяется на страницах Источников, Кампаний и на дашборде:
- Если за период есть захваченная цена по клику (параметр
costв ссылке) — вся стоимость берётся из неё. - Иначе: стоимость = ручные расходы кампании + формула модели.
- Синк реальных расходов 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) и минимальная выборка на вариант определяют, когда объявляется победитель.
Блокировка и капы внутри правила
Действие «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 уровней, циклы отклоняются.
Как собирается итоговый URL оффера
- URL оффера.
- + шаблон Offer URL сети — добавляется как query-string; параметры, уже заданные в URL оффера, побеждают.
- Подстановка макросов и 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».
Лендинги
Кабинет → Лендинги → редактор / тепловая карта
Типы
- Внешний 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, если он передан).
status мапится только через карту статусов сети и может стать только PENDING, REJECTED или APPROVED. Неизвестное значение (и TRASH тоже!) становится APPROVED.
Способ B — ссылка с токеном сети (рекомендуется)
Берётся на странице Сети → (ваша сеть) → Постбэк. Формат: /postback?token=nt_…&event=…&<параметры сети>.
- Токен однозначно определяет сеть. Неверный токен или отключённая сеть — ответ 403.
- Проверка дубля — по связке сеть + клик + событие + (ID события или transaction_id сети). Статус в эту связку не входит — значит, второй постбэк с тем же событием, но другим статусом (например, pending → approved), обновит ту же конверсию, а не создаст дубль. Это и есть ответ на «как сделать, чтобы и лид, и продажа отбивались по одному заказу».
- Идентичный повторный статус считается дублем и игнорируется.
Параметры, которые распознаются автоматически
| Поле | Принимаемые имена параметра |
|---|---|
| click_id | click_id, clickid, cid, subid, sub_id |
| payout | payout, amount, revenue, sum, commission |
| currency | currency, cur |
| status | status, state, event_status, conversion_status |
| transaction_id | transaction_id, txid, tid, order_id, conversion_id |
| event | event, type, goal |
Если у сети задан свой маппинг параметров — он проверяется первым, эти имена — запасной вариант.
Поле event определяет тип конверсии: lead, registration/reg, sale, purchase, deposit/dep, rebill. Всё остальное — CUSTOM.
Как считается payout и валюта
Если постбэк прислал payout — побеждает он. Если нет — берётся выплата оффера (FIXED, либо доля × параметр amount из постбэка). Валюта: из постбэка → из оффера → из настроек сети по умолчанию. На токен-постбэке более поздний payout может заменить payout, рассчитанный из оффера, но никогда не заменит payout, который сеть уже реально прислала.
Статусы конверсий
/workspaces/:id/conversion-statuses), только для ролей Owner и Admin.| Системный статус | Внутренний lifecycle |
|---|---|
| lead, registration, deposit, sale | APPROVED |
| pending, hold | PENDING |
| rejected | REJECTED |
| trash | TRASH |
У каждого статуса настраивается: сырые значения сети, которые в него мапятся; цвет; «считать конверсией»; «считать доходом»; «отправлять постбэк источнику»; «влияет на кап оффера»; допустимые следующие статусы.
- По умолчанию pending и hold считаются конверсией и доходом, но не отправляются источнику.
- rejected и trash не считаются нигде.
- Сырой статус, которого воркспейс не узнаёт, становится «sale» (approved) — по умолчанию неизвестное трактуется как успех, будьте внимательны.
- Порядок сопоставления: сначала карта статусов сети, потом сырые значения воркспейса.
- Собственный статус можно удалить, только если его не использует ни одна конверсия.
Что происходит после сохранения конверсии (по порядку)
- Исходящие постбэки кампании.
- Meta CAPI.
- Вебхук (CONVERSION_CREATED или CONVERSION_UPDATED).
- S2S-постбэки источника (только если у статуса включено «отправлять источнику»).
- Счётчик капа оффера.
Страницы
- Конверсии — список только для чтения: время, 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.
- Токен постбэка генерируется на сеть и виден только внутри готовых ссылок. «Перевыпустить токен» сразу гасит старую ссылку.
Готовые пресеты
| Пресет | Логика |
|---|---|
| Generic | click_id + payout + status |
| aff_sub-стиль | использует transaction_id |
| Lead + Sale | lead → PENDING, sale → APPROVED (обновляет ту же конверсию) |
| Registration / Deposit / Rebill | каждое — отдельный тип конверсии |
Общая для всех пресетов карта статусов: approve/approved/confirmed → APPROVED; pending/hold → PENDING; declined/rejected/reject → REJECTED; trash → TRASH.
Отключённую сеть нельзя назначить новым офферам, её постбэки отклоняются. Удалить сеть, пока к ней привязаны офферы, нельзя.
Домены
Кабинет → Домены
- Добавьте хостнейм.
- Создайте A-запись на IP сервера (показан в интерфейсе; если сервер не настроил
TRACKER_PUBLIC_IP— будет предупреждение). Используйте@для корневого домена. - Проверка запускается сразу, затем автоматически: каждую минуту пока 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, % одобрения и другие производные.
Итоги всегда пересчитываются из сырых цифр, не усредняются. Показывается максимум 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, выдаются только 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, Вебхуки, Журнал аудита.
Доступно только через API, без интерфейса: настройка статусов конверсий и режима даты конверсии (по дате постбэка или по дате первой конверсии); срок хранения кликов/конверсий/логов/данных вовлечённости в месяцах (из фиксированного списка значений или «хранить всегда» — уменьшение срока требует подтверждения потери данных); максимальный размер загружаемого файла (по умолчанию 50 МБ). Срок хранения логов в днях задаётся в разделе Логи.