Документация, с которой можно начать сегодня.
Linkora объединяет рекламодателя, арбитражника и операционную команду вокруг единой событийной модели. Здесь собраны все действия от первого оффера до расчета комиссии.
- 01 Создайте личный кабинет
- 02 Добавьте оффер и условия
- 03 Создайте кампанию для источника
- 04 Настройте S2S-события
Запуск интеграции без пробелов
Если вы подключаете продукт впервые, используйте единый путь: личный кабинет, оффер, сохранение click_id, Sandbox, внешний подписанный тест, production S2S и проверка готовности запуска.
Проверьте до production
Откройте Sandbox в кабинете рекламодателя: он выдаст тестовые ID, проверит payload и примет внешний подписанный запрос без начислений.
Открыть SandboxЗакройте чек-лист
После Sandbox откройте «Готовность запуска»: Linkora покажет ключи, офферы, контракт и сигналы, которые нужно устранить до трафика.
Открыть готовностьРегистрация, роли и вход
Один email может работать с обеих сторон сети. После регистрации Linkora сразу открывает нужный кабинет: арбитражнику - офферы и трафик, рекламодателю - офферы и интеграцию. Если обе роли активны, откроется страница «Личные кабинеты».
Привлекает и измеряет
Берёт оффер, создаёт трекинговую ссылку, задаёт метки, следит за конверсиями, холдами и заявками на выплату.
Запускает и подтверждает
Создаёт условия оффера, передаёт события из backend и видит качество трафика, выручку и обязательства перед партнёрами.
Чтобы сменить сторону работы, нажмите карточку профиля в шапке любого кабинета и выберите роль в меню «Личные кабинеты». Там же можно открыть полный список и добавить вторую роль без нового пароля. Linkora сохраняет запрошенный раздел при входе, не пускает в кабинет без нужной роли и автоматически переводит старые адреса /affiliate и /advertiser на современные страницы.
Каталог офферов: как выбрать и подключить
Откройте раздел «Офферы» в личном кабинете партнёра. Каталог рассчитан на большую сеть: сначала сузьте выбор по категории, модели оплаты, ГЕО и статусу подключения, затем откройте карточку подходящего оффера.
Условия до запуска
Карточка показывает рекламодателя, модель выплаты, ГЕО, холд, допустимые источники, окно атрибуции, KPI и правила для каждого целевого действия. Так можно сравнить офферы, не собирая условия вручную в таблицу.
Заявка в один шаг
Публичный оффер доступен сразу. Для оффера «По заявке» укажите источник и аудиторию, затем отправьте запрос. При автоматическом допуске ссылка станет доступна сразу, при ручном - после решения рекламодателя.
CRЦелевые действия / переходы за последние 30 днейСравнить вероятность результатаARПодтверждённые действия / все целевые действияОценить стабильность апруваeCPCПодтверждённое вознаграждение / переходы, отдельно по валютамСопоставить доходность источникаCR, AR и eCPC появляются после 20 переходов за 30 дней. Linkora показывает только агрегаты: в каталоге нет чужих click_id, меток источника, пользователей, заявок или секретов интеграции.
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 сначала попросит подтвердить нужную редакцию документа.
Управление офферами: оператор и рекламодатель
У команды платформы и рекламодателя разные реестры офферов. Оператор управляет всей сетью, категориями и модерацией. Рекламодатель видит только свои продукты, создаёт их в отдельной форме, ведёт условия и разбирает заявки партнёров. Все изменения сохраняются в аудите Linkora.
Категория перед карточкой
Откройте «Офферы» - «Категории», добавьте короткое название и технический идентификатор латиницей, например telegram_products. Идентификатор используется в фильтрах и API. При его смене Linkora переносит связанные офферы автоматически, поэтому карточки не теряют категорию.
Сначала условия, затем запуск
Выберите рекламодателя, добавьте ссылку продукта с click_id, обложку, ГЕО, источники трафика, холд и окно атрибуции. Создайте одно или несколько правил выплаты: фикс, процент с платежа или оба правила для гибридной модели.
Один оффер - одна подробная карточка
В кабинете рекламодателя откройте «Офферы», примените фильтры по статусу, категории и модели оплаты, затем нажмите «Новый оффер». После сохранения открывается карточка с условиями, переходами, целевыми действиями, CR, AR, eCPC и очередью заявок.
Заявка не даёт доступ сама по себе
Для витрины «По заявке» выберите ручной или автоматический допуск. При ручном варианте заявка появляется в карточке оффера, где её можно одобрить, отклонить или выдать доступ конкретной команде партнёра вручную.
ЧерновикСохранить условия без публикацииОффер не доступен для запускаМодерацияРекламодатель отправляет карточку на проверку, команда выбирает решение и при необходимости добавляет комментарийИстория отправки и решений с видимым для рекламодателя комментариемАктивный офферВыбрать витрину и способ допускаКарточка с CR, AR, eCPC, условиями и кнопкой подключенияЗаявка партнёраОдобрить, отклонить или выдать доступ вручнуюУведомление и доступ к созданию кампанииВ реестре показатели считаются за последние 30 дней. CR - целевые действия от переходов, AR - подтверждённые действия от всех целевых, eCPC - подтверждённое вознаграждение на переход. Для честного сравнения они появляются после 20 переходов; до этого Linkora показывает, что данных ещё недостаточно.
Внутри карточки оффера есть отдельный график за 14 дней: переходы, целевые действия и подтверждения. Он использует те же атрибутированные данные, что CR и AR, поэтому помогает заметить изменение потока, не раскрывая чужие метки, пользователей или технические идентификаторы.
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 | newestPATCH /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/slaGET /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.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 собирает корректный запрос сама.
Ручная проверка конверсий и сроки решения
Рекламодатель остаётся источником правды по событию, а Linkora даёт команде платформы безопасную очередь для спорных случаев до расчёта партнёрской комиссии. Это отдельный процесс от модерации оффера: проверяется конкретное зафиксированное действие, а не карточка продукта.
Только случаи, где нужен человек
Linkora показывает конверсии без подтверждённой атрибуции, ожидающие подтверждения или имеющие открытый сигнал высокого риска. Обычные подтверждённые события не создают лишнюю работу модератору.
Атрибуция, статус и риск
В карточке видны рекламодатель, оффер, тип и время события, сумма, партнёр, начисление, статус атрибуции и понятные причины попадания в очередь. Технические payload и секреты не открываются.
Подтвердить или отклонить
При подтверждении для неатрибутированной конверсии укажите команду партнёра. Если партнер уже найден, его нельзя заменить через ручную проверку. При отклонении нужна короткая причина. Решение попадает в аудит, обновляет финансовый контур и ставит нужный postback.
Сначала внимание, затем эскалация
Отсчёт начинается с создания конверсии. После порога внимания worker открывает операционный сигнал, после критического срока - повышает его. Ни один сигнал не принимает финансовое решение сам.
Ручная проверкаНужно разобрать все новые или отфильтрованные конверсииФильтры, безопасные детали, одиночное и пакетное решениеКонтроль SLAКоманде важно сначала убрать просроченные случаиСрез по сроку, риску, офферу и рекламодателюОперационные сигналыНужно назначить владельца или контролировать эскалациюОтветственный, рабочая заметка, история и автоматическое закрытие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 каждая конверсия проверяется отдельно: неподходящая строка не меняет остальные.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-комиссию. Событие той же подписки с другим оффером остается без автоматического начисления и требует отдельной финансовой проверки.
Обращения в Linkora и контроль ответа
Поддержка нужна для рабочих вопросов по интеграции, офферам, доступам, отчетам и кабинету. Это отдельный процесс от споров и сверок: обычное обращение не меняет конверсию, комиссию, выплату или финансовый статус.
Один диалог по конкретному кабинету
Откройте «Обращения», выберите нужный личный кабинет, тему и приоритет, затем опишите вопрос. Карточка показывает статус, срок реакции и публичную переписку с командой Linkora.
Открыть обращения партнераОчередь, владелец и SLA
В админке есть отдельные экраны общей очереди и SLA-среза. Команда назначает специалиста, меняет статус, отвечает пользователю и ведет внутреннюю заметку, не видимую участнику.
Открыть очередь командыСкорость реакции и нагрузка
Отдельная аналитика показывает поступление, первые ответы, решения, SLA, темы и нагрузку команды за 7, 30 или 90 дней. В отчет не попадает текст обращения или внутренняя переписка.
Открыть аналитику поддержкиБезопасные готовые ответы
Шаблон подставляет только проверенные данные текущего диалога и отправляется сотрудником вручную. Архивные шаблоны остаются в истории, но не используются в новых ответах.
Открыть библиотеку ответовРабочее окно и автораспределение
Отдельный экран показывает доступную емкость команды, назначение по текущей нагрузке и адресные эскалации. SLA при этом остается календарным и продолжает контролироваться круглосуточно.
Открыть автоматизацию поддержкиРавномерно и с видимой историей
Новое обращение получает доступного специалиста с минимальной активной нагрузкой. Если лимит команды исчерпан, worker повторит попытку позже, а действие останется в карточке и Audit Log.
Проверить очередь SLAЛичная доступность команды
На отдельной странице команды можно временно убрать специалиста из автоматического выбора, задать ему собственный лимит или вернуть в поток. Уже назначенные обращения, ручное распределение и SLA не меняются.
Открыть команду поддержкиПауза без потери контроля
Пока специалист на паузе, Linkora выбирает другого доступного коллегу. В карточке видны причина исключения, текущая нагрузка и время окончания паузы, поэтому очередь не превращается в черный ящик.
Проверить правила маршрутизацииКомпетенции по направлениям
Для каждого специалиста можно выбрать темы, с которыми он работает: интеграции, офферы, финансы, трафик, аккаунты или общие вопросы. Экран команды сразу показывает покрытие каждого направления.
Открыть покрытие командыТема важнее свободного слота
Автоматизация не отправит финансовый или интеграционный запрос случайному свободному сотруднику. Если подходящий специалист занят или не настроен, карточка остается в очереди для следующей попытки.
Проверить автоматизациюГрафики смен без случайных назначений
Руководитель может оставить сотрудника на общем графике команды или задать ему личные дни и часы. Вне личной смены специалист не получает новые автоназначения, но сохраняет доступ к своим диалогам и может быть выбран вручную при необходимости.
Открыть графики сменОбщее окно остается главным правилом
Личная смена только сужает базовое рабочее окно Linkora: система одновременно учитывает день, час, компетенцию, паузу и лимит нагрузки. Так в очереди видно реальное покрытие, а не формальный список сотрудников.
Проверить покрытие командыПрогноз покрытия без сюрпризов
Отдельная почасовая матрица на 3, 7 или 14 дней показывает, где у темы не будет подходящего специалиста. Риск виден до начала смены, а не после появления нераспределенного обращения.
Открыть прогноз покрытияГрафик и нагрузка не смешиваются
Прогноз строится по часам, компетенциям, сменам и паузам. Он не обещает будущую свободную емкость: текущую нагрузку и лимиты команда продолжает контролировать в живом разделе «Команда поддержки».
Проверить нагрузку командыДежурства и отсутствия без правки смен
Отдельный реестр позволяет заранее отметить отпуск, разовое отсутствие или дежурство. Интервал учитывается в автоназначении и прогнозе, но не меняет уже открытые диалоги, роли и SLA.
Открыть дежурстваОдин интервал - одно понятное решение
Система не принимает пересекающиеся правила для одного сотрудника. Дежурство расширяет только личную смену, а отсутствие надежно исключает кандидата в API, worker и матрице покрытия.
Проверить прогноз после измененийПлановые минимумы покрытия
Для каждой темы можно задать нужное число специалистов на рабочий час. Прогноз покажет не только отсутствие кандидата, но и ситуацию, когда до нормальной смены не хватает подготовленного резерва.
Настроить минимумыЧисленность важнее одной зеленой ячейки
В матрице видно факт и план, например 1/2. Желтая ячейка помогает закрыть дефицит до начала смены, не меняя автоматически маршруты, SLA или текущие обращения.
Открыть план покрытияОперационные сигналы покрытия
Когда план важной темы сохранен, его можно связать с реестром сигналов. Worker заранее найдет дефицит, а после восстановления смены, дежурства или состава команды закроет сигнал сам.
Открыть сигналы поддержкиТолько сохраненный план
По умолчанию уведомление выключено. После осознанного включения оно следит за ближайшими 24 часами и создает один понятный сигнал на тему вместо десятков одинаковых напоминаний.
Настроить план и сигналПиковые часы без завышения плана
Базовый минимум остается постоянным, а для будних запусков, вечера или выходного можно задать отдельное окно с нужным числом специалистов. Пересекающиеся правила система не принимает.
Настроить календарные профилиПрофиль виден в прогнозе и сигнале
Выбранный для часа минимум используется и в почасовой матрице, и в ближайшей проверке worker. В карточке дефицита видно, что требование пришло из пикового профиля, а не из скрытой настройки.
Открыть прогноз с профилямиНовый запрос / В работеКоманда LinkoraSLA отсчитывается от последней активности участникаЖдем ответПартнер или рекламодательSLA команды остановлен до нового сообщенияРешен / ЗакрытДиалог завершенОперационный сигнал закрывается следующим циклом workerPOST /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, платежные или персональные данные. Для разногласия по конкретной конверсии, комиссии или выплате используйте «Споры и сверки» и защищенные доказательства.
Рост сети, приглашения и рекомендации
Команда Linkora ведет подключение без отдельной таблицы: создает персональную ссылку, фиксирует следующий шаг, ставит задачу и видит первый подтвержденный результат. Сообщения не отправляются автоматически: менеджер сам выбирает канал и момент коммуникации.
Ссылка закрепляет роль
В админке выберите email и роль. Ссылка привязана к этому email, сроку и роли, поэтому ее нельзя использовать для другой учетной записи. Получатель может создать новое пространство или добавить вторую роль под уже активным аккаунтом.
Рекомендация объясняет себя
Партнер видит активные доступные офферы по категориям и модели выплаты. Рекламодатель видит только агрегированные показатели собственных кампаний: без чужих офферов, источников и персональных данных.
МенеджерАдминка: Рост сети, Приглашения, Задачи, ШаблоныВоронка, ручная ссылка, срок и история первого результатаПартнерКабинет: Подбор офферовДоступные предложения и понятная причина рекомендацииРекламодательКабинет: ПартнерыОценка активного собственного контура для следующего решенияПодробный сценарий с API, статусами приглашения, задачами и переменными шаблонов находится в файле docs/ROST_SETI_I_KOMMUNIKATSII.md проекта.
Трекинг и партнерские ссылки
В разделе «Ссылки» арбитражник собирает разовую ссылку под конкретный источник: выбирает оффер, задает source_id, кампанию и метки sub1-sub4. Эти данные попадут в click, отчеты, конверсии и postback.
Запуск сразу
Откройте витрину, выберите оффер и скопируйте ссылку из конструктора. Уникальный aff_id уже добавлен Linkora.
Доступ после решения
Отправьте заявку из карточки оффера. Рекламодатель увидит ее в своей карточке и сможет одобрить, отклонить или выдать доступ вручную.
Сохраните click_id в Telegram-боте или продукте и возвращайте его в S2S-событии. Без него событие появится в журнале рекламодателя, но не будет автоматически привязано к арбитражнику.
Кампании: постоянные ссылки и чистая аналитика
Создавайте кампанию для каждого самостоятельного запуска: рекламного кабинета, канала, креатива или размещения. Linkora сохраняет оффер, источник, внешнюю метку и до восьми sub-параметров, а затем связывает с этой кампанией переходы, конверсии, подписки и комиссии.
Одна ссылка для одного запуска
Откройте «Кампании», выберите оффер, задайте понятное название и источник. После сохранения скопируйте постоянную ссылку. В ней есть campaign и aff_id; не удаляйте и не заменяйте эти параметры.
Пауза сохраняет историю
Поставьте кампанию на паузу, когда размещение завершено. Новые переходы будут остановлены, а накопленные конверсии, продления и расчеты останутся в отчетах. Для нового оффера создавайте новую кампанию.
НазваниеЧтобы команда узнала запускTelegram Ads · сентябрьsource_idДля сравнения площадокtelegram_adsВнешняя меткаЧтобы связать с рекламным кабинетомtgads_0926_01sub1-sub8Для креативов, сегментов и размещенийsub1=creative_video_aОткройте карточку кампании, чтобы увидеть динамику за 14 дней, долю подтвержденных действий, сумму комиссий и перейти в детальный отчет уже с выбранным campaignId.
Реестр источников: код, контроль и показатели
Реестр нужен для повторяемой атрибуции. Сначала создайте источник с понятным названием и постоянным кодом, затем выберите его при создании кампании. Linkora скопирует код в переход и сохранит связь с кампанией.
Один источник - один постоянный код
В разделе «Источники трафика» добавьте площадку, канал или рекламный кабинет. Код состоит из строчных латинских букв, цифр, точки, дефиса или нижнего подчеркивания, например telegram_ads_ru. Код нельзя изменить после создания.
Оперативная пауза без переписывания истории
Платформа видит только название, канал, организацию и агрегаты. При паузе источника новые переходы по связанным кампаниям прекращаются, но click, конверсии, комиссии и выплаты не меняются.
Открыть сетевой реестрCRПодтвержденные действия / переходыСравнивать конверсию площадок одного запускаARПодтвержденные действия / все действияОтделять качество трафика от задержки модерацииeCPCПодтвержденная комиссия / переходыСверять доходность в каждой валюте отдельноПереходы 7дВсе click по связанным кампаниям за последние семь днейБыстро видеть активность текущего запускаИсточник кампании можно менять только до первых переходов или конверсий. После этого создайте новую кампанию: так Linkora не перепишет уже сложившуюся атрибуцию и финансовую историю.
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"
}Согласованные варианты меток: меньше шума, без санкций
Партнер может описать ожидаемый альтернативный source_idдля конкретного источника. Linkora не скрывает разницу кодов, а отделяет ее от необъясненных случаев в журнале и аналитике. Это не влияет на редирект, атрибуцию или деньги.
Зафиксировать понятный контекст
В разделе «Согласованные метки» выберите источник, укажите код, название и внутреннюю заметку. Код сохраняется постоянным, поэтому для новой альтернативы создайте отдельную запись.
Открыть согласованные меткиВидеть агрегат, а не приватную заметку
В админке доступны код, источник, партнер и число наблюдений. При необходимости оператор включает либо архивирует вариант только в диагностическом срезе; ссылка и расчеты от этого не меняются.
Открыть сетевой реестрАктивный вариант совпалПоказывается как согласованный в журнале и метрикахНет: click и редирект остаются обычнымиВарианта нет или он архивированПоказывается как необъясненная меткаНет: нужна только ручная сверка разметкиОператор меняет статусОбновляется текущая диагностическая классификацияНет: не меняются атрибуция, антифрод или финансыВариант привязан к одному источнику и не является доказательством площадки размещения. Полный URL, click_id, IP, S2S-payload и приватная заметка партнера не попадают в сетевой обзор.
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"
}Проверка меток источника без остановки трафика
Linkora сравнивает заявленный код кампании с входящим параметром source_id. Разница попадает в журнал наблюдений, чтобы заметить ошибку в шаблоне ссылки или разметке, но сама по себе ничего не блокирует и не меняет в расчётах.
Только при двух разных метках
Кампания должна иметь код источника, а переход - непустой source_id. Значения очищаются от внешних пробелов и сравниваются без учета регистра. Нет параметра, нет кампании или код совпадает - записи не будет.
Проверяет, а не вмешивается
Администратор видит кампанию, оффер, пару кодов, число повторений и последний hostname referer. Он может отметить наблюдение как проверенное или не требующее действий, не ставя кампанию на паузу.
Открыть очередь проверкиsource_id отличаетсяСохраняет одно агрегированное наблюдение и увеличивает счетчикНе блокирует ссылку, клик или редиректКод совпал или не переданНе создает наблюдениеНе требует действий от партнёраМенеджер обработал записьСохраняет статус и внутренний комментарийНе меняет атрибуцию, комиссию, холд или выплатуПараметр source_id приходит с переходом, поэтому он не доказывает фактическую площадку размещения. Журнал помогает сверить разметку, а не является антифродом. Полный URL referer, IP, click_id и S2S-payload в него не попадают.
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": "Партнер обновляет шаблон ссылки"
}Аналитика меток источника: динамика без блокировок
Отдельная аналитика показывает покрытые переходы, число расхождений и их долю по дням, кампаниям, офферам и источникам. Она нужна для приоритизации ручной сверки, а не для ограничения трафика.
Разобраться со своими ссылками
В разделе «Аналитика меток» выберите период, кампанию, источник или оффер. На графике видны переходы и случаи с другим source_id, а ниже - приоритетные кампании и коды, которые действительно пришли в ссылке.
Сетевой срез и очередь проверки
Администратор дополнительно фильтрует данные по партнеру и видит кампании с наибольшим числом или долей расхождений. Для ручного решения есть отдельная очередь: аналитика сама не меняет состояние кампании.
Открыть сетевой срезПереходыclick выбранных кампаний после запуска дневного сбораЗнаменатель только для покрытого периодаРасхожденияПереходы, где входящий source_id отличается от кода кампанииНе означает, что площадка размещения подтвержденаДоля расхожденийРасхождения / покрытые переходы × 100Помогает сравнить приоритет сверки кампанийОткрытые сочетанияПары кодов с текущим статусом open в выбранном периодеПоказывает объем неразобранной очередиДневная история начинается с запуска аналитического сборщика. Linkora не пытается искусственно восстановить прошлые дни из общего счетчика наблюдения, поэтому проценты не смешивают покрытый и непокрытый период. Как и журнал проверок, этот контур не блокирует клик, ссылку, атрибуцию, комиссию или выплату.
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Интеллектуальный сигнал по меткам: внимание без блокировки
Linkora объединяет необъясненные различия source_id за последние семь календарных дней и поднимает карточку только при заметном объеме. Это помогает раньше заметить устаревший шаблон, но не ограничивает переходы и ничего не пересчитывает.
Понять, что проверить
В «Навигаторе трафика» видны доля необъясненных меток, число переходов, код источника и кампания. Из карточки можно перейти в журнал и добавить согласованный вариант, когда причина известна.
Открыть навигатор трафикаНастроить прозрачный порог
В интеллектуальном контуре задаются минимальное число событий и процент от переходов кампании. Карточка содержит наблюдаемые коды и условия срабатывания, поэтому ее вывод можно проверить вручную.
Открыть интеллектуальный контурСборТолько активные организация, кампания и зарегистрированный источник за 7 дней UTCНе подтверждает фактическую площадку размещенияИсключение вариантовАктивные согласованные альтернативы не считаются необъясненнымиНе меняет основной код кампании в clickСигналОбъем и доля достигли заданных платформой пороговНе блокирует ссылку, кампанию или редиректРазборПричину можно взять в работу, скрыть или закрыть вариантомНе меняет атрибуцию, антифрод, комиссию или выплатуСигнал хранит только агрегированную диагностику: период, число переходов и различий, коды, кампанию и пороги. Полный URL, click_id, IP, S2S-payload и приватная заметка не попадают в рекомендацию.
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>Умные ссылки: один адрес и управляемая ротация
Умная ссылка объединяет несколько ваших активных кампаний под одним публичным адресом. Для каждого нового перехода Linkora выбирает кампанию по заданному весу, сохраняет фактический маршрут в click и запускает обычный защищенный контур атрибуции.
Когда нужен один точный запуск
Используйте постоянную ссылку кампании для фиксированного размещения, канала или креатива. Она всегда ведет в один оффер и сохраняет его параметры источника.
Когда нужен гибкий поток
Добавьте несколько кампаний, назначьте им веса и разместите один адрес. Остановленный оффер, пауза кампании или закрытый допуск автоматически исключаются из новых переходов.
Вес 70 / 30Случайный выбор пропорционален заданным значениямОсновному запуску ожидаемо достается около 70% нового трафикаМаршрут выключенКампания остается в истории, но не участвует в выбореОстановить тест без замены размещенного адресаУсловия изменилисьПеред click снова проверяются доступ, договор и статус оффераНе направить новый трафик в недоступный продуктНет доступных маршрутовПереход не создает click и возвращает понятную ошибкуИсправить кампанию или поставить ссылку на паузуУмная ссылка не меняет условия выплаты и не подменяет S2S-интеграцию. После выбора кампании в продукт передается обычный click_id, а рекламодатель возвращает подтвержденное событие из своего backend. В публичном адресе нельзя подменить партнерскую организацию или кампанию параметрами запроса.
На коротком отрезке распределение может отличаться от веса: выбор вероятностный и выполняется для каждого нового перехода. Если нужна постоянная привязка одного размещения, используйте прямую ссылку кампании.
POST /api/v1/affiliate/smart-links
Authorization: Bearer <access_token>
Content-Type: application/json
{
"affiliateOrganizationId": "aff_123",
"name": "Telegram Ads · сентябрь",
"routes": [
{ "campaignId": "camp_main", "weight": 70 },
{ "campaignId": "camp_test", "weight": 30 }
]
}Сначала создайте кампании с корректными источниками и условиями, затем соберите их в умную ссылку и следите за переходами по каждому маршруту.
Аналитика умных ссылок и маршрутов
Отдельный экран показывает результат ротации без смешивания валют и без раскрытия чувствительных данных. Он связывает переход с выбранной кампанией, а затем - с S2S-событием, конверсией и комиссией.
Когда появился click
Переход относится к дате, когда пользователь открыл умную ссылку. Так видно реальный объем привлеченного трафика по каждому маршруту.
Когда продукт подтвердил действие
Конверсия и комиссия относятся к event_time из S2S. Поэтому они могут появиться позже дня исходного перехода.
CR и апрувПоложительные конверсии относительно переходовСравнить качество маршрутов, а не только их объемПервые оплаты и продленияОтдельные S2S-события first_purchase и renewalНе смешивать первичный и повторный доходКомиссия и EPCЧистая сумма после возвратов, отдельно для каждой валютыНе складывать USD, EUR и RUB в одну условную цифруИсторический маршрутМаршрут удален из настройки после появления трафикаНе потерять честный результат прошлой кампанииВозврат, чарджбэк и отмена подписки не повышают CR. Они корректируют сумму исходной комиссии. Отклоненные и полностью сторнированные комиссии не попадают в доход, а суммы возвращаются отдельными валютными строками.
Партнер видит только собственные пространства. В агрегатах нетclick_id, source_id, заметок кампании, внешних пользователей, тела S2S-запроса и секретов. У платформы тот же безопасный срез по сети с разрешением reports.read.
GET /api/v1/affiliate/smart-links/analytics?affiliateOrganizationId=aff_123&period=last_30_days
Authorization: Bearer <access_token>
GET /api/v1/admin/smart-links/analytics?affiliateOrganizationId=aff_123&smartLinkId=slk_123&period=last_7_days
Authorization: Bearer <platform_access_token>Откройте аналитику после первых S2S-событий, выберите период и сравните CR, первые оплаты, комиссию и EPC без ручных таблиц.
Объяснимые рекомендации по маршрутам
Linkora сравнивает активные маршруты одной умной ссылки на сформировавшейся когорте переходов и показывает только проверяемый разрыв в первых оплатах. Это подсказка для человека, а не автопилот.
Данные должны созреть
Worker берет 14-дневную когорту, завершившуюся не менее 24 часов назад, и требует минимальный объем переходов и первых оплат.
Вес не изменится сам
Карточка ведет в аналитику. Владелец сам проверяет размещение, S2S-события и при необходимости меняет вес или статус маршрута.
CR первой оплатыУникальные click с approved first_purchase / все click маршрутаНе меняются конверсии и комиссииРазрыв эффективностиСлабый маршрут сравнивается с лучшим в той же ссылкеНе меняется вес и не выключается кампанияУсловие восстановилосьСледующий цикл больше не видит достаточного разрываКарточка закрывается с сохранением историиВ доказательстве нет click_id, источника кампании, заметок, внешних пользователей, S2S-полей или секретов. Партнер видит только свое пространство, а рекламодатель не получает настройки партнерской ротации.
Команда платформы задает минимум переходов и относительный разрыв в интеллектуальном контуре. Эти настройки управляют только порогом показа рекомендации.
GET /api/v1/affiliate/intelligence?type=smart_link_route_underperformance&take=100
Authorization: Bearer <access_token>
PATCH /api/v1/admin/platform-configuration
Authorization: Bearer <platform_access_token>
Content-Type: application/json
{
"intelligenceSmartLinkMinClicks": 30,
"intelligenceSmartLinkPerformanceGapPercent": 50
}Откройте карточку рекомендации, перейдите в разбор ссылки и принимайте решение только после сверки контекста запуска.
Контролируемые эксперименты маршрутов
Эксперимент временно распределяет новые переходы между выбранными маршрутами одной умной ссылки и сохраняет фактический вариант в каждом click. Это способ проверить гипотезу на реальном трафике без скрытого изменения постоянной ротации.
Факт варианта не теряется
Связка эксперимент - вариант записывается вместе с переходом. Даже после завершения теста можно связать его с S2S-событием, подтвержденной первой оплатой и комиссией.
Тест не меняет постоянный вес
После достаточной выборки Linkora показывает лидера по CR и разрыв с контролем. Остановить тест и поменять обычную ротацию может только владелец партнерского пространства.
ЧерновикРаботает обычная ротация умной ссылкиПроверить варианты и контроль, затем запуститьИдетНовые переходы выбирают только варианты тестаДождаться минимума переходов у каждого вариантаНа паузе или завершенНовые переходы снова используют обычную ротациюСверить результат и принять решение вручнуюДля запуска нужны активная ссылка, от двух до четырех доступных маршрутов и ровно один контроль. Пока тест идет, нельзя менять обычный вес его маршрута или выключить его. Так условия выборки остаются проверяемыми.
Партнер видит только свои тесты. У платформы есть безопасный обзор по сети, а рекламодатель не видит партнерскую ротацию. В ответах нетclick_id, источников кампании, заметок, S2S-payload и секретов.
POST /api/v1/affiliate/smart-links/slk_123/experiments
Authorization: Bearer <access_token>
Content-Type: application/json
{
"affiliateOrganizationId": "aff_123",
"name": "Сравнение двух воронок",
"minimumClicksPerVariant": 100,
"variants": [
{ "routeId": "route_control", "weight": 100, "isControl": true },
{ "routeId": "route_variant_b", "weight": 100, "isControl": false }
]
}
POST /api/v1/affiliate/smart-links/slk_123/experiments/exp_123/transition
Authorization: Bearer <access_token>
Content-Type: application/json
{ "action": "start" }Создайте тест из двух маршрутов, выберите контроль, дождитесь полноценной выборки и только затем вручную меняйте постоянный вес.
Решения по завершенным экспериментам
После завершения теста постоянная ротация не меняется. В разделе «Решения экспериментов» партнер фиксирует вывод, а при достаточной выборке может вручную и явно применить новые постоянные веса.
Снимок остается с решением
Linkora сохраняет выборку, агрегированные метрики, лидерство по CR и веса маршрутов до и после ручного действия. Старое решение не редактируется: повторная проверка оформляется новым тестом.
Нет скрытого автоперелива
Применение доступно только для завершенного теста с полной выборкой, активной ссылкой и доступными маршрутами. Партнер сам задает каждый вес и подтверждает действие.
Сохранить текущие весаФиксируется снимок, ротация не меняетсяРезультат недостаточен для смены базового распределенияПрименить веса экспериментаМеняются только указанные постоянные весаВыборка готова, контекст проверен, действие подтвержденоНужно больше данныхРотация не меняется, вывод остается в журналеНужен новый тест или дополнительный периодПлатформа видит безопасный агрегированный факт решения и наличие заметки, но не ее текст. Она не может изменить решение или применить ротацию за партнера. В ответах нет click_id, источника, S2S-payload и секретов.
POST /api/v1/affiliate/smart-links/slk_123/experiments/exp_123/decision
Authorization: Bearer <access_token>
Content-Type: application/json
{
"affiliateOrganizationId": "aff_123",
"type": "apply_experiment_weights",
"confirmed": true,
"routeWeights": [
{ "routeId": "route_control", "weight": 35 },
{ "routeId": "route_variant_b", "weight": 65 }
]
}
GET /api/v1/affiliate/smart-link-experiment-decisions?affiliateOrganizationId=aff_123Откройте журнал решений, сохраните контекст в личной заметке и применяйте постоянные веса только после явного подтверждения.
Надежность результата эксперимента
Чтобы не принять случайное колебание CR за готовый вывод, Linkora показывает 95% интервалы Уилсона у контроля и текущего лидера. Это объяснимый ориентир для ручной проверки, а не автоматический выбор маршрута.
Интервал важнее одной цифры
После полной выборки карточка сравнивает диапазоны CR. Если они пересекаются или первых оплат слишком мало, тест честно остается неопределенным.
Сигнал не меняет ротацию
Даже при непересекающихся интервалах Linkora не применяет веса, не ставит кампанию на паузу и не меняет комиссию. Следующий шаг всегда остается ручным и фиксируется в журнале решений.
Мало первых оплатУ контроля или лидера меньше двух подтвержденных первых оплатНе делайте вывод по редким событиямИнтервалы пересекаются95% диапазоны CR накладываютсяСоберите больше данных или создайте новый тестНаправленный сигналВыборка готова, минимум выполнен, диапазоны не пересекаютсяПроверьте контекст и только затем вручную зафиксируйте решениеОценка использует только агрегированные переходы и подтвержденные первые оплаты варианта. В ней нет click_id, источника, IP, пользователя, S2S-payload или личной заметки. Она не учитывает сезонность, разный микс трафика и задержку событий.
GET /api/v1/affiliate/smart-link-experiments?affiliateOrganizationId=aff_123&smartLinkId=slk_123&take=100
Authorization: Bearer <access_token>
// result.evidence:
{
"state": "directional_signal",
"label": "Есть направленный сигнал",
"confidenceLevel": 95,
"method": "Интервалы Уилсона",
"intervalsOverlap": false
}Сверьте качество и коммерческий контекст, затем откройте решения экспериментов для явного, проверяемого действия.
Качество доставки эксперимента
CR стоит интерпретировать только вместе с тем, как фактически распределились переходы. Linkora сравнивает реальные клики с весами вариантов и показывает диагностический сигнал, если отклонение требует внимания.
Ожидаемая и фактическая доля
Для каждого варианта видны его вес, ожидаемое число переходов и фактический результат. Расчет использует закрепленные за тестом клики, а не оценку по UTM-параметрам или внешним отчетам.
Нет скрытого автоперелива
Даже при сигнале Linkora не меняет постоянные веса, не завершает тест и не останавливает кампанию. Сначала проверьте контекст, а затем вручную зафиксируйте решение.
Проверка еще не готоваНе каждый вариант набрал минимальную выборкуНе интерпретируйте раннее случайное отклонениеВес слишком мал для проверкиУ варианта меньше 5 ожидаемых переходовВидны доли, но χ² не используется как надежный сигналДоставка соответствует весамχ² не превышает 95% порог для числа вариантовПродолжайте анализировать CR и коммерческие метрики вручнуюНужно проверить распределениеχ² превышает порогПроверьте источник, доступность маршрутов и время тестаДля двух вариантов порог χ² равен 3.8415, для трех -5.9915, для четырех - 7.8147. Оценка не содержит click_id, IP, источник, пользователя, S2S-payload, личную заметку или секреты и сохраняется в снимке ручного решения.
GET /api/v1/affiliate/smart-link-experiments?affiliateOrganizationId=aff_123&smartLinkId=slk_123&take=100
Authorization: Bearer <access_token>
// result.deliveryQuality:
{
"state": "potential_mismatch",
"label": "Нужно проверить распределение",
"confidenceLevel": 95,
"method": "Критерий согласия Пирсона (χ²)",
"chiSquare": 6.6667,
"criticalValue": 3.8415
}Сверьте доступность маршрутов и характер трафика, затем принимайте решение по завершенному тесту явно и вручную.
Сегменты результатов эксперимента
Общий CR может скрывать разницу между аудиториями. Linkora показывает ограниченные агрегаты по странам и устройствам, чтобы результат теста можно было проверить в контексте, не раскрывая отдельные действия.
Страны и устройства
В каждом срезе видны переходы, подтвержденные первые оплаты и CR контроля и вариантов. Маленькие строки не выводятся: требуется минимум 10 переходов на сегмент.
Контекст остается в истории
При ручной фиксации решения безопасный срез сохраняется вместе с метриками и весами. Поздние события не переписывают уже принятый вывод.
Порог 10 переходовВыводятся только достаточно объемные строкиНет единичных или мелких сегментовСтраныТолько корректные двухбуквенные коды или «Не определено»Нет точного местоположения и IPУстройстваМобильные, десктоп, планшеты или «Не определено»Нет user-agent и идентификатора устройстваОбщий контурТот же агрегат доступен партнеру и платформеНет источника, UTM, click_id, S2S-payload и личной заметкиСегментный CR помогает понять контекст, но не является отдельным автоматическим вердиктом. Для общей надежности используйте интервалы Уилсона, а для распределения - контроль качества доставки. Веса всегда меняются только вручную в журнале решений.
GET /api/v1/affiliate/smart-link-experiments?affiliateOrganizationId=aff_123&smartLinkId=slk_123&take=100
Authorization: Bearer <access_token>
// result.segmentBreakdown:
{
"key": "country",
"label": "Страны",
"minimumSegmentClicks": 10,
"entries": [{
"label": "RU",
"totalClicks": 20,
"totalFirstPurchases": 12,
"variants": [/* CR по каждому варианту */]
}]
}Сформулируйте отдельную гипотезу и создайте новый контролируемый тест вместо изменения текущего результата задним числом.
Свежесть S2S-данных эксперимента
Первые оплаты могут прийти от рекламодателя не сразу после перехода. Поэтому Linkora отдельно показывает долю трафика за последние 24 часа, чтобы ранний CR не выглядел окончательным выводом по эксперименту.
24 часа после перехода
Пока в выборке есть переходы моложе 24 часов, их отложенные S2S-события способны изменить CR. Это предупреждение для человека, а не запрет на работу со ссылкой.
Контекст фиксируется вместе с выводом
При ручном решении сохраняется безопасный снимок свежести: объем свежего трафика и последние технические метки времени. Поздние события не переписывают уже зафиксированную историю.
Переходов еще нетВ эксперименте нет переходовЗапустите трафик; CR и свежесть появятся с первой выборкойВ выборке есть свежий трафикХотя бы один переход произошел за последние 24 часаУчитывайте, что отложенные S2S-события могут изменить CRОкно ожидания S2S прошлоЗа последние 24 часа новых переходов не былоСвежий трафик уже не искажает контекст, но полноту данных рекламодателя все равно сверяйте отдельноlastConversionReceivedAt - время, когда Linkora приняла последнее S2S-событие. lastConversionEventTime - время события, которое передал рекламодатель. Они могут отличаться из-за очереди или задержки интеграции. Сигнал не меняет веса, кампании, комиссии и выплаты автоматически.
GET /api/v1/affiliate/smart-link-experiments?affiliateOrganizationId=aff_123&smartLinkId=slk_123&take=100
Authorization: Bearer <access_token>
// result.dataFreshness:
{
"state": "awaiting_settlement_window",
"label": "В выборке есть свежий трафик",
"settlementWindowHours": 24,
"totalClicks": 40,
"recentClicks": 18,
"recentClickShare": 45,
"lastClickAt": "2026-08-27T09:15:00.000Z",
"lastConversionReceivedAt": "2026-08-27T08:42:00.000Z",
"lastConversionEventTime": "2026-08-27T08:40:00.000Z"
}Сначала посмотрите долю переходов в окне ожидания и время последнего принятого S2S, затем при необходимости сверяйте интеграцию с рекламодателем до ручной фиксации решения.
Сопоставимость зрелости вариантов
Общая свежесть теста не показывает, одинаково ли распределен новый трафик между контролем и вариантами. Linkora сравнивает именно эту долю, чтобы CR не выглядел прямым сравнением разной по возрасту выборки.
Возраст переходов, а не качество конверсий
Для каждого варианта видны переходы за последние 24 часа и переходы старше окна. Система не делает вывод, почему S2S-событие пришло или не пришло, и не сравнивает платежи между маршрутами.
25 п.п. при достаточном объеме
Сравнение включается после 10 переходов у каждого варианта. Если разница доли свежего трафика достигает 25 процентных пунктов, интерфейс просит учитывать несопоставимость зрелости.
Недостаточно данныхХотя бы у одного варианта меньше 10 переходовСоберите минимальный объем, не интерпретируйте разницу возрастаЗрелость трафика сопоставимаРазброс доли переходов за 24 часа меньше 25 п.п.Общая свежесть все равно остается отдельным предупреждениемЗрелость трафика различаетсяРазброс доли переходов за 24 часа составляет 25 п.п. или большеСверьте CR позже либо зафиксируйте причину осознанного ручного решенияСигнал показывает только возраст переходов. Он не доказывает проблему S2S, не измеряет качество рекламодателя и не меняет веса, кампании, комиссии, выплаты или статус эксперимента. Снимок этого безопасного агрегата сохраняется вместе с ручным решением.
GET /api/v1/affiliate/smart-link-experiments?affiliateOrganizationId=aff_123&smartLinkId=slk_123&take=100
Authorization: Bearer <access_token>
// result.freshnessComparison:
{
"state": "asymmetric_freshness",
"label": "Зрелость трафика различается между вариантами",
"settlementWindowHours": 24,
"minimumComparableClicksPerVariant": 10,
"asymmetryThresholdPercentagePoints": 25,
"recentClickShareGapPercentagePoints": 100,
"variants": [
{ "campaignName": "Контроль", "recentClicks": 0, "matureClicks": 20, "recentClickShare": 0 },
{ "campaignName": "Вариант B", "recentClicks": 20, "matureClicks": 0, "recentClickShare": 100 }
]
}Не переносите вывод о CR автоматически. Дождитесь более ровной зрелости или примите ручное решение, понимая, какая часть выборки еще находится в окне ожидания S2S.
Зрелый CR по зрелой когорте
Linkora отдельно считает первые подтвержденные оплаты среди переходов старше 24 часов. Это дает дополнительный срез CR без самой свежей части трафика и не заменяет основной результат эксперимента.
Старше окна ожидания
В зрелую когорту попадают только переходы, которым уже больше 24 часов. Если к такому переходу позднее придет принятое S2S-событие, оно будет учтено в зрелом CR при следующем просмотре результата.
По планке самого теста
Когорта становится готовой, когда каждый вариант набрал заданный в эксперименте минимум зрелых переходов. До этого Linkora показывает частичный срез без скрытого блокирования ручного решения.
Зрелая когорта еще не сформированаВсе переходы теста моложе 24 часовОриентируйтесь на общий CR и блок свежести, но помните о возможных поздних S2SЗрелой выборки пока недостаточноСтарые переходы есть, но минимум не достигнут у каждого вариантаЧитайте метрику как промежуточный контекст, не как финальное сравнениеЗрелая когорта готова к сравнениюКаждый вариант достиг минимальной выборки переходов старше 24 часовСопоставьте зрелый CR с общим CR, надежностью, доставкой и зрелостью вариантовЗрелый CR не отбрасывает и не замораживает конверсии. Он просто берет текущие подтвержденные первые оплаты у кликов старше окна ожидания. Метрика не выбирает победителя и не меняет веса, кампании, комиссии, выплаты или решение автоматически.
GET /api/v1/affiliate/smart-link-experiments?affiliateOrganizationId=aff_123&smartLinkId=slk_123&take=100
Authorization: Bearer <access_token>
// result.matureCohort:
{
"state": "ready",
"label": "Зрелая когорта готова к сравнению",
"settlementWindowHours": 24,
"minimumClicksPerVariant": 20,
"totalClicks": 60,
"totalFirstPurchases": 9,
"conversionRate": 15,
"variants": [
{ "campaignName": "Контроль", "clicks": 30, "firstPurchases": 3, "conversionRate": 10, "ready": true },
{ "campaignName": "Вариант B", "clicks": 30, "firstPurchases": 6, "conversionRate": 20, "ready": true }
]
}Проверьте долю свежего трафика и его распределение между вариантами. Разница может быть нормальным следствием времени запуска, а не поводом для автоматического изменения ротации.
Заявки на офферы и уведомления
Для оффера с витриной «По заявке» партнер отправляет заявку из карточки. Она сразу появляется у рекламодателя в разделе «Уведомления» и на странице управления оффером. Там можно одобрить партнера, отклонить заявку или добавить команду в белый список вручную.
Следит за решением
Откройте «Уведомления», чтобы увидеть одобрение или отказ. После одобрения оффер появляется в доступных и его можно выбрать в конструкторе ссылки.
Принимает решение
Перейдите из уведомления прямо к офферу, проверьте данные команды и выберите решение. Для автоодобрения установите режим «Автоматический» в настройках оффера.
ЗапрошенПартнер ожидает решенияРекламодатель одобряет или отклоняетДоступ открытПартнер добавлен к офферуСоздать ссылку и запустить кампаниюДоступ закрытРабота с оффером ограниченаПроверить условия или связаться с менеджеромКолокольчик в шапке и счётчик в меню показывают непрочитанные действия. Нажмите отметку рядом с уведомлением или используйте «Прочитать все», когда вопрос уже обработан.
Внизу страницы «Уведомления» каждый участник настраивает личный поток: необязательные новости можно отключить, а финансовые, договорные, риск-события и просроченные сверки остаются включенными. Настройка действует только для текущего пользователя и не меняет поток коллег по организации.
S2S-интеграция
Рекламодатель остаётся источником правды по оплатам и продуктовым событиям. Linkora не подключается к вашей платёжной системе: ваш backend сам передаёт подтверждённые данные.
POST /api/v1/ingest/advertiser-events/:advertiserIdX-Signature - HMAC-SHA256 от исходного тела запроса.
X-Timestamp - Unix timestamp; допустимое смещение 5 минут.
event_id идемпотентен: повтор того же события безопасен.
Проверьте событие в кабинете
В «Настройках пространства» выберите оффер и запустите проверку. Linkora покажет обязательные поля, соответствие click_id, правило выплаты и дубликат event_id. Эта проверка не создает конверсию и не меняет баланс.
Отправьте запрос из backend
Получив зелёную проверку, подпишите неизменённое JSON-тело секретом webhook и отправляйте его в рабочий endpoint. Передавайте metadata.schema_version: "2026-08" и не генерируйте новый event_id при сетевом повторе.
Для production, staging и разных продуктов создавайте отдельные ключи в «Настройках пространства». Передайте публичный идентификатор в X-Integration-Key, а HMAC считайте секретом именно этого ключа. Отзыв ключа немедленно прекращает приём запросов с ним. Для плановой замены используйте ротацию: прежний и новый ключ работают только в выбранное окно перекрытия, затем старый отключается автоматически.
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_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"
}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Готовность запуска
После Sandbox откройте «Готовность запуска» в кабинете рекламодателя. Она собирает в одном месте активность пространства, ключи, офферы, правила оплаты, версию S2S-схемы, внешний Sandbox и технические сигналы.
Закройте все блокеры
Нужны активный оффер с правилами, подпись S2S, созданный Sandbox, успешное эталонное событие и подписанный запрос от backend продукта.
Открыть готовностьСохраните новый снимок
Нажмите «Проверить» после ротации ключа, изменения оффера или релиза backend. Снимок не создает конверсию, комиссию, проводку или выплату.
Команда платформы видит тот же безопасный статус в админке: `Готовность запусков`. Там доступны риск, владелец, Sandbox и последняя проверка, но не payload, секреты, подписи или финансовые значения.
Здоровье S2S по офферам
После запуска контролируйте не только пространство целиком, но и каждый активный оффер. Linkora сопоставляет агрегированные переходы, принятые S2S-события, отклоненные запросы и правила вознаграждения в одном техническом срезе.
Увидьте поток каждого продукта
Страница показывает клики, зрелость трафика, свежие события, первые подтвержденные оплаты и ошибки приема. Она не считает каждый клик обязательной конверсией и не останавливает трафик автоматически.
Открыть здоровье офферовРазбирайте только нужное
Админский реестр ставит вперед отклонения, отсутствие правил выплат и зрелый трафик без S2S. Условия с понятным действием попадают в операционную очередь с владельцем, SLA и историей; payload, ключи, click_id или данные пользователя не раскрываются.
Окно наблюдения составляет 7 дней, переход становится зрелым через 24 часа, а диагностический сигнал появляется от 10 зрелых кликов без принятого S2S. Это повод проверить mapping и очередь продукта, а не автоматическое финансовое решение.
Операционная очередь здоровья S2S
Диагностический экран помогает наблюдать поток, а операционная очередь нужна для условий, по которым команде Linkora следует действовать. Она не создаёт тревогу из-за одного свежего клика и не делает финансовых решений автоматически.
Только проверяемый повод
Нужны не менее 10 зрелых переходов без свежего S2S, реальные отклонённые запросы или принятые события при отсутствии payout-правил. Ошибочный запрос без активного offer_id остается на уровне пространства, а не приклеивается к случайному офферу.
Владелец, SLA и проверка
Оператор назначает сотрудника, оставляет короткую рабочую заметку и открывает нужный оффер из карточки. Worker закрывает задачу только после реального восстановления: свежего события, отсутствия новых отклонений или появления правила.
Зрелый трафик без S2SПроверить mapping, backend и тестовый запросПосле свежего принятого событияОтклонённый запросПроверить подпись, время, ключ и форматПосле 24 ч. без нового отклоненияНет payout-правилДобавить правила и отдельно оценить старые данныеПосле появления правила у оффераОперационная карточка содержит только имя оффера и агрегированные метрики. Linkora не передает в неё S2S-payload, подписи, секреты, платежные или пользовательские идентификаторы. Сигнал не ставит трафик на паузу и не меняет комиссию, выплату или проводку.
События и их последствия
registrationПользователь завершил регистрациюCPLtrial_startedЗапущен пробный периодTrial CPAfirst_purchaseПодтверждена первая оплатаCPA и HybridrenewalПодтверждено продлениеRevShare и Hybridrefund / chargebackОплата отменена или оспоренаКорректировка комиссииДля возврата и чарджбэка передайте related_event_id исходного денежного события. Частичный возврат передается в amount: Linkora списывает только пропорциональную часть комиссии, а остаток остается на исходной конверсии. Повторяйте тот же event_id только при сетевом повторе.
В кабинетах партнера и рекламодателя откройте раздел «Корректировки»: там видны исходное событие, каждая часть возврата, комиссия и накопленный остаток. Полная инструкция с примерами payload, ошибок и HMAC находится в docs/KORREKTIROVKI_I_CHARGEBACKI.md.
Модели вознаграждения
Фиксированная выплата за регистрацию.
Выплата за запуск пробного доступа.
Выплата за первую подтвержденную оплату.
Процент от платежей пользователя.
Фикс за первую оплату плюс процент с продлений.
После подтверждения комиссия может находиться в холде. Срок задается в оффере; выпуск проходит автоматически или вручную через админку.
Финансы, холды и выплаты
Финансовый контур Linkora хранит всю цепочку от подтвержденной конверсии до выплаты. Реквизиты, решение оператора, платежный пакет и внешний номер платежа остаются в журнале, поэтому цифры можно сверить в любой момент.
Добавляет реквизиты и создает заявку
Откройте «Финансы», добавьте банковский перевод, СБП, криптокошелек или другой способ. Назначьте один активный способ по умолчанию, выберите его в новой заявке и следите за статусом в журнале выплат.
Видит резерв по офферам
Откройте «Финансы офферов», чтобы увидеть суммы в холде, подтвержденные комиссии и общий резерв по каждой валюте и офферу. Это не платежная система: данные строятся по переданным вами S2S-событиям.
ХолдКомиссия удерживается до заданной датыПартнер видит календарь, админка — срок и правилоПодтвержденоКомиссия доступна на балансеПартнер может создать заявку на выплатуНа проверкеФинансовая команда приняла заявкуСтатус и комментарий появляются в журналеВ обработкеЗаявка включена в платежный пакетВидны пакет, сумма и состояние обработкиВыплаченоОператор указал внешний номер платежаБаланс списывается, партнер получает уведомлениеДля новых комиссий срок выбирается в таком порядке: персональное правило «партнер + оффер», общее правило партнера, затем срок из оффера. Уже созданная комиссия хранит примененный срок и правило, поэтому последующие изменения не переписывают историю.
Верхняя карточка «Финансовый прогноз» показывает ближайшие 90 дней. У партнера доступный баланс уже уменьшен на незавершенные заявки в той же валюте. Поэтому после заявки на 7 USD при подтвержденном остатке 12 USD следующая заявка может быть не больше 5 USD.
POST /api/v1/affiliate/payout-methods
Authorization: Bearer <access_token>
Content-Type: application/json
{
"type": "bank_transfer",
"label": "Основной расчетный счет",
"details": "Банк: ...\nПолучатель: ...\nСчет: ...",
"isDefault": true
}Финансы нескольких организаций
Один аккаунт может управлять несколькими организациями. Для денег это не общий кошелек: перед просмотром баланса, созданием заявки или сверкой обязательств выберите нужную организацию в верхнем блоке финансового раздела.
Каждая выплата внутри своей организации
Остаток, холд, реквизиты, заявки, расчетные документы, корректировки и зачеты показаны только для выбранной партнерской организации. Реквизит и остаток одной организации нельзя использовать для выплаты другой.
Отдельный резерв по каждому бизнесу
Финансы офферов, прогноз и возвраты относятся только к выбранной организации рекламодателя. Сетевые агрегаты доступны команде Linkora в отдельной админке, а не через внешний кабинет.
Одна организацияКонтекст выбирается автоматическиСтарый API-запрос без параметра остается совместимымНесколько организацийФинансовый API ожидает ID выбранной организацииПередайте affiliateOrganizationId или advertiserOrganizationIdЧужой IDСервер проверяет активное членствоЗапрос получит запрет и не раскроет данныеОтсутствие параметра при нескольких организациях не означает «показать все». Linkora возвращает понятную ошибку, чтобы деньги разных юридических лиц не оказались в одном расчете случайно.
GET /api/v1/affiliate/payout-balance?affiliateOrganizationId=<organization_id>
Authorization: Bearer <access_token>Возврат уже выплаченных комиссий
Если возврат или чарджбэк касается комиссии, которая уже вошла в выполненную выплату, Linkora не переписывает историю. Она открывает отдельный финансовый реестр, резервирует точную сумму из будущего подтвержденного баланса и сохраняет связь с исходным событием.
Видит реальный доступный остаток
В разделе «Возвраты выплат» показаны исходное событие, сумма резерва, активные заявки и уже созданные зачеты. Пока запись не закрыта, резерв уменьшает только доступный баланс в той же валюте.
Закрывает обязательство проводкой
Админка создает отдельный зачет из свободного подтвержденного баланса либо позволяет списать исключение только с обязательным основанием. Прошлая выплата остается неизменной.
Корректировка до выплатыСписывает комиссию из ее текущего статусаОбычная запись в «Корректировках»Корректировка после выплатыСоздает возврат выплаченной части и резервОтдельный реестр «Возвраты выплат»Новая заявкаПроверяет подтвержденный баланс за вычетом резерваНепокрытая выплата не пройдетНапример, из выплаченной комиссии 10.00 USD рекламодатель возвращает четверть покупки. Linkora создаст резерв 2.50 USD: при новом подтвержденном остатке 10.00 USD к выплате будет доступно 7.50 USD. Полный пошаговый разбор, статусы и API есть в docs/VOZVRAT_VYPLACHENNYH_KOMISSIY.md.
Платежные пакеты и расчетные документы
Когда команда подтверждает реальный перевод, Linkora выпускает неизменяемый расчетный документ. Он помогает партнеру и оператору сверить сумму, платежный идентификатор, пакет и распределение комиссий без показа реквизитов способа выплаты.
Получает подтверждение
После статуса «Выплачено» откройте «Расчетные документы». В архиве можно увидеть номер, сумму, пакет, контрольную сумму и скачать текстовую сверку только по своим выплатам.
Закрывает фактический результат
В админке откройте «Расчетные документы»: там видно, сколько по пакету оплачено, отменено и еще остается в обработке. CSV-выгрузка дает построчную сверку заявок и документов.
В обработкеЕсть хотя бы одна незавершенная заявкаПакет нельзя считать закрытымЗавершенВсе заявки подтверждены как выплаченныеВся ожидаемая сумма прошлаЧастично завершенЕсть и выплаченные, и отмененные заявкиСверьте фактический оплаченный итогОтмененНи одна заявка не была выплаченаПакет закрыт без выполненных переводовДокумент хранит номер, сумму, валюту, платежный идентификатор, номер пакета и снимок распределения комиссий. Его SHA-256 контрольная сумма помогает проверить неизменность снимка, но не заменяет банковский реестр, договор или бухгалтерский первичный документ.
Для одной выполненной заявки создается только один документ. Сервер блокирует параллельное подтверждение выплаты, поэтому повторный запрос не должен создать вторую проводку, второе распределение или второй документ.
Если историческая выплата была создана до появления архива, оператор может выпустить документ из отдельного списка в админке. Эта операция не меняет баланс, статус или платеж, а повторный запуск безопасно вернет уже созданный документ.
В полном руководстве есть API, примеры выгрузок, типовые ошибки, правила доступа и чек-лист закрытия пакета.
Экономика кампаний: расход, доход и ROI
Партнер может добавить фактический расход к сохраненной кампании и сразу увидеть результат запуска. Linkora сопоставляет расход с переходами, конверсиями и комиссиями, но никогда не складывает разные валюты в одну условную цифру.
Ведет фактический бюджет
Откройте «Экономика», выберите кампанию, дату, валюту и сумму. Источник и заметка помогают команде помнить, откуда пришла цифра, но остаются только в партнерском кабинете.
Видит управленческий итог
В админке есть отдельная страница «Экономика»: агрегаты по кампании, партнеру и валюте, переходы, подтвержденные комиссии, прибыль, ROI и CPC без доступа к личным заметкам.
НакопленоВсе действующие комиссии после частичных корректировокПонимать общий объем в работеПодтвержденоКомиссии в статусах «Подтверждена» и «Выплачена»Считать текущий финансовый результатПрибыльПодтверждено минус расходПонять результат кампанииROIПрибыль / расход × 100%Сравнить сопоставимые запуски одной валютыCPCРасход / переходы кампанииКонтролировать стоимость трафикаЕсли расход равен нулю, ROI и CPC не показываются. Это честнее, чем бесконечный ROI. При расходе 7 USD и подтвержденной комиссии 10 USD прибыль составляет 3 USD, а ROI - 42,9%. Суммы в RUB, EUR, USDT и других валютах остаются самостоятельными строками.
Расход можно создать, изменить или удалить. Эти действия пишутся в аудит без текста источника и заметки. Они не меняют click, конверсию, комиссию, баланс, холд или выплату - только пересчитывают представление экономики.
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, ответы, ошибки, примеры по валютам и рабочий ритм команды.
Цели кампаний: бюджет, ROI и CPC
Цель помогает партнеру заранее договориться с собой о пределах запуска. По умолчанию она сравнивает факт с бюджетом, ROI и CPC и остается объяснимым сигналом. Для жесткого бюджета есть отдельный, явно включаемый предохранитель.
Не теряется при смене периода
Расход по бюджету суммируется за всю жизнь кампании в выбранной валюте. На 80% Linkora показывает раннее внимание, на 100% - превышение.
Сравнивайте актуальный срез
ROI и CPC считают только по датам в фильтре экономики. Если данных недостаточно, вместо ложного вывода появится статус «Ожидает данные».
Бюджет: приближение / превышениеРасход за весь срок достиг порога или бюджетаСигнал; пауза только при включенном предохранителеROI ниже целиФактический ROI периода меньше заданногоТолько показывает объяснениеCPC выше пределаСтоимость перехода периода выше максимумаТолько показывает объяснениеПревышение обычной цели не ставит кампанию на паузу, не отключает ссылку и не меняет комиссию, холд, баланс, выплату или S2S-события. Автопауза работает только при включенном флаге у цели с бюджетом и только на отметке 100%.
На одну кампанию и валюту доступна одна цель. Для USD, RUB, EUR и других валют создаются отдельные записи: Linkora не смешивает их без явной методики конвертации. Рекламодатель не может создавать или менять цели партнера, а админка получает только безопасные агрегаты без источника и заметок расходов.
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 для изменения и удаления, правила доступа, типовые ошибки и сценарий проверки релиза.
Мониторинг целей и история сигналов
После сохранения цели Linkora регулярно сверяет ее с фактом и ведет понятную историю. Открытый сигнал остается одной записью, а не превращается в поток одинаковых уведомлений на каждом цикле проверки.
Разные горизонты для разных задач
Бюджет сопоставляется со всеми расходами кампании за весь срок. ROI и CPC строятся по последним семи календарным дням, чтобы показывать актуальную динамику запуска.
Только при новом состоянии
Linkora открывает или возобновляет сигнал и отправляет уведомление один раз. Пока условие сохраняется, история обновляется без повторов; после нормализации сигнал получает статус «Решен».
Приближение бюджетаРасход достиг установленного процента бюджетаФакт, порог, период и переход к экономикеПревышение / ROI / CPCДостигнут лимит бюджета, ROI ниже цели или CPC выше пределаБезопасный снимок показателей и история состоянияРешенМетрика нормализовалась, цель отключена или кампания переведена в черновик/архивИстория для разбора без нового начисления или действияОбычный сигнал не ставит кампанию на паузу, не отключает ссылку и не меняет S2S, комиссию, холд, баланс или выплату. Исключение - явный предохранитель бюджета, который срабатывает только на 100%. Источник и заметка расходов остаются в кабинете партнера: в реестре сигналов и админке есть только безопасные агрегаты.
Уведомления «Контроль целей» необязательны и настраиваются каждым участником в разделе «Уведомления». Уведомление о фактической автопаузе обязательно: оно требует внимания владельца, но также не содержит приватных расходов или S2S-данных.
GET /api/v1/affiliate/campaign-goal-signals?state=open
Authorization: Bearer <access_token>Откройте отдельный реестр: там доступны фильтр по состоянию, период расчета, количество доставок и безопасная ссылка в экономику кампании.
Автопауза бюджета: жесткий предел без сюрпризов
Когда расход кампании нельзя превысить, включите предохранитель прямо в цели бюджета. Он не является скрытой автоматизацией: флаг виден в настройке, срабатывает только на 100% и оставляет полную историю решения.
Трафик остается под контролем команды
На раннем пороге Linkora показывает обычный сигнал. ROI и CPC тоже остаются аналитикой: они никогда не запускают автопаузу.
Ссылка останавливается
Worker переводит активную кампанию в паузу. Новые переходы по ней не создаются, а существующие данные и финансы не меняются.
СрабатываниеРасход равен или выше бюджета с включенным флагомОткрывает сигнал, ставит кампанию на паузу и отправляет обязательное уведомлениеПосле паузыСигнал остается в реестре с точным временемПроверяет расход, лимит и источник трафикаВозобновлениеЛимит выше расхода либо флаг выключенВручную включает кампанию в разделе «Кампании»Автопауза не управляет внешней рекламной площадкой и не отменяет платежи. Она блокирует только новые переходы через кампанию 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" }Сначала добавьте бюджет в «Экономике», затем включите автопаузу. После срабатывания увеличьте лимит или выключите флаг перед ручным запуском кампании.
Дайджесты отчетов: ритм без ручной проверки
Сохраненный срез можно превратить в личный ежедневный или еженедельный дайджест. Он приходит внутри Linkora в выбранный часовой пояс и открывает тот же отчет с точными границами уже сформированного периода.
Никаких скрытых дублей
Для партнера и рекламодателя отчет должен быть привязан к одной организации. На него создается одно расписание: другой период или время удобно вынести в новый сохраненный срез.
Даты не застывают
Выберите предыдущий календарный день или последние семь дней. Linkora сохраняет точные границы снимка, не меняя фильтры оффера, кампании, источника или валюты.
Время и поясЕжедневно или раз в неделю по IANA-поясуСледующий запуск и история выполненияПовтор`nextRunAt` обновляется в транзакции с блокировкойОдин снимок до следующего срокаПотеря доступаРоль, пользователь или пространство больше не активныРасписание ставится на паузу без новой доставкиДайджест содержит только количество переходов, конверсий, подтверждений и комиссии по валютам. Он не переносит S2S-payload, секреты, идентификаторы пользователей, `click_id`, заметки или источники расходов. Его уведомление личное и отключается в настройках потока.
Периодический дайджест не является внешней отправкой и не заменяет CSV. Это оперативный снимок внутри кабинета; по кнопке из уведомления открывается детальный защищенный отчет с тем же временным диапазоном.
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
}Сначала сохраните нужный срез в «Отчетах», затем выберите время, период и часовой пояс в отдельном реестре дайджестов.
Коммерческие условия и запуск без сюрпризов
Перед запуском Linkora проверяет не только техническую готовность. У платформы и оффера могут быть свои редакции условий, а у организации и реквизитов - статус проверки. Это защищает расчеты и заранее объясняет, почему действие доступно или остановлено.
Принимает условия до ссылки
В разделе «Коммерческие условия» откройте действующую редакцию платформы и условия каждого оффера. Если оффер требует принятия, подтвердите текст один раз для своей организации, затем создавайте кампанию или копируйте ссылку.
Управляет риском до трафика
В своём разделе «Коммерческие условия» видны статус проверки, ставка платформы и кредитные лимиты по валютам. При режиме блокировки новые переходы остановятся до того, как обязательства превысят согласованный предел.
Редакции условийОпубликованный текст неизменяем; новая версия требует нового принятияВерсия, дата, организация, пользователь и источник принятияЭкономика комиссииДля каждой комиссии фиксируются выплата партнеру, ставка Linkora и валовая суммаИсторический снимок не меняется после правок тарифаКредитный лимитСчитаются pending, hold и approved обязательства по валютеРежим наблюдения или блокировка нового трафикаПроверкаРеквизиты или организация ожидают решения, отклонены либо просроченыПричина ограничения, заметка оператора и уведомлениеКомиссия платформы считается поверх выплаты партнеру: при выплате 5 USD и ставке 10% валовая сумма равна 5.50 USD, а комиссия Linkora - 0.50 USD. Ставка и суммы фиксируются в момент создания комиссии, поэтому финансовая история воспроизводима.
Операторы управляют документами, проверками и лимитами в отдельном разделе админки. Финансовую сверку можно выгрузить в CSV с учетом прав доступа и защитой значений от формул.
Подробные сценарии, ограничения, API и диагностика собраны в руководстве по коммерческим условиям.
Отчеты и контроль качества
В обоих кабинетах есть раздел «Отчеты». Он показывает один и тот же выбранный срез в таблицах конверсий, комиссиях, источниках и CSV-выгрузках. Фильтры по периоду, офферу, событию, source_id и sub1 сохраняются при выгрузке, а важный срез можно закрепить или открыть команде.
Понимает результат трафика
Сравнивает площадки и креативы по меткам, видит холды и выплаты, скачивает конверсии для своей сверки.
Контролирует поток продукта
В разделе «Качество трафика» следит за свежестью S2S-событий, долей атрибуции, ручными проверками и результативностью источников.
Общий срез всегда привязан к одной организации. Linkora добавляет этот фильтр сама, поэтому участник другой организации не увидит его и не сможет получить его данные через URL или CSV.
Если в отчете растет число событий «без атрибуции», обычно продукт не возвращает исходный click_id. Проверьте передачу параметра от партнерской ссылки до backend, который отправляет S2S-событие.
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"
}
}Контроль качества и антифрод
Linkora не принимает рискованные решения вслепую. Каждый сигнал привязан к конверсии и объясняет, что именно требует проверки: время события, повтор пользователя, скорость кликов, лимит оффера, GEO или источник.
Видит агрегированное качество
Раздел «Качество трафика» показывает уровень риска по офферу и source_id без раскрытия пользовательских данных. Это помогает исправить кампанию до того, как платформа ограничит запуск.
Контролирует продуктовый поток
В «Качестве трафика» рекламодателя видны агрегированные сигналы, доля рисковых действий и офферы, которым нужен дополнительный контроль. Персональные данные посетителей в этом срезе не раскрываются.
Высокий рискСобытие раньше клика, повтор пользователя, аномальная скорость IP, запрещённый GEO или источникАдминка отправляет на ручную проверку; оператор может приостановить кампанию или ограничить партнёраСредний рискGEO или source_id не входят в условия оффераПроверить правила оффера, метки кампании и данные S2SНизкий рискКонверсия слишком быстро следует за кликом или у клика есть технический флагСравнить с нормальной динамикой источника и не смешивать запускиОграничение качества не переписывает историю и не скрывает причину. Решение оператора, заметка, время и применённое действие сохраняются в аудите; для high-сигналов решение по конверсии остаётся отдельной операцией модерации.
Импорт истории без повторных начислений
Если продукт уже работал в другой системе, перенесите клики и события через «Импорт истории» рекламодателя. Linkora сначала строит dry-run: он не меняет баланс и показывает каждую ошибку до подтверждённого запуска.
Загрузите CSV или JSON
Укажите kind: click для перехода и kind: event для продуктового действия. Внешний external_click_id станет доступен для последующих S2S-событий.
Проверьте результат
Партия не запустится, пока в ней есть ошибки. Дубли безопасно пропускаются, а предупреждения объясняют отсутствие клика, правила выплаты или необычную дату.
После подтверждения очередь сначала создаёт клики, затем события. Исторические строки проходят обычные правила атрибуции и комиссии, но не отправляют postback партнёрам.
ГотовоСтрока прошла dry-runПодтвердить проверенную партиюПредупреждениеИмпорт допустим, но нужен контрольСверить атрибуцию и payout-правилоОшибкаНе хватает обязательных данных или оффер не подходитИсправить файл и создать новую проверкуЕсть ошибкиТехническая ошибка в очередиИспользовать повтор ошибочных строк[
{
"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"
}
]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": [/* строки из примера */]
}Интеллектуальный контур и безопасный 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.
Статус «Взято в работу» сохраняет заметку и историю, но не останавливает кампанию. Для финансовых и антифрод-действий используйте их специальные рабочие страницы.
Открытый API и исходящие webhooks
В разделе «API и webhooks» владелец пространства выпускает отдельный сервисный ключ для своего backend, BI или CRM. Этот ключ только читает разрешенные данные и не заменяет S2S-ключ, которым рекламодатель передаёт конверсии.
Минимальный доступ
Выберите только нужные области: офферы или кампании, конверсии, аналитику и финансы. Ключ показывается один раз, его можно ротировать с окном перекрытия или отозвать моментально.
Событие приходит само
Добавьте публичный 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. Проверяйте её до обработки и храните идентификатор доставки, чтобы безопасно игнорировать повтор.
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.
Производительность, емкость и надежность
Linkora показывает операционной команде, когда сеть готова к росту: сколько событий проходит через платформу, как себя чувствуют API и worker, не растет ли очередь и подтверждено ли восстановление базы.
Смотрит готовность до запуска
В админке откройте «Емкость и надежность». Там собраны память процессов, темп S2S, очереди postback и webhook, размер PostgreSQL, возраст backup и последняя изолированная проверка восстановления.
Проверяет профиль без риска
Сценарий нагрузки создает отдельные тестовые пространства, отправляет корректно подписанные события и удаляет тестовые данные после завершения. Он не запускается без явного подтверждения.
ГотовоРесурсы, очереди, backup и проверки укладываются в текущие порогиМожно увеличивать трафик следующей согласованной ступеньюКонтрольПорог памяти достигнут, очередь растет или restore-проверка устарелаОткрыть карточку в capacity и устранить причину до ростаКритичноAPI, worker, backup или synthetic-проверка недоступныПриостановить расширение нагрузки и восстановить контурLinkora не показывает в capacity секреты, ключи, реквизиты или тела событий. Снимок содержит только агрегаты ресурсов, счетчики и безопасные технические статусы.
Еженедельная проверка восстановления создает временную отдельную базу, развертывает в нее backup, проверяет базовые таблицы и затем удаляет ее. Рабочая база и финансовая история не изменяются.
Подробный план масштабирования, допустимые параметры нагрузочного профиля и сценарий восстановления находятся в docs/PROIZVODITELNOST_I_MASSSHTABIROVANIE.md.
Споры и сверки
Кейс сверки нужен, когда участники видят расхождение в операции или хотят зафиксировать вопрос по качеству трафика. Он не меняет сумму оплаты у рекламодателя и не проводит выплату автоматически: Linkora сохраняет доказательства, контекст, решение и полный след действий.
Открывает обращение
В разделе «Споры и сверки» выберите свое пространство, тип вопроса и связанную конверсию, комиссию или заявку на выплату. Когда операция связана, Linkora сама определит вторую сторону.
Управляет решением
Оператор назначает ответственного, срок, приоритет и вторую сторону для свободного обращения. Только платформа может менять финальный статус и фиксировать решение.
ОткрытКейс зарегистрирован и ожидает первичной оценкиПлатформаНа рассмотренииОператор проверяет данные и материалыПлатформаОжидает ответНужен ответ второй стороныПлатформаРешен / отклоненИтог и основание зафиксированыПлатформаУчастник видит только кейсы, где его активная организация является одной из сторон. Сообщения, материалы и системные изменения из такого кейса видны обеим сторонам. Служебные заметки команды платформы скрыты от участников и не возвращаются через API.
Когда команда Linkora устанавливает срок ответа, платформа предупредит обе стороны за 24 часа и будет напоминать о просроченном кейсе до решения или нового срока. Уведомление ведет только в доступную пользователю карточку сверки.
Для ссылки используйте безопасный идентификатор или контролируемый URL. Когда нужен файл, прикрепите PDF, JPEG, PNG или WebP до 10 МБ в блоке «Защищенное вложение»: Linkora проверит сигнатуру, зашифрует содержимое и выдаст его только после повторной проверки доступа.
Кнопка выгрузки в карточке кейса формирует доказательную CSV-сводку только из разрешенных вам данных. Служебные записи остаются только у команды Linkora, а значения, похожие на формулы, безопасно нейтрализуются перед скачиванием.
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.
Приватность и хранение данных
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.
Диагностика и безопасность
Событие не появилось. Проверьте URL, X-Timestamp, подпись и журнал S2S-событий рекламодателя.
Поток помечен как требующий проверки. Откройте «Настройки пространства»: в карточке готовности видно, выпущен ли секрет, есть ли активный оффер, когда поступило последнее событие и сколько их было за 24 часа.
Тест показывает предупреждение по click_id. Событие может попасть в журнал, но для партнерской атрибуции продукт должен сохранить исходный ID перехода и вернуть его обратно в S2S-запросе.
Секрет или ключ окружения скомпрометирован. Отзовите ключ в настройках рекламодателя или перевыпустите базовый webhook-секрет, затем обновите переменную окружения backend. Отозванный ключ прекращает работать немедленно.
Потеряно устройство или есть лишний вход. Откройте «Безопасность» в любом кабинете и завершите нужную сессию либо все остальные. Отозванный сеанс перестаёт работать на сервере сразу.
Нужна плановая замена ключа. Используйте ротацию с коротким окном перекрытия, обновите backend на новый ключ и только затем дождитесь автоматического отключения прежнего.
Создайте кабинет рекламодателя, получите webhook-секрет или ключ окружения, проверьте тестовое событие и отправьте первую реальную конверсию.