L linkora
Руководство по продукту и API

Документация, с которой можно начать сегодня.

Linkora объединяет рекламодателя, арбитражника и операционную команду вокруг единой событийной модели. Здесь собраны все действия от первого оффера до расчета комиссии.

Стартовая последовательность
  1. 01 Создайте личный кабинет
  2. 02 Добавьте оффер и условия
  3. 03 Создайте кампанию для источника
  4. 04 Настройте S2S-события
00

Запуск интеграции без пробелов

Если вы подключаете продукт впервые, используйте единый путь: личный кабинет, оффер, сохранение click_id, Sandbox, внешний подписанный тест, production S2S и проверка готовности запуска.

Для продукта

Проверьте до production

Откройте Sandbox в кабинете рекламодателя: он выдаст тестовые ID, проверит payload и примет внешний подписанный запрос без начислений.

Открыть Sandbox
Для команды

Закройте чек-лист

После Sandbox откройте «Готовность запуска»: Linkora покажет ключи, офферы, контракт и сигналы, которые нужно устранить до трафика.

Открыть готовность
01

Регистрация, роли и вход

Один email может работать с обеих сторон сети. После регистрации Linkora сразу открывает нужный кабинет: арбитражнику - офферы и трафик, рекламодателю - офферы и интеграцию. Если обе роли активны, откроется страница «Личные кабинеты».

Арбитражник

Привлекает и измеряет

Берёт оффер, создаёт трекинговую ссылку, задаёт метки, следит за конверсиями, холдами и заявками на выплату.

Рекламодатель

Запускает и подтверждает

Создаёт условия оффера, передаёт события из backend и видит качество трафика, выручку и обязательства перед партнёрами.

Чтобы сменить сторону работы, нажмите карточку профиля в шапке любого кабинета и выберите роль в меню «Личные кабинеты». Там же можно открыть полный список и добавить вторую роль без нового пароля. Linkora сохраняет запрошенный раздел при входе, не пускает в кабинет без нужной роли и автоматически переводит старые адреса /affiliate и /advertiser на современные страницы.

01.1

Каталог офферов: как выбрать и подключить

Откройте раздел «Офферы» в личном кабинете партнёра. Каталог рассчитан на большую сеть: сначала сузьте выбор по категории, модели оплаты, ГЕО и статусу подключения, затем откройте карточку подходящего оффера.

Что видно в карточке

Условия до запуска

Карточка показывает рекламодателя, модель выплаты, ГЕО, холд, допустимые источники, окно атрибуции, KPI и правила для каждого целевого действия. Так можно сравнить офферы, не собирая условия вручную в таблицу.

Как получить доступ

Заявка в один шаг

Публичный оффер доступен сразу. Для оффера «По заявке» укажите источник и аудиторию, затем отправьте запрос. При автоматическом допуске ссылка станет доступна сразу, при ручном - после решения рекламодателя.

МетрикаКак считаетсяКак использовать
CRЦелевые действия / переходы за последние 30 днейСравнить вероятность результата
ARПодтверждённые действия / все целевые действияОценить стабильность апрува
eCPCПодтверждённое вознаграждение / переходы, отдельно по валютамСопоставить доходность источника

CR, AR и eCPC появляются после 20 переходов за 30 дней. Linkora показывает только агрегаты: в каталоге нет чужих click_id, меток источника, пользователей, заявок или секретов интеграции.

Получение каталога через API
GET /api/v1/offers/catalog?category=telegram_bots&payoutModel=cpl&geo=RU&access=available&page=1&pageSize=12
Authorization: Bearer <access_token>

// access: all | available | requires_request | requested
// sort: recommended | newest | updated

После одобрения откройте карточку ещё раз и нажмите «Создать ссылку». Конструктор уже знает выбранный оффер: остаётся добавить источник, кампанию и метки. Если оффер требует принять условия, Linkora сначала попросит подтвердить нужную редакцию документа.

01.2

Управление офферами: оператор и рекламодатель

У команды платформы и рекламодателя разные реестры офферов. Оператор управляет всей сетью, категориями и модерацией. Рекламодатель видит только свои продукты, создаёт их в отдельной форме, ведёт условия и разбирает заявки партнёров. Все изменения сохраняются в аудите Linkora.

1. Создайте структуру

Категория перед карточкой

Откройте «Офферы» - «Категории», добавьте короткое название и технический идентификатор латиницей, например telegram_products. Идентификатор используется в фильтрах и API. При его смене Linkora переносит связанные офферы автоматически, поэтому карточки не теряют категорию.

2. Заполните оффер

Сначала условия, затем запуск

Выберите рекламодателя, добавьте ссылку продукта с click_id, обложку, ГЕО, источники трафика, холд и окно атрибуции. Создайте одно или несколько правил выплаты: фикс, процент с платежа или оба правила для гибридной модели.

3. Ведите собственный реестр

Один оффер - одна подробная карточка

В кабинете рекламодателя откройте «Офферы», примените фильтры по статусу, категории и модели оплаты, затем нажмите «Новый оффер». После сохранения открывается карточка с условиями, переходами, целевыми действиями, CR, AR, eCPC и очередью заявок.

4. Разберите доступ

Заявка не даёт доступ сама по себе

Для витрины «По заявке» выберите ручной или автоматический допуск. При ручном варианте заявка появляется в карточке оффера, где её можно одобрить, отклонить или выдать доступ конкретной команде партнёра вручную.

СценарийЧто сделать в карточкеЧто увидит партнёр
ЧерновикСохранить условия без публикацииОффер не доступен для запуска
МодерацияРекламодатель отправляет карточку на проверку, команда выбирает решение и при необходимости добавляет комментарийИстория отправки и решений с видимым для рекламодателя комментарием
Активный офферВыбрать витрину и способ допускаКарточка с CR, AR, eCPC, условиями и кнопкой подключения
Заявка партнёраОдобрить, отклонить или выдать доступ вручнуюУведомление и доступ к созданию кампании

В реестре показатели считаются за последние 30 дней. CR - целевые действия от переходов, AR - подтверждённые действия от всех целевых, eCPC - подтверждённое вознаграждение на переход. Для честного сравнения они появляются после 20 переходов; до этого Linkora показывает, что данных ещё недостаточно.

Внутри карточки оффера есть отдельный график за 14 дней: переходы, целевые действия и подтверждения. Он использует те же атрибутированные данные, что CR и AR, поэтому помогает заметить изменение потока, не раскрывая чужие метки, пользователей или технические идентификаторы.

Реестр и изменение оффера через API платформы
GET /api/v1/offers/management?status=pending_review&category=telegram_bots&payoutModel=cpa_first_purchase&page=1&pageSize=12
Authorization: Bearer <platform_access_token>

PATCH /api/v1/offers/:offerId
Authorization: Bearer <platform_access_token>
Content-Type: application/json

{
  "status": "active",
  "visibility": "affiliate_list",
  "approvalMode": "manual",
  "payoutRules": [{
    "name": "Первая оплата",
    "eventType": "first_purchase",
    "payoutModel": "cpa_first_purchase",
    "fixedAmount": "12.00",
    "currency": "USD",
    "isDefault": true,
    "priority": 10
  }]
}

PATCH /api/v1/offers/categories/:categoryId
Authorization: Bearer <platform_access_token>
Content-Type: application/json

{ "name": "Telegram-продукты", "slug": "telegram_products", "active": true, "sortOrder": 20 }
Решение модератора и история по офферу
POST /api/v1/offers/:offerId/moderation
Authorization: Bearer <platform_access_token>
Content-Type: application/json

{
  "decision": "return_to_draft",
  "note": "Добавьте ссылку с макросом click_id и уточните разрешённые источники трафика."
}

// decision: approve | return_to_draft | pause | archive

GET /api/v1/offers/:offerId/moderation-history
Authorization: Bearer <platform_or_advertiser_access_token>
Очередь модерации для команды платформы
GET /api/v1/offers/moderation-queue?sort=priority&category=telegram_products&payoutModel=hybrid&slaStatus=overdue&page=1&pageSize=12
Authorization: Bearer <platform_access_token>

// Нужна роль платформы с правом moderation.read.
// slaStatus: on_track | due_soon | overdue.
// Ответ содержит время ожидания, приоритет, границы SLA, CR, AR, eCPC и чек-лист готовности.
// sort: priority | newest
Сроки SLA и автоматическая эскалация
PATCH /api/v1/admin/platform-configuration
Authorization: Bearer <platform_access_token>
Content-Type: application/json

{
  "offerModerationSlaWarningHours": 24,
  "offerModerationSlaCriticalHours": 48
}

// criticalHours должен быть строго больше warningHours.
// Worker открывает сигнал после warningHours и повышает его после criticalHours.
// Экран команды: /admin/offers/review/sla
Проверка готовности и пакетная модерация
GET /api/v1/offers/:offerId/moderation-readiness
Authorization: Bearer <advertiser_or_platform_access_token>

POST /api/v1/offers/moderation/batch
Authorization: Bearer <platform_access_token>
Content-Type: application/json

{
  "offerIds": ["offer_a", "offer_b"],
  "decision": "approve"
}

// Пакетно одобряются только офферы со 100% готовностью.
// На доработку можно вернуть несколько офферов, передав обязательный note.
Собственный реестр и сложные условия через API рекламодателя
GET /api/v1/offers/advertiser-management?organizationId=adv_8wm2&status=active&payoutModel=hybrid&page=1&pageSize=12
Authorization: Bearer <advertiser_access_token>

PATCH /api/v1/offers/:offerId
Authorization: Bearer <advertiser_access_token>
Content-Type: application/json

{
  "visibility": "affiliate_list",
  "approvalMode": "manual",
  "allowedGeos": ["RU", "KZ"],
  "forbiddenTrafficSources": ["incent"],
  "payoutModel": "hybrid",
  "payoutRules": [
    {
      "name": "Фикс за первую оплату",
      "eventType": "first_purchase",
      "payoutModel": "cpa_first_purchase",
      "fixedAmount": "8.00",
      "currency": "USD",
      "geo": "RU",
      "planId": "pro_monthly",
      "isDefault": true,
      "priority": 10
    },
    {
      "name": "Доля с продления",
      "eventType": "renewal",
      "payoutModel": "revshare",
      "percentRate": "22.5",
      "currency": "USD",
      "planId": "pro_monthly",
      "priority": 20
    }
  ],
  "caps": [
    { "period": "daily", "metric": "first_purchases", "limit": 50, "active": true },
    { "period": "monthly", "metric": "renewals", "limit": 500, "active": false }
  ]
}

Для ручного доступа выберите «По заявке» и «Ручное одобрение». Для простого самообслуживания выберите «По заявке» и «Автоматическое одобрение». Приватный оффер не появляется в общем каталоге и требует персонального допуска от команды или рекламодателя.

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

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

Экран «Контроль SLA модерации» отделяет новые карточки от тех, которым уже нужна реакция. Порог внимания и порог просрочки настраиваются в «Операционные сигналы». Worker создаёт сигнал с владельцем, дедлайном, назначением и Telegram-эскалацией, когда срок наступает, и закрывает его только после выхода оффера из статуса модерации. Сам сигнал не публикует оффер, не меняет условия и не делает финансовых операций.

Перед отправкой Linkora проверяет обязательную основу: ссылку с макросом {click_id} и хотя бы одно правило выплаты. Описание, ограничения и условия тоже видны в чек-листе, но остаются предметом решения модератора. Пакетное одобрение доступно только для полностью готовых карточек и создаёт отдельную запись аудита наряду с решениями по каждому офферу.

Поле payoutRules заменяет набор правил целиком: перед обновлением отправляйте все актуальные строки, а не только новую. То же относится к caps. Пустой массив осознанно снимает все лимиты, поэтому удобнее редактировать их в карточке оффера, где Linkora собирает корректный запрос сама.

01.3

Ручная проверка конверсий и сроки решения

Рекламодатель остаётся источником правды по событию, а Linkora даёт команде платформы безопасную очередь для спорных случаев до расчёта партнёрской комиссии. Это отдельный процесс от модерации оффера: проверяется конкретное зафиксированное действие, а не карточка продукта.

Что попадает в очередь

Только случаи, где нужен человек

Linkora показывает конверсии без подтверждённой атрибуции, ожидающие подтверждения или имеющие открытый сигнал высокого риска. Обычные подтверждённые события не создают лишнюю работу модератору.

Что проверяет модератор

Атрибуция, статус и риск

В карточке видны рекламодатель, оффер, тип и время события, сумма, партнёр, начисление, статус атрибуции и понятные причины попадания в очередь. Технические payload и секреты не открываются.

Решение

Подтвердить или отклонить

При подтверждении для неатрибутированной конверсии укажите команду партнёра. Если партнер уже найден, его нельзя заменить через ручную проверку. При отклонении нужна короткая причина. Решение попадает в аудит, обновляет финансовый контур и ставит нужный postback.

Контроль срока

Сначала внимание, затем эскалация

Отсчёт начинается с создания конверсии. После порога внимания worker открывает операционный сигнал, после критического срока - повышает его. Ни один сигнал не принимает финансовое решение сам.

ЭкранКогда открыватьРезультат
Ручная проверкаНужно разобрать все новые или отфильтрованные конверсииФильтры, безопасные детали, одиночное и пакетное решение
Контроль SLAКоманде важно сначала убрать просроченные случаиСрез по сроку, риску, офферу и рекламодателю
Операционные сигналыНужно назначить владельца или контролировать эскалациюОтветственный, рабочая заметка, история и автоматическое закрытие
Получение очереди ручной проверки через API
GET /api/v1/admin/manual-review/conversions/queue?slaStatus=overdue&eventType=first_purchase&riskLevel=high&sort=priority&page=1&pageSize=20
Authorization: Bearer <platform_access_token>

// Нужна роль платформы с правом moderation.read.
// Фильтры: q, advertiserId, offerId, conversionId, eventType, riskLevel, slaStatus.
// slaStatus: on_track | due_soon | overdue.
// Ответ не содержит S2S-payload, HMAC, click_id, внешние ID пользователей или платежей.
Одиночное и пакетное решение модератора
PATCH /api/v1/admin/conversions/:conversionId/review
Authorization: Bearer <platform_access_token>
Content-Type: application/json

{
  "decision": "approve",
  "affiliateOrganizationId": "partner_team_id",
  "note": "Атрибуция подтверждена по согласованным данным."
}

POST /api/v1/admin/manual-review/conversions/batch
Authorization: Bearer <platform_access_token>
Content-Type: application/json

{
  "conversionIds": ["conv_1", "conv_2"],
  "decision": "reject",
  "reason": "Не удалось подтвердить источник привлечения"
}

// decision: approve | reject.
// При reject поле reason обязательно. В batch допускается до 100 конверсий.
// affiliateOrganizationId указывайте только для конверсии без атрибуции.
// Уже найденного партнера нельзя заменить через этот endpoint: API вернет 400.
// После финального решения повторный review невозможен: API вернет 409.
// В batch каждая конверсия проверяется отдельно: неподходящая строка не меняет остальные.
Настройка SLA ручной проверки
PATCH /api/v1/admin/platform-configuration
Authorization: Bearer <platform_access_token>
Content-Type: application/json

{
  "conversionModerationSlaWarningHours": 12,
  "conversionModerationSlaCriticalHours": 24
}

// criticalHours должен быть строго больше warningHours.
// Экран команды: /admin/moderation/sla.
// Настройка требует права settings.manage.

Откройте «Ручная проверка конверсий» для общего потока и «Контроль SLA ручной проверки», когда важен порядок сроков. Фильтр из операционного сигнала ведёт сразу к нужной конверсии, а не в общий длинный реестр.

Предупреждение и просрочка - это рабочие напоминания, а не автоматическое одобрение. Worker не меняет оффер, доступ партнёра, комиссию, холд или выплату без явного решения сотрудника с правом moderation.manage.

Решение принимается один раз, пока конверсия ожидает проверки. Для подписки Linkora сохраняет исходного партнера и исходный клик: поздний переход другого партнера не переносит RevShare или Hybrid-комиссию. Событие той же подписки с другим оффером остается без автоматического начисления и требует отдельной финансовой проверки.

01.4

Обращения в Linkora и контроль ответа

Поддержка нужна для рабочих вопросов по интеграции, офферам, доступам, отчетам и кабинету. Это отдельный процесс от споров и сверок: обычное обращение не меняет конверсию, комиссию, выплату или финансовый статус.

Для партнера и рекламодателя

Один диалог по конкретному кабинету

Откройте «Обращения», выберите нужный личный кабинет, тему и приоритет, затем опишите вопрос. Карточка показывает статус, срок реакции и публичную переписку с командой Linkora.

Открыть обращения партнера
Для команды Linkora

Очередь, владелец и SLA

В админке есть отдельные экраны общей очереди и SLA-среза. Команда назначает специалиста, меняет статус, отвечает пользователю и ведет внутреннюю заметку, не видимую участнику.

Открыть очередь команды
Для руководителя поддержки

Скорость реакции и нагрузка

Отдельная аналитика показывает поступление, первые ответы, решения, SLA, темы и нагрузку команды за 7, 30 или 90 дней. В отчет не попадает текст обращения или внутренняя переписка.

Открыть аналитику поддержки
Для команды Linkora

Безопасные готовые ответы

Шаблон подставляет только проверенные данные текущего диалога и отправляется сотрудником вручную. Архивные шаблоны остаются в истории, но не используются в новых ответах.

Открыть библиотеку ответов
Для руководителя поддержки

Рабочее окно и автораспределение

Отдельный экран показывает доступную емкость команды, назначение по текущей нагрузке и адресные эскалации. SLA при этом остается календарным и продолжает контролироваться круглосуточно.

Открыть автоматизацию поддержки
Как работает выбор владельца

Равномерно и с видимой историей

Новое обращение получает доступного специалиста с минимальной активной нагрузкой. Если лимит команды исчерпан, worker повторит попытку позже, а действие останется в карточке и Audit Log.

Проверить очередь SLA
Для руководителя поддержки

Личная доступность команды

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

Открыть команду поддержки
Передача смены

Пауза без потери контроля

Пока специалист на паузе, Linkora выбирает другого доступного коллегу. В карточке видны причина исключения, текущая нагрузка и время окончания паузы, поэтому очередь не превращается в черный ящик.

Проверить правила маршрутизации
Контроль очереди

Компетенции по направлениям

Для каждого специалиста можно выбрать темы, с которыми он работает: интеграции, офферы, финансы, трафик, аккаунты или общие вопросы. Экран команды сразу показывает покрытие каждого направления.

Открыть покрытие команды
Защита качества ответа

Тема важнее свободного слота

Автоматизация не отправит финансовый или интеграционный запрос случайному свободному сотруднику. Если подходящий специалист занят или не настроен, карточка остается в очереди для следующей попытки.

Проверить автоматизацию
Планирование смен

Графики смен без случайных назначений

Руководитель может оставить сотрудника на общем графике команды или задать ему личные дни и часы. Вне личной смены специалист не получает новые автоназначения, но сохраняет доступ к своим диалогам и может быть выбран вручную при необходимости.

Открыть графики смен
Предсказуемое покрытие

Общее окно остается главным правилом

Личная смена только сужает базовое рабочее окно Linkora: система одновременно учитывает день, час, компетенцию, паузу и лимит нагрузки. Так в очереди видно реальное покрытие, а не формальный список сотрудников.

Проверить покрытие команды
Предупреждение заранее

Прогноз покрытия без сюрпризов

Отдельная почасовая матрица на 3, 7 или 14 дней показывает, где у темы не будет подходящего специалиста. Риск виден до начала смены, а не после появления нераспределенного обращения.

Открыть прогноз покрытия
Честный план

График и нагрузка не смешиваются

Прогноз строится по часам, компетенциям, сменам и паузам. Он не обещает будущую свободную емкость: текущую нагрузку и лимиты команда продолжает контролировать в живом разделе «Команда поддержки».

Проверить нагрузку команды
Управляемые исключения

Дежурства и отсутствия без правки смен

Отдельный реестр позволяет заранее отметить отпуск, разовое отсутствие или дежурство. Интервал учитывается в автоназначении и прогнозе, но не меняет уже открытые диалоги, роли и SLA.

Открыть дежурства
План без конфликтов

Один интервал - одно понятное решение

Система не принимает пересекающиеся правила для одного сотрудника. Дежурство расширяет только личную смену, а отсутствие надежно исключает кандидата в API, worker и матрице покрытия.

Проверить прогноз после изменений
Реальная численность

Плановые минимумы покрытия

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

Настроить минимумы
Честная матрица

Численность важнее одной зеленой ячейки

В матрице видно факт и план, например 1/2. Желтая ячейка помогает закрыть дефицит до начала смены, не меняя автоматически маршруты, SLA или текущие обращения.

Открыть план покрытия
Операционный контур

Операционные сигналы покрытия

Когда план важной темы сохранен, его можно связать с реестром сигналов. Worker заранее найдет дефицит, а после восстановления смены, дежурства или состава команды закроет сигнал сам.

Открыть сигналы поддержки
Без лишнего шума

Только сохраненный план

По умолчанию уведомление выключено. После осознанного включения оно следит за ближайшими 24 часами и создает один понятный сигнал на тему вместо десятков одинаковых напоминаний.

Настроить план и сигнал
Гибкий календарь

Пиковые часы без завышения плана

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

Настроить календарные профили
Одни цифры везде

Профиль виден в прогнозе и сигнале

Выбранный для часа минимум используется и в почасовой матрице, и в ближайшей проверке worker. В карточке дефицита видно, что требование пришло из пикового профиля, а не из скрытой настройки.

Открыть прогноз с профилями
СтатусКто делает следующий шагЧто происходит со сроком
Новый запрос / В работеКоманда LinkoraSLA отсчитывается от последней активности участника
Ждем ответПартнер или рекламодательSLA команды остановлен до нового сообщения
Решен / ЗакрытДиалог завершенОперационный сигнал закрывается следующим циклом worker
Создание обращения через API
POST /api/v1/support/requests
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "organizationId": "aff_123",
  "category": "integration",
  "priority": "high",
  "subject": "Тестовое S2S-событие не проходит проверку",
  "description": "Проверили URL и время запроса. Нужна помощь с event_time."
}
Список обращений и ответ команды
GET /api/v1/affiliate/support/requests?status=open&sort=sla
Authorization: Bearer <access_token>

POST /api/v1/support/requests/<request_id>/messages
Authorization: Bearer <platform_access_token>
Content-Type: application/json

{
  "body": "Проверяем mapping и вернемся с ответом в этом диалоге.",
  "visibility": "participants"
}
Проверка правил автоматизации
GET /api/v1/admin/support/automation
Authorization: Bearer <platform_access_token>

PATCH /api/v1/admin/support/automation
Authorization: Bearer <platform_access_token>
Content-Type: application/json

{
  "autoAssignmentEnabled": true,
  "businessTimezone": "Europe/Moscow",
  "businessDays": [1, 2, 3, 4, 5],
  "businessStartHour": 9,
  "businessEndHour": 21,
  "maxActiveRequestsPerAssignee": 20,
  "escalationEnabled": true,
  "escalationRepeatHours": 4
}
Проверка доступности специалиста, компетенций и смен
PATCH /api/v1/admin/support/automation/team/<user_id>
Authorization: Bearer <platform_access_token>
Content-Type: application/json

{
  "autoAssignmentEnabled": true,
  "useGlobalCapacity": false,
  "maxActiveRequests": 8,
  "supportedCategories": ["integration", "offers", "traffic"],
  "useGlobalBusinessHours": false,
  "weeklySchedule": [
    {"weekday": 1, "startHour": 9, "endHour": 18},
    {"weekday": 2, "startHour": 9, "endHour": 18}
  ],
  "pausedUntil": "2026-08-27T16:00:00.000Z"
}

// Вернуть специалиста в автоматический поток:
{"clearPause": true, "useGlobalCapacity": true}

// Вернуть общий график команды:
{"useGlobalBusinessHours": true}

// Компетенции обязательны для новых автоназначений.
// Личная смена дополнительно сужает общее рабочее окно.
// Ручное назначение не ограничивается этими правилами.

По умолчанию предупреждение появляется через 12 часов, а просрочка - через 24. Пороги настраивает команда в «Операционных сигналах». Worker создает дедуплицированный сигнал и, если это разрешено в правилах поддержки, может назначить владельца свободному обращению. Он не меняет статус, оффер, доступ, трафик или деньги автоматически.

Не отправляйте в сообщение пароль, токен, API-ключ, HMAC, полный S2S-payload, платежные или персональные данные. Для разногласия по конкретной конверсии, комиссии или выплате используйте «Споры и сверки» и защищенные доказательства.

01.1

Рост сети, приглашения и рекомендации

Команда Linkora ведет подключение без отдельной таблицы: создает персональную ссылку, фиксирует следующий шаг, ставит задачу и видит первый подтвержденный результат. Сообщения не отправляются автоматически: менеджер сам выбирает канал и момент коммуникации.

Приглашение

Ссылка закрепляет роль

В админке выберите email и роль. Ссылка привязана к этому email, сроку и роли, поэтому ее нельзя использовать для другой учетной записи. Получатель может создать новое пространство или добавить вторую роль под уже активным аккаунтом.

Подбор

Рекомендация объясняет себя

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

КтоГде работатьРезультат
МенеджерАдминка: Рост сети, Приглашения, Задачи, ШаблоныВоронка, ручная ссылка, срок и история первого результата
ПартнерКабинет: Подбор офферовДоступные предложения и понятная причина рекомендации
РекламодательКабинет: ПартнерыОценка активного собственного контура для следующего решения

Подробный сценарий с API, статусами приглашения, задачами и переменными шаблонов находится в файле docs/ROST_SETI_I_KOMMUNIKATSII.md проекта.

02

Трекинг и партнерские ссылки

В разделе «Ссылки» арбитражник собирает разовую ссылку под конкретный источник: выбирает оффер, задает source_id, кампанию и метки sub1-sub4. Эти данные попадут в click, отчеты, конверсии и postback.

Публичный оффер

Запуск сразу

Откройте витрину, выберите оффер и скопируйте ссылку из конструктора. Уникальный aff_id уже добавлен Linkora.

Оффер по заявке

Доступ после решения

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

Сохраните click_id в Telegram-боте или продукте и возвращайте его в S2S-событии. Без него событие появится в журнале рекламодателя, но не будет автоматически привязано к арбитражнику.

03

Кампании: постоянные ссылки и чистая аналитика

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

Как запустить

Одна ссылка для одного запуска

Откройте «Кампании», выберите оффер, задайте понятное название и источник. После сохранения скопируйте постоянную ссылку. В ней есть campaign и aff_id; не удаляйте и не заменяйте эти параметры.

Как остановить

Пауза сохраняет историю

Поставьте кампанию на паузу, когда размещение завершено. Новые переходы будут остановлены, а накопленные конверсии, продления и расчеты останутся в отчетах. Для нового оффера создавайте новую кампанию.

ПолеКогда использоватьПример
НазваниеЧтобы команда узнала запускTelegram Ads · сентябрь
source_idДля сравнения площадокtelegram_ads
Внешняя меткаЧтобы связать с рекламным кабинетомtgads_0926_01
sub1-sub8Для креативов, сегментов и размещенийsub1=creative_video_a

Откройте карточку кампании, чтобы увидеть динамику за 14 дней, долю подтвержденных действий, сумму комиссий и перейти в детальный отчет уже с выбранным campaignId.

03.0

Реестр источников: код, контроль и показатели

Реестр нужен для повторяемой атрибуции. Сначала создайте источник с понятным названием и постоянным кодом, затем выберите его при создании кампании. Linkora скопирует код в переход и сохранит связь с кампанией.

Партнер

Один источник - один постоянный код

В разделе «Источники трафика» добавьте площадку, канал или рекламный кабинет. Код состоит из строчных латинских букв, цифр, точки, дефиса или нижнего подчеркивания, например telegram_ads_ru. Код нельзя изменить после создания.

Открыть реестр
Команда Linkora

Оперативная пауза без переписывания истории

Платформа видит только название, канал, организацию и агрегаты. При паузе источника новые переходы по связанным кампаниям прекращаются, но click, конверсии, комиссии и выплаты не меняются.

Открыть сетевой реестр
ПоказательРасчетКак использовать
CRПодтвержденные действия / переходыСравнивать конверсию площадок одного запуска
ARПодтвержденные действия / все действияОтделять качество трафика от задержки модерации
eCPCПодтвержденная комиссия / переходыСверять доходность в каждой валюте отдельно
Переходы 7дВсе click по связанным кампаниям за последние семь днейБыстро видеть активность текущего запуска

Источник кампании можно менять только до первых переходов или конверсий. После этого создайте новую кампанию: так Linkora не перепишет уже сложившуюся атрибуцию и финансовую историю.

Источник и кампания через API
POST /api/v1/affiliate/traffic-sources
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "affiliateOrganizationId": "aff_123",
  "name": "Telegram Ads RU",
  "code": "telegram_ads_ru",
  "channel": "telegram_ads",
  "status": "active",
  "note": "Основной тестовый кабинет"
}

POST /api/v1/affiliate/campaigns
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "affiliateOrganizationId": "aff_123",
  "offerId": "offer_123",
  "name": "Telegram Ads · сентябрь",
  "trafficSourceId": "source_123",
  "status": "active"
}
03.0.1

Согласованные варианты меток: меньше шума, без санкций

Партнер может описать ожидаемый альтернативный source_idдля конкретного источника. Linkora не скрывает разницу кодов, а отделяет ее от необъясненных случаев в журнале и аналитике. Это не влияет на редирект, атрибуцию или деньги.

Партнер

Зафиксировать понятный контекст

В разделе «Согласованные метки» выберите источник, укажите код, название и внутреннюю заметку. Код сохраняется постоянным, поэтому для новой альтернативы создайте отдельную запись.

Открыть согласованные метки
Команда Linkora

Видеть агрегат, а не приватную заметку

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

Открыть сетевой реестр
Состояние вариантаКак читается разница кодовВлияние на трафик
Активный вариант совпалПоказывается как согласованный в журнале и метрикахНет: click и редирект остаются обычными
Варианта нет или он архивированПоказывается как необъясненная меткаНет: нужна только ручная сверка разметки
Оператор меняет статусОбновляется текущая диагностическая классификацияНет: не меняются атрибуция, антифрод или финансы

Вариант привязан к одному источнику и не является доказательством площадки размещения. Полный URL, click_id, IP, S2S-payload и приватная заметка партнера не попадают в сетевой обзор.

Согласованный вариант через API
POST /api/v1/affiliate/traffic-source-label-aliases
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "affiliateOrganizationId": "aff_123",
  "trafficSourceId": "source_123",
  "name": "Короткая ссылка для посева",
  "code": "tg_short_ru",
  "note": "Ее добавляет согласованный сокращатель ссылок"
}

PATCH /api/v1/admin/traffic-source-label-aliases/alias_123
Authorization: Bearer <platform_access_token>
Content-Type: application/json

{
  "status": "archived"
}
03.0.2

Проверка меток источника без остановки трафика

Linkora сравнивает заявленный код кампании с входящим параметром source_id. Разница попадает в журнал наблюдений, чтобы заметить ошибку в шаблоне ссылки или разметке, но сама по себе ничего не блокирует и не меняет в расчётах.

Когда появляется запись

Только при двух разных метках

Кампания должна иметь код источника, а переход - непустой source_id. Значения очищаются от внешних пробелов и сравниваются без учета регистра. Нет параметра, нет кампании или код совпадает - записи не будет.

Открыть проверку источников
Что делает платформа

Проверяет, а не вмешивается

Администратор видит кампанию, оффер, пару кодов, число повторений и последний hostname referer. Он может отметить наблюдение как проверенное или не требующее действий, не ставя кампанию на паузу.

Открыть очередь проверки
ПроверкаЧто делает LinkoraЧего Linkora не делает
source_id отличаетсяСохраняет одно агрегированное наблюдение и увеличивает счетчикНе блокирует ссылку, клик или редирект
Код совпал или не переданНе создает наблюдениеНе требует действий от партнёра
Менеджер обработал записьСохраняет статус и внутренний комментарийНе меняет атрибуцию, комиссию, холд или выплату

Параметр source_id приходит с переходом, поэтому он не доказывает фактическую площадку размещения. Журнал помогает сверить разметку, а не является антифродом. Полный URL referer, IP, click_id и S2S-payload в него не попадают.

Просмотр и обработка наблюдения через API
GET /api/v1/affiliate/traffic-source-discrepancies?affiliateOrganizationId=aff_123&status=open
Authorization: Bearer <access_token>

GET /api/v1/admin/traffic-source-discrepancies?status=open
Authorization: Bearer <platform_access_token>

PATCH /api/v1/admin/traffic-source-discrepancies/discrepancy_123
Authorization: Bearer <platform_access_token>
Content-Type: application/json

{
  "status": "reviewed",
  "reviewNote": "Партнер обновляет шаблон ссылки"
}
03.0.3

Аналитика меток источника: динамика без блокировок

Отдельная аналитика показывает покрытые переходы, число расхождений и их долю по дням, кампаниям, офферам и источникам. Она нужна для приоритизации ручной сверки, а не для ограничения трафика.

Партнер

Разобраться со своими ссылками

В разделе «Аналитика меток» выберите период, кампанию, источник или оффер. На графике видны переходы и случаи с другим source_id, а ниже - приоритетные кампании и коды, которые действительно пришли в ссылке.

Открыть аналитику меток
Команда Linkora

Сетевой срез и очередь проверки

Администратор дополнительно фильтрует данные по партнеру и видит кампании с наибольшим числом или долей расхождений. Для ручного решения есть отдельная очередь: аналитика сама не меняет состояние кампании.

Открыть сетевой срез
ПоказательКак считаетсяКак правильно читать
Переходыclick выбранных кампаний после запуска дневного сбораЗнаменатель только для покрытого периода
РасхожденияПереходы, где входящий source_id отличается от кода кампанииНе означает, что площадка размещения подтверждена
Доля расхожденийРасхождения / покрытые переходы × 100Помогает сравнить приоритет сверки кампаний
Открытые сочетанияПары кодов с текущим статусом open в выбранном периодеПоказывает объем неразобранной очереди

Дневная история начинается с запуска аналитического сборщика. Linkora не пытается искусственно восстановить прошлые дни из общего счетчика наблюдения, поэтому проценты не смешивают покрытый и непокрытый период. Как и журнал проверок, этот контур не блокирует клик, ссылку, атрибуцию, комиссию или выплату.

Аналитика меток источника через API
GET /api/v1/affiliate/traffic-source-discrepancies/analytics?affiliateOrganizationId=aff_123&period=last_30_days&campaignId=camp_123
Authorization: Bearer <access_token>

GET /api/v1/admin/traffic-source-discrepancies/analytics?affiliateOrganizationId=aff_123&trafficSourceId=source_123&period=last_7_days
Authorization: Bearer <platform_access_token>

// Произвольный диапазон: не более 93 дней
GET /api/v1/affiliate/traffic-source-discrepancies/analytics?affiliateOrganizationId=aff_123&dateFrom=2026-08-01&dateTo=2026-08-28
03.0.4

Интеллектуальный сигнал по меткам: внимание без блокировки

Linkora объединяет необъясненные различия source_id за последние семь календарных дней и поднимает карточку только при заметном объеме. Это помогает раньше заметить устаревший шаблон, но не ограничивает переходы и ничего не пересчитывает.

Партнер

Понять, что проверить

В «Навигаторе трафика» видны доля необъясненных меток, число переходов, код источника и кампания. Из карточки можно перейти в журнал и добавить согласованный вариант, когда причина известна.

Открыть навигатор трафика
Команда Linkora

Настроить прозрачный порог

В интеллектуальном контуре задаются минимальное число событий и процент от переходов кампании. Карточка содержит наблюдаемые коды и условия срабатывания, поэтому ее вывод можно проверить вручную.

Открыть интеллектуальный контур
ШагКак работаетЧто не происходит
СборТолько активные организация, кампания и зарегистрированный источник за 7 дней UTCНе подтверждает фактическую площадку размещения
Исключение вариантовАктивные согласованные альтернативы не считаются необъясненнымиНе меняет основной код кампании в click
СигналОбъем и доля достигли заданных платформой пороговНе блокирует ссылку, кампанию или редирект
РазборПричину можно взять в работу, скрыть или закрыть вариантомНе меняет атрибуцию, антифрод, комиссию или выплату

Сигнал хранит только агрегированную диагностику: период, число переходов и различий, коды, кампанию и пороги. Полный URL, click_id, IP, S2S-payload и приватная заметка не попадают в рекомендацию.

Настройка сигнала и чтение карточек через API
PATCH /api/v1/admin/platform-configuration
Authorization: Bearer <platform_access_token>
Content-Type: application/json

{
  "intelligenceInsightsEnabled": true,
  "intelligenceSourceLabelMismatchMinEvents": 5,
  "intelligenceSourceLabelMismatchRatePercent": 20
}

GET /api/v1/affiliate/intelligence?type=traffic_source_label_mismatch
Authorization: Bearer <access_token>

GET /api/v1/admin/intelligence?type=traffic_source_label_mismatch
Authorization: Bearer <platform_access_token>
04

Заявки на офферы и уведомления

Для оффера с витриной «По заявке» партнер отправляет заявку из карточки. Она сразу появляется у рекламодателя в разделе «Уведомления» и на странице управления оффером. Там можно одобрить партнера, отклонить заявку или добавить команду в белый список вручную.

Арбитражник

Следит за решением

Откройте «Уведомления», чтобы увидеть одобрение или отказ. После одобрения оффер появляется в доступных и его можно выбрать в конструкторе ссылки.

Рекламодатель

Принимает решение

Перейдите из уведомления прямо к офферу, проверьте данные команды и выберите решение. Для автоодобрения установите режим «Автоматический» в настройках оффера.

СтатусЧто означаетСледующее действие
ЗапрошенПартнер ожидает решенияРекламодатель одобряет или отклоняет
Доступ открытПартнер добавлен к офферуСоздать ссылку и запустить кампанию
Доступ закрытРабота с оффером ограниченаПроверить условия или связаться с менеджером

Колокольчик в шапке и счётчик в меню показывают непрочитанные действия. Нажмите отметку рядом с уведомлением или используйте «Прочитать все», когда вопрос уже обработан.

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

05

S2S-интеграция

Рекламодатель остаётся источником правды по оплатам и продуктовым событиям. Linkora не подключается к вашей платёжной системе: ваш backend сам передаёт подтверждённые данные.

EndpointPOST /api/v1/ingest/advertiser-events/:advertiserId
Подпись

X-Signature - HMAC-SHA256 от исходного тела запроса.

Время

X-Timestamp - Unix timestamp; допустимое смещение 5 минут.

Повторы

event_id идемпотентен: повтор того же события безопасен.

Шаг 1

Проверьте событие в кабинете

В «Настройках пространства» выберите оффер и запустите проверку. Linkora покажет обязательные поля, соответствие click_id, правило выплаты и дубликат event_id. Эта проверка не создает конверсию и не меняет баланс.

Шаг 2

Отправьте запрос из backend

Получив зелёную проверку, подпишите неизменённое JSON-тело секретом webhook и отправляйте его в рабочий endpoint. Передавайте metadata.schema_version: "2026-08" и не генерируйте новый event_id при сетевом повторе.

Для production, staging и разных продуктов создавайте отдельные ключи в «Настройках пространства». Передайте публичный идентификатор в X-Integration-Key, а HMAC считайте секретом именно этого ключа. Отзыв ключа немедленно прекращает приём запросов с ним. Для плановой замены используйте ротацию: прежний и новый ключ работают только в выбранное окно перекрытия, затем старый отключается автоматически.

Проверка payload без создания конверсии
POST /api/v1/ingest/advertiser-events/validate
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "advertiserId": "adv_8wm2",
  "payload": {
    "event_id": "check-order-100023",
    "event_type": "first_purchase",
    "event_time": "2026-08-26T12:30:00.000Z",
    "advertiser_id": "adv_8wm2",
    "offer_id": "offer_premium_bot",
    "click_id": "clk_01J9...",
    "external_user_id": "tg_123456789",
    "subscription_id": "sub_001",
    "currency": "USD",
    "amount": "9.99",
    "status": "approved"
  }
}
Запрос с ключом окружения
curl -X POST \
  https://spa.ditrixdev.ru/api/v1/ingest/advertiser-events/:advertiserId \
  -H "Content-Type: application/json" \
  -H "X-Integration-Key: lki_..." \
  -H "X-Timestamp: 1787747400" \
  -H "X-Signature: <HMAC-SHA256 от event.json>" \
  --data-binary @event.json
event.json
{
  "event_id": "bot-evt-100023",
  "event_type": "first_purchase",
  "event_time": "2026-08-26T12:30:00.000Z",
  "advertiser_id": "adv_8wm2",
  "offer_id": "offer_premium_bot",
  "click_id": "clk_01J9...",
  "external_user_id": "tg_123456789",
  "subscription_id": "sub_001",
  "payment_id": "payment_001",
  "currency": "USD",
  "amount": "9.99",
  "status": "approved"
}
Базовый webhook-запрос
curl -X POST \
  https://spa.ditrixdev.ru/api/v1/ingest/advertiser-events/:advertiserId \
  -H "Content-Type: application/json" \
  -H "X-Timestamp: 1787747400" \
  -H "X-Signature: <HMAC-SHA256>" \
  --data-binary @event.json
05.1

Готовность запуска

После Sandbox откройте «Готовность запуска» в кабинете рекламодателя. Она собирает в одном месте активность пространства, ключи, офферы, правила оплаты, версию S2S-схемы, внешний Sandbox и технические сигналы.

До включения трафика

Закройте все блокеры

Нужны активный оффер с правилами, подпись S2S, созданный Sandbox, успешное эталонное событие и подписанный запрос от backend продукта.

Открыть готовность
После изменения интеграции

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

Нажмите «Проверить» после ротации ключа, изменения оффера или релиза backend. Снимок не создает конверсию, комиссию, проводку или выплату.

Команда платформы видит тот же безопасный статус в админке: `Готовность запусков`. Там доступны риск, владелец, Sandbox и последняя проверка, но не payload, секреты, подписи или финансовые значения.

05.2

Здоровье S2S по офферам

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

Для рекламодателя

Увидьте поток каждого продукта

Страница показывает клики, зрелость трафика, свежие события, первые подтвержденные оплаты и ошибки приема. Она не считает каждый клик обязательной конверсией и не останавливает трафик автоматически.

Открыть здоровье офферов
Для команды Linkora

Разбирайте только нужное

Админский реестр ставит вперед отклонения, отсутствие правил выплат и зрелый трафик без S2S. Условия с понятным действием попадают в операционную очередь с владельцем, SLA и историей; payload, ключи, click_id или данные пользователя не раскрываются.

Окно наблюдения составляет 7 дней, переход становится зрелым через 24 часа, а диагностический сигнал появляется от 10 зрелых кликов без принятого S2S. Это повод проверить mapping и очередь продукта, а не автоматическое финансовое решение.

05.3

Операционная очередь здоровья S2S

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

Когда появляется задача

Только проверяемый повод

Нужны не менее 10 зрелых переходов без свежего S2S, реальные отклонённые запросы или принятые события при отсутствии payout-правил. Ошибочный запрос без активного offer_id остается на уровне пространства, а не приклеивается к случайному офферу.

Как работает команда

Владелец, SLA и проверка

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

СигналПервое действиеАвтоматическое закрытие
Зрелый трафик без S2SПроверить mapping, backend и тестовый запросПосле свежего принятого события
Отклонённый запросПроверить подпись, время, ключ и форматПосле 24 ч. без нового отклонения
Нет payout-правилДобавить правила и отдельно оценить старые данныеПосле появления правила у оффера

Операционная карточка содержит только имя оффера и агрегированные метрики. Linkora не передает в неё S2S-payload, подписи, секреты, платежные или пользовательские идентификаторы. Сигнал не ставит трафик на паузу и не меняет комиссию, выплату или проводку.

06

События и их последствия

СобытиеКогда отправлятьДля чего используется
registrationПользователь завершил регистрациюCPL
trial_startedЗапущен пробный периодTrial CPA
first_purchaseПодтверждена первая оплатаCPA и Hybrid
renewalПодтверждено продлениеRevShare и Hybrid
refund / chargebackОплата отменена или оспоренаКорректировка комиссии

Для возврата и чарджбэка передайте related_event_id исходного денежного события. Частичный возврат передается в amount: Linkora списывает только пропорциональную часть комиссии, а остаток остается на исходной конверсии. Повторяйте тот же event_id только при сетевом повторе.

В кабинетах партнера и рекламодателя откройте раздел «Корректировки»: там видны исходное событие, каждая часть возврата, комиссия и накопленный остаток. Полная инструкция с примерами payload, ошибок и HMAC находится в docs/KORREKTIROVKI_I_CHARGEBACKI.md.

07

Модели вознаграждения

CPL

Фиксированная выплата за регистрацию.

Trial CPA

Выплата за запуск пробного доступа.

CPA First Purchase

Выплата за первую подтвержденную оплату.

RevShare

Процент от платежей пользователя.

Hybrid

Фикс за первую оплату плюс процент с продлений.

После подтверждения комиссия может находиться в холде. Срок задается в оффере; выпуск проходит автоматически или вручную через админку.

08

Финансы, холды и выплаты

Финансовый контур Linkora хранит всю цепочку от подтвержденной конверсии до выплаты. Реквизиты, решение оператора, платежный пакет и внешний номер платежа остаются в журнале, поэтому цифры можно сверить в любой момент.

Арбитражник

Добавляет реквизиты и создает заявку

Откройте «Финансы», добавьте банковский перевод, СБП, криптокошелек или другой способ. Назначьте один активный способ по умолчанию, выберите его в новой заявке и следите за статусом в журнале выплат.

Рекламодатель

Видит резерв по офферам

Откройте «Финансы офферов», чтобы увидеть суммы в холде, подтвержденные комиссии и общий резерв по каждой валюте и офферу. Это не платежная система: данные строятся по переданным вами S2S-событиям.

ЭтапЧто меняетсяКто видит
ХолдКомиссия удерживается до заданной датыПартнер видит календарь, админка — срок и правило
ПодтвержденоКомиссия доступна на балансеПартнер может создать заявку на выплату
На проверкеФинансовая команда приняла заявкуСтатус и комментарий появляются в журнале
В обработкеЗаявка включена в платежный пакетВидны пакет, сумма и состояние обработки
ВыплаченоОператор указал внешний номер платежаБаланс списывается, партнер получает уведомление

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

Верхняя карточка «Финансовый прогноз» показывает ближайшие 90 дней. У партнера доступный баланс уже уменьшен на незавершенные заявки в той же валюте. Поэтому после заявки на 7 USD при подтвержденном остатке 12 USD следующая заявка может быть не больше 5 USD.

Пример добавления реквизитов через API
POST /api/v1/affiliate/payout-methods
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "type": "bank_transfer",
  "label": "Основной расчетный счет",
  "details": "Банк: ...\nПолучатель: ...\nСчет: ...",
  "isDefault": true
}
08.0.1

Финансы нескольких организаций

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

Партнер

Каждая выплата внутри своей организации

Остаток, холд, реквизиты, заявки, расчетные документы, корректировки и зачеты показаны только для выбранной партнерской организации. Реквизит и остаток одной организации нельзя использовать для выплаты другой.

Рекламодатель

Отдельный резерв по каждому бизнесу

Финансы офферов, прогноз и возвраты относятся только к выбранной организации рекламодателя. Сетевые агрегаты доступны команде Linkora в отдельной админке, а не через внешний кабинет.

СитуацияКак отвечает системаЧто сделать
Одна организацияКонтекст выбирается автоматическиСтарый API-запрос без параметра остается совместимым
Несколько организацийФинансовый API ожидает ID выбранной организацииПередайте affiliateOrganizationId или advertiserOrganizationId
Чужой IDСервер проверяет активное членствоЗапрос получит запрет и не раскроет данные

Отсутствие параметра при нескольких организациях не означает «показать все». Linkora возвращает понятную ошибку, чтобы деньги разных юридических лиц не оказались в одном расчете случайно.

Пример финансового запроса партнера
GET /api/v1/affiliate/payout-balance?affiliateOrganizationId=<organization_id>
Authorization: Bearer <access_token>
08.1

Возврат уже выплаченных комиссий

Если возврат или чарджбэк касается комиссии, которая уже вошла в выполненную выплату, Linkora не переписывает историю. Она открывает отдельный финансовый реестр, резервирует точную сумму из будущего подтвержденного баланса и сохраняет связь с исходным событием.

Партнер

Видит реальный доступный остаток

В разделе «Возвраты выплат» показаны исходное событие, сумма резерва, активные заявки и уже созданные зачеты. Пока запись не закрыта, резерв уменьшает только доступный баланс в той же валюте.

Финансовая команда

Закрывает обязательство проводкой

Админка создает отдельный зачет из свободного подтвержденного баланса либо позволяет списать исключение только с обязательным основанием. Прошлая выплата остается неизменной.

СценарийЧто делает LinkoraРезультат
Корректировка до выплатыСписывает комиссию из ее текущего статусаОбычная запись в «Корректировках»
Корректировка после выплатыСоздает возврат выплаченной части и резервОтдельный реестр «Возвраты выплат»
Новая заявкаПроверяет подтвержденный баланс за вычетом резерваНепокрытая выплата не пройдет

Например, из выплаченной комиссии 10.00 USD рекламодатель возвращает четверть покупки. Linkora создаст резерв 2.50 USD: при новом подтвержденном остатке 10.00 USD к выплате будет доступно 7.50 USD. Полный пошаговый разбор, статусы и API есть в docs/VOZVRAT_VYPLACHENNYH_KOMISSIY.md.

08.2

Платежные пакеты и расчетные документы

Когда команда подтверждает реальный перевод, Linkora выпускает неизменяемый расчетный документ. Он помогает партнеру и оператору сверить сумму, платежный идентификатор, пакет и распределение комиссий без показа реквизитов способа выплаты.

Партнер

Получает подтверждение

После статуса «Выплачено» откройте «Расчетные документы». В архиве можно увидеть номер, сумму, пакет, контрольную сумму и скачать текстовую сверку только по своим выплатам.

Финансовая команда

Закрывает фактический результат

В админке откройте «Расчетные документы»: там видно, сколько по пакету оплачено, отменено и еще остается в обработке. CSV-выгрузка дает построчную сверку заявок и документов.

Состояние пакетаКогда возникаетКак читать
В обработкеЕсть хотя бы одна незавершенная заявкаПакет нельзя считать закрытым
ЗавершенВсе заявки подтверждены как выплаченныеВся ожидаемая сумма прошла
Частично завершенЕсть и выплаченные, и отмененные заявкиСверьте фактический оплаченный итог
ОтмененНи одна заявка не была выплаченаПакет закрыт без выполненных переводов

Документ хранит номер, сумму, валюту, платежный идентификатор, номер пакета и снимок распределения комиссий. Его SHA-256 контрольная сумма помогает проверить неизменность снимка, но не заменяет банковский реестр, договор или бухгалтерский первичный документ.

Для одной выполненной заявки создается только один документ. Сервер блокирует параллельное подтверждение выплаты, поэтому повторный запрос не должен создать вторую проводку, второе распределение или второй документ.

Если историческая выплата была создана до появления архива, оператор может выпустить документ из отдельного списка в админке. Эта операция не меняет баланс, статус или платеж, а повторный запуск безопасно вернет уже созданный документ.

Нужна инструкция для финансовой команды?

В полном руководстве есть API, примеры выгрузок, типовые ошибки, правила доступа и чек-лист закрытия пакета.

Открыть архив
08.3

Экономика кампаний: расход, доход и ROI

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

Партнер

Ведет фактический бюджет

Откройте «Экономика», выберите кампанию, дату, валюту и сумму. Источник и заметка помогают команде помнить, откуда пришла цифра, но остаются только в партнерском кабинете.

Команда Linkora

Видит управленческий итог

В админке есть отдельная страница «Экономика»: агрегаты по кампании, партнеру и валюте, переходы, подтвержденные комиссии, прибыль, ROI и CPC без доступа к личным заметкам.

ПоказательКак считаетсяКогда использовать
НакопленоВсе действующие комиссии после частичных корректировокПонимать общий объем в работе
ПодтвержденоКомиссии в статусах «Подтверждена» и «Выплачена»Считать текущий финансовый результат
ПрибыльПодтверждено минус расходПонять результат кампании
ROIПрибыль / расход × 100%Сравнить сопоставимые запуски одной валюты
CPCРасход / переходы кампанииКонтролировать стоимость трафика

Если расход равен нулю, ROI и CPC не показываются. Это честнее, чем бесконечный ROI. При расходе 7 USD и подтвержденной комиссии 10 USD прибыль составляет 3 USD, а ROI - 42,9%. Суммы в RUB, EUR, USDT и других валютах остаются самостоятельными строками.

Расход можно создать, изменить или удалить. Эти действия пишутся в аудит без текста источника и заметки. Они не меняют click, конверсию, комиссию, баланс, холд или выплату - только пересчитывают представление экономики.

Добавление расхода через API
POST /api/v1/affiliate/campaign-spend
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "campaignId": "camp_123",
  "spendDate": "2026-08-26",
  "currency": "USD",
  "amount": "27.50",
  "source": "Telegram Ads",
  "note": "Тест двух креативов"
}
Нужна подробная инструкция?

В руководстве собраны права доступа, формулы, API, ответы, ошибки, примеры по валютам и рабочий ритм команды.

Открыть экономику
08.3.1

Цели кампаний: бюджет, ROI и CPC

Цель помогает партнеру заранее договориться с собой о пределах запуска. По умолчанию она сравнивает факт с бюджетом, ROI и CPC и остается объяснимым сигналом. Для жесткого бюджета есть отдельный, явно включаемый предохранитель.

Бюджет за весь срок

Не теряется при смене периода

Расход по бюджету суммируется за всю жизнь кампании в выбранной валюте. На 80% Linkora показывает раннее внимание, на 100% - превышение.

ROI и CPC за период

Сравнивайте актуальный срез

ROI и CPC считают только по датам в фильтре экономики. Если данных недостаточно, вместо ложного вывода появится статус «Ожидает данные».

СигналЧто означаетЧто Linkora делает сама
Бюджет: приближение / превышениеРасход за весь срок достиг порога или бюджетаСигнал; пауза только при включенном предохранителе
ROI ниже целиФактический ROI периода меньше заданногоТолько показывает объяснение
CPC выше пределаСтоимость перехода периода выше максимумаТолько показывает объяснение

Превышение обычной цели не ставит кампанию на паузу, не отключает ссылку и не меняет комиссию, холд, баланс, выплату или S2S-события. Автопауза работает только при включенном флаге у цели с бюджетом и только на отметке 100%.

На одну кампанию и валюту доступна одна цель. Для USD, RUB, EUR и других валют создаются отдельные записи: Linkora не смешивает их без явной методики конвертации. Рекламодатель не может создавать или менять цели партнера, а админка получает только безопасные агрегаты без источника и заметок расходов.

Создание цели кампании через API
POST /api/v1/affiliate/campaign-goals
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "campaignId": "camp_123",
  "currency": "USD",
  "budgetAmount": "1000.00",
  "budgetAlertPercent": 80,
  "autoPauseOnBudgetExceeded": false,
  "targetRoiPercent": "35.00",
  "maxCostPerClick": "0.80",
  "active": true
}
Нужен полный разбор?

В отдельном руководстве есть формулы, состояния, API для изменения и удаления, правила доступа, типовые ошибки и сценарий проверки релиза.

Открыть экономику
08.3.2

Мониторинг целей и история сигналов

После сохранения цели Linkora регулярно сверяет ее с фактом и ведет понятную историю. Открытый сигнал остается одной записью, а не превращается в поток одинаковых уведомлений на каждом цикле проверки.

Как считаются показатели

Разные горизонты для разных задач

Бюджет сопоставляется со всеми расходами кампании за весь срок. ROI и CPC строятся по последним семи календарным дням, чтобы показывать актуальную динамику запуска.

Как приходит внимание

Только при новом состоянии

Linkora открывает или возобновляет сигнал и отправляет уведомление один раз. Пока условие сохраняется, история обновляется без повторов; после нормализации сигнал получает статус «Решен».

СостояниеКогда появляетсяЧто доступно
Приближение бюджетаРасход достиг установленного процента бюджетаФакт, порог, период и переход к экономике
Превышение / ROI / CPCДостигнут лимит бюджета, ROI ниже цели или CPC выше пределаБезопасный снимок показателей и история состояния
РешенМетрика нормализовалась, цель отключена или кампания переведена в черновик/архивИстория для разбора без нового начисления или действия

Обычный сигнал не ставит кампанию на паузу, не отключает ссылку и не меняет S2S, комиссию, холд, баланс или выплату. Исключение - явный предохранитель бюджета, который срабатывает только на 100%. Источник и заметка расходов остаются в кабинете партнера: в реестре сигналов и админке есть только безопасные агрегаты.

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

Открытые сигналы текущего партнера
GET /api/v1/affiliate/campaign-goal-signals?state=open
Authorization: Bearer <access_token>
Нужна оперативная картина?

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

Открыть контроль целей
08.3.3

Автопауза бюджета: жесткий предел без сюрпризов

Когда расход кампании нельзя превысить, включите предохранитель прямо в цели бюджета. Он не является скрытой автоматизацией: флаг виден в настройке, срабатывает только на 100% и оставляет полную историю решения.

До предела

Трафик остается под контролем команды

На раннем пороге Linkora показывает обычный сигнал. ROI и CPC тоже остаются аналитикой: они никогда не запускают автопаузу.

На 100% бюджета

Ссылка останавливается

Worker переводит активную кампанию в паузу. Новые переходы по ней не создаются, а существующие данные и финансы не меняются.

ШагЧто делает LinkoraЧто делает команда
СрабатываниеРасход равен или выше бюджета с включенным флагомОткрывает сигнал, ставит кампанию на паузу и отправляет обязательное уведомление
После паузыСигнал остается в реестре с точным временемПроверяет расход, лимит и источник трафика
ВозобновлениеЛимит выше расхода либо флаг выключенВручную включает кампанию в разделе «Кампании»

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

Уведомление о паузе нельзя выключить в персональном потоке. Сигнал, уведомление и аудит содержат только безопасные идентификаторы, валюту и причину; источники расходов, заметки, click_id и S2S-payload не раскрываются.

Включение предохранителя и ручная реактивация
PATCH /api/v1/affiliate/campaign-goals/goal_123
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "budgetAmount": "1500.00",
  "autoPauseOnBudgetExceeded": true
}

PATCH /api/v1/affiliate/campaigns/camp_123
Authorization: Bearer <access_token>
Content-Type: application/json

{ "status": "active" }
Нужен жесткий лимит?

Сначала добавьте бюджет в «Экономике», затем включите автопаузу. После срабатывания увеличьте лимит или выключите флаг перед ручным запуском кампании.

Настроить бюджет
08.3.4

Дайджесты отчетов: ритм без ручной проверки

Сохраненный срез можно превратить в личный ежедневный или еженедельный дайджест. Он приходит внутри Linkora в выбранный часовой пояс и открывает тот же отчет с точными границами уже сформированного периода.

Один срез - один ритм

Никаких скрытых дублей

Для партнера и рекламодателя отчет должен быть привязан к одной организации. На него создается одно расписание: другой период или время удобно вынести в новый сохраненный срез.

Период всегда актуален

Даты не застывают

Выберите предыдущий календарный день или последние семь дней. Linkora сохраняет точные границы снимка, не меняя фильтры оффера, кампании, источника или валюты.

КонтрольКак работаетЧто увидит пользователь
Время и поясЕжедневно или раз в неделю по IANA-поясуСледующий запуск и история выполнения
Повтор`nextRunAt` обновляется в транзакции с блокировкойОдин снимок до следующего срока
Потеря доступаРоль, пользователь или пространство больше не активныРасписание ставится на паузу без новой доставки

Дайджест содержит только количество переходов, конверсий, подтверждений и комиссии по валютам. Он не переносит S2S-payload, секреты, идентификаторы пользователей, `click_id`, заметки или источники расходов. Его уведомление личное и отключается в настройках потока.

Периодический дайджест не является внешней отправкой и не заменяет CSV. Это оперативный снимок внутри кабинета; по кнопке из уведомления открывается детальный защищенный отчет с тем же временным диапазоном.

Создание ежедневного дайджеста через API
POST /api/v1/affiliate/report-digest-schedules
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "reportViewId": "report_view_123",
  "frequency": "daily",
  "period": "last_7_days",
  "timeZone": "Europe/Moscow",
  "hour": 9
}
Нужен регулярный контроль?

Сначала сохраните нужный срез в «Отчетах», затем выберите время, период и часовой пояс в отдельном реестре дайджестов.

Открыть дайджесты
08.4

Коммерческие условия и запуск без сюрпризов

Перед запуском Linkora проверяет не только техническую готовность. У платформы и оффера могут быть свои редакции условий, а у организации и реквизитов - статус проверки. Это защищает расчеты и заранее объясняет, почему действие доступно или остановлено.

Арбитражник

Принимает условия до ссылки

В разделе «Коммерческие условия» откройте действующую редакцию платформы и условия каждого оффера. Если оффер требует принятия, подтвердите текст один раз для своей организации, затем создавайте кампанию или копируйте ссылку.

Рекламодатель

Управляет риском до трафика

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

КонтрольКак работаетЧто сохраняется
Редакции условийОпубликованный текст неизменяем; новая версия требует нового принятияВерсия, дата, организация, пользователь и источник принятия
Экономика комиссииДля каждой комиссии фиксируются выплата партнеру, ставка Linkora и валовая суммаИсторический снимок не меняется после правок тарифа
Кредитный лимитСчитаются pending, hold и approved обязательства по валютеРежим наблюдения или блокировка нового трафика
ПроверкаРеквизиты или организация ожидают решения, отклонены либо просроченыПричина ограничения, заметка оператора и уведомление

Комиссия платформы считается поверх выплаты партнеру: при выплате 5 USD и ставке 10% валовая сумма равна 5.50 USD, а комиссия Linkora - 0.50 USD. Ставка и суммы фиксируются в момент создания комиссии, поэтому финансовая история воспроизводима.

Операторы управляют документами, проверками и лимитами в отдельном разделе админки. Финансовую сверку можно выгрузить в CSV с учетом прав доступа и защитой значений от формул.

Нужна полная инструкция?

Подробные сценарии, ограничения, API и диагностика собраны в руководстве по коммерческим условиям.

Открыть условия
09

Отчеты и контроль качества

В обоих кабинетах есть раздел «Отчеты». Он показывает один и тот же выбранный срез в таблицах конверсий, комиссиях, источниках и CSV-выгрузках. Фильтры по периоду, офферу, событию, source_id и sub1 сохраняются при выгрузке, а важный срез можно закрепить или открыть команде.

Арбитражник

Понимает результат трафика

Сравнивает площадки и креативы по меткам, видит холды и выплаты, скачивает конверсии для своей сверки.

Рекламодатель

Контролирует поток продукта

В разделе «Качество трафика» следит за свежестью S2S-событий, долей атрибуции, ручными проверками и результативностью источников.

Общий срез всегда привязан к одной организации. Linkora добавляет этот фильтр сама, поэтому участник другой организации не увидит его и не сможет получить его данные через URL или CSV.

Если в отчете растет число событий «без атрибуции», обычно продукт не возвращает исходный click_id. Проверьте передачу параметра от партнерской ссылки до backend, который отправляет S2S-событие.

Сохранение общего среза через API
POST /api/v1/affiliate/report-views
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "name": "Первые оплаты за неделю",
  "organizationId": "org_123",
  "isShared": true,
  "isPinned": true,
  "filters": {
    "eventType": "first_purchase",
    "currency": "USD",
    "sourceId": "telegram_ads"
  }
}
10

Контроль качества и антифрод

Linkora не принимает рискованные решения вслепую. Каждый сигнал привязан к конверсии и объясняет, что именно требует проверки: время события, повтор пользователя, скорость кликов, лимит оффера, GEO или источник.

Арбитражник

Видит агрегированное качество

Раздел «Качество трафика» показывает уровень риска по офферу и source_id без раскрытия пользовательских данных. Это помогает исправить кампанию до того, как платформа ограничит запуск.

Рекламодатель

Контролирует продуктовый поток

В «Качестве трафика» рекламодателя видны агрегированные сигналы, доля рисковых действий и офферы, которым нужен дополнительный контроль. Персональные данные посетителей в этом срезе не раскрываются.

СигналЧто проверяет LinkoraЧто сделать
Высокий рискСобытие раньше клика, повтор пользователя, аномальная скорость IP, запрещённый GEO или источникАдминка отправляет на ручную проверку; оператор может приостановить кампанию или ограничить партнёра
Средний рискGEO или source_id не входят в условия оффераПроверить правила оффера, метки кампании и данные S2S
Низкий рискКонверсия слишком быстро следует за кликом или у клика есть технический флагСравнить с нормальной динамикой источника и не смешивать запуски

Ограничение качества не переписывает историю и не скрывает причину. Решение оператора, заметка, время и применённое действие сохраняются в аудите; для high-сигналов решение по конверсии остаётся отдельной операцией модерации.

11

Импорт истории без повторных начислений

Если продукт уже работал в другой системе, перенесите клики и события через «Импорт истории» рекламодателя. Linkora сначала строит dry-run: он не меняет баланс и показывает каждую ошибку до подтверждённого запуска.

Шаг 1

Загрузите CSV или JSON

Укажите kind: click для перехода и kind: event для продуктового действия. Внешний external_click_id станет доступен для последующих S2S-событий.

Шаг 2

Проверьте результат

Партия не запустится, пока в ней есть ошибки. Дубли безопасно пропускаются, а предупреждения объясняют отсутствие клика, правила выплаты или необычную дату.

После подтверждения очередь сначала создаёт клики, затем события. Исторические строки проходят обычные правила атрибуции и комиссии, но не отправляют postback партнёрам.

СтатусЧто означаетСледующее действие
ГотовоСтрока прошла dry-runПодтвердить проверенную партию
ПредупреждениеИмпорт допустим, но нужен контрольСверить атрибуцию и payout-правило
ОшибкаНе хватает обязательных данных или оффер не подходитИсправить файл и создать новую проверку
Есть ошибкиТехническая ошибка в очередиИспользовать повтор ошибочных строк
Пример JSON-партии
[
  {
    "kind": "click",
    "external_click_id": "legacy-click-1001",
    "offer_id": "offer_abc",
    "affiliate_organization_id": "aff_123",
    "clicked_at": "2026-07-10T09:15:00Z"
  },
  {
    "kind": "event",
    "event_id": "legacy-event-1001",
    "event_type": "first_purchase",
    "event_time": "2026-07-10T09:20:00Z",
    "offer_id": "offer_abc",
    "click_id": "legacy-click-1001",
    "external_user_id": "user_42",
    "subscription_id": "sub_42",
    "currency": "USD",
    "amount": "9.99",
    "status": "approved"
  }
]
Создание dry-run через API
POST /api/v1/historical-imports/dry-run
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "advertiserOrganizationId": "adv_123",
  "name": "История июля",
  "idempotencyKey": "july-history-v1-2026",
  "format": "json",
  "rows": [/* строки из примера */]
}
12

Интеллектуальный контур и безопасный S2S-маппинг

Контур рекомендаций замечает понятные отклонения в конверсиях, S2S, postback, антифроде и RevShare. Он объясняет причину, но не меняет деньги, доступы, кампании или статусы конверсий без отдельного ручного решения.

Рекламодатель

Проверяет продуктовый поток

Откройте «Рекомендации», чтобы увидеть сравнение двух периодов, задержку S2S или изменение экономики оффера. Карточку можно взять в работу или скрыть с заметкой.

Партнер

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

«Навигатор трафика» показывает только агрегированные сигналы по доступным источникам и обратным уведомлениям. Данные других участников сети не раскрываются.

СигналЧто сравниваетсяБезопасный первый шаг
Снижение конверсийПоследние 7 дней и предыдущие 7 дней по офферу и источникуПроверить кампанию, ссылку и S2S-журнал
Задержка S2SВремя действия и время приёма событияПроверить очередь и повторную доставку backend
Ошибки postbackDead-letter доставки за 7 днейИсправить endpoint, затем поставить доставку на повтор
Давление антифродаОткрытые агрегированные сигналы качестваОткрыть антифрод и принять отдельное ручное решение
RevShareПодтвержденные продления в двух сопоставимых периодахСверить продления, возвраты и S2S

Помощник маппинга в разделе рекомендаций принимает только имена и общие типы полей. Он подсказывает соответствия для event_id, event_type, event_time, offer_id, external_user_id и status, но автоматически исключает поля с именами secret, token, password, signature и api_key.

Статус «Взято в работу» сохраняет заметку и историю, но не останавливает кампанию. Для финансовых и антифрод-действий используйте их специальные рабочие страницы.

13

Открытый API и исходящие webhooks

В разделе «API и webhooks» владелец пространства выпускает отдельный сервисный ключ для своего backend, BI или CRM. Этот ключ только читает разрешенные данные и не заменяет S2S-ключ, которым рекламодатель передаёт конверсии.

Сервисный ключ

Минимальный доступ

Выберите только нужные области: офферы или кампании, конверсии, аналитику и финансы. Ключ показывается один раз, его можно ротировать с окном перекрытия или отозвать моментально.

Исходящий webhook

Событие приходит само

Добавьте публичный HTTPS endpoint, выберите бизнес-события и сохраните секрет подписи. Worker доставляет сообщение, повторяет временные ошибки и показывает полный журнал попыток.

Кому доступноПримеры данныхОграничение
РекламодательОфферы, конверсии, аналитика, обязательстваТолько собственное пространство
ПартнерКампании, конверсии, аналитика, выплатыТолько собственные запуски
ОператорСостояние ключей и доставокБез раскрытия секретов

Добавляйте ключ в заголовок X-Linkora-API-Key в форме lsk_<public_id>.<secret>. Для проверки начните с GET /api/v1/public/me, затем используйте /offers у рекламодателя либо /campaigns у партнера.

Пример чтения аналитики через сервисный ключ
curl "https://spa.ditrixdev.ru/api/v1/public/analytics/summary?dateFrom=2026-08-01T00:00:00.000Z&take=100" \
  -H "X-Linkora-API-Key: lsk_<public_id>.<secret>"

Webhook приходит с заголовками X-Linkora-Webhook-Id, X-Linkora-Webhook-Event, X-Linkora-Webhook-Timestamp и X-Linkora-Webhook-Signature. Подпись считается от точного тела запроса: timestamp + '.' + rawBody. Проверяйте её до обработки и храните идентификатор доставки, чтобы безопасно игнорировать повтор.

Проверка подписи webhook на Node.js
import { createHmac, timingSafeEqual } from 'node:crypto';

function verifyLinkoraWebhook(rawBody, headers, signingSecret) {
  const timestamp = headers['x-linkora-webhook-timestamp'];
  const signature = headers['x-linkora-webhook-signature'];
  const expected = createHmac('sha256', signingSecret)
    .update(timestamp + '.' + rawBody)
    .digest('hex');

  return Boolean(timestamp && signature)
    && timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}

Подробная пошаговая инструкция, таблица endpoint-ов, примеры для JavaScript, Python и PHP доступны в Swagger API и в репозитории: docs/OTKRYTYJ_API_I_WEBHOOKS.md.

14

Производительность, емкость и надежность

Linkora показывает операционной команде, когда сеть готова к росту: сколько событий проходит через платформу, как себя чувствуют API и worker, не растет ли очередь и подтверждено ли восстановление базы.

Оператор

Смотрит готовность до запуска

В админке откройте «Емкость и надежность». Там собраны память процессов, темп S2S, очереди postback и webhook, размер PostgreSQL, возраст backup и последняя изолированная проверка восстановления.

Разработчик

Проверяет профиль без риска

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

СигналЧто означаетПервое действие
ГотовоРесурсы, очереди, backup и проверки укладываются в текущие порогиМожно увеличивать трафик следующей согласованной ступенью
КонтрольПорог памяти достигнут, очередь растет или restore-проверка устарелаОткрыть карточку в capacity и устранить причину до роста
КритичноAPI, worker, backup или synthetic-проверка недоступныПриостановить расширение нагрузки и восстановить контур

Linkora не показывает в capacity секреты, ключи, реквизиты или тела событий. Снимок содержит только агрегаты ресурсов, счетчики и безопасные технические статусы.

Еженедельная проверка восстановления создает временную отдельную базу, развертывает в нее backup, проверяет базовые таблицы и затем удаляет ее. Рабочая база и финансовая история не изменяются.

Подробный план масштабирования, допустимые параметры нагрузочного профиля и сценарий восстановления находятся в docs/PROIZVODITELNOST_I_MASSSHTABIROVANIE.md.

15

Споры и сверки

Кейс сверки нужен, когда участники видят расхождение в операции или хотят зафиксировать вопрос по качеству трафика. Он не меняет сумму оплаты у рекламодателя и не проводит выплату автоматически: Linkora сохраняет доказательства, контекст, решение и полный след действий.

Партнер или рекламодатель

Открывает обращение

В разделе «Споры и сверки» выберите свое пространство, тип вопроса и связанную конверсию, комиссию или заявку на выплату. Когда операция связана, Linkora сама определит вторую сторону.

Команда Linkora

Управляет решением

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

СтатусКогда используетсяКто меняет
ОткрытКейс зарегистрирован и ожидает первичной оценкиПлатформа
На рассмотренииОператор проверяет данные и материалыПлатформа
Ожидает ответНужен ответ второй стороныПлатформа
Решен / отклоненИтог и основание зафиксированыПлатформа

Участник видит только кейсы, где его активная организация является одной из сторон. Сообщения, материалы и системные изменения из такого кейса видны обеим сторонам. Служебные заметки команды платформы скрыты от участников и не возвращаются через API.

Когда команда Linkora устанавливает срок ответа, платформа предупредит обе стороны за 24 часа и будет напоминать о просроченном кейсе до решения или нового срока. Уведомление ведет только в доступную пользователю карточку сверки.

Для ссылки используйте безопасный идентификатор или контролируемый URL. Когда нужен файл, прикрепите PDF, JPEG, PNG или WebP до 10 МБ в блоке «Защищенное вложение»: Linkora проверит сигнатуру, зашифрует содержимое и выдаст его только после повторной проверки доступа.

Кнопка выгрузки в карточке кейса формирует доказательную CSV-сводку только из разрешенных вам данных. Служебные записи остаются только у команды Linkora, а значения, похожие на формулы, безопасно нейтрализуются перед скачиванием.

Открытие кейса через API участника
POST /api/v1/reconciliation/cases
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "organizationId": "aff_123",
  "type": "conversion",
  "title": "Не совпадает статус регистрации",
  "description": "Просим сверить событие за 26 августа.",
  "conversionId": "conv_123"
}

Полный процесс, endpoint-ы, коды доступа, SLA и правила хранения собраны в docs/SPORY_I_SVERKI.md, docs/ZASHCHISHCHENNYE_DOKAZATELSTVA_SVERKI.md и docs/SLA_SVEROK_I_ESKALATSII.md.

15.1

Приватность и хранение данных

Linkora отделяет техническую очистку от финансовой истории. Старые завершенные технические записи можно обработать только через админку после dry-run и явного подтверждения; конверсии, комиссии, выплаты, споры, шифрованные доказательства и аудит не входят в такие операции.

Для оператора

Сначала проверка, потом действие

В разделе «Хранение данных» видно срок, владельца и число кандидатов. Dry-run ничего не удаляет, а отдельная галочка нужна перед каждой подтвержденной очисткой.

Для пользователя

Обращение не ломает расчеты

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

СценарийЧто можно сделатьЧто остается защищенным
Технические журналыDry-run, затем подтвержденная очистка по утвержденной политикеФинансы, споры, аудит, raw-события и клики
ОбезличиваниеЗапрос по email и ручная проверка активных пространствКомиссии, выплаты, решения и исторический след
ВосстановлениеПроверка backup в отдельной временной базеРабочая PostgreSQL и production-данные

Полный пошаговый регламент, API-примеры и список безопасных политик находятся в docs/PRIVATNOST_I_HRANENIE_DANNYH.md и docs/REESTR_SROKOV_HRANENIYA_DANNYH.md.

16

Диагностика и безопасность

Событие не появилось. Проверьте URL, X-Timestamp, подпись и журнал S2S-событий рекламодателя.

Поток помечен как требующий проверки. Откройте «Настройки пространства»: в карточке готовности видно, выпущен ли секрет, есть ли активный оффер, когда поступило последнее событие и сколько их было за 24 часа.

Тест показывает предупреждение по click_id. Событие может попасть в журнал, но для партнерской атрибуции продукт должен сохранить исходный ID перехода и вернуть его обратно в S2S-запросе.

Секрет или ключ окружения скомпрометирован. Отзовите ключ в настройках рекламодателя или перевыпустите базовый webhook-секрет, затем обновите переменную окружения backend. Отозванный ключ прекращает работать немедленно.

Потеряно устройство или есть лишний вход. Откройте «Безопасность» в любом кабинете и завершите нужную сессию либо все остальные. Отозванный сеанс перестаёт работать на сервере сразу.

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

Готовы подключать продукт?

Создайте кабинет рекламодателя, получите webhook-секрет или ключ окружения, проверьте тестовое событие и отправьте первую реальную конверсию.

Открыть Linkora