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

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

Команда 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.

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, секреты, подписи или финансовые значения.

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.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.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