База знаний

Launch Stats →

Как подключить оплату через бота (Salebot и т.п.)

Эта инструкция нужна, если у вас продажи идут через бота (Salebot, BotHelp, Puzzlebot и т.п.), а не напрямую через юKассу на сайте. У платёжной системы только один адрес для уведомлений — и он уже занят вашим ботом, поэтому подключить юKассу напрямую к Launch Stats нельзя. Вместо этого бот сам передаёт нам данные о платеже.

Шаг 1. Получите ссылку

Зайдите в Данные об оплатах → карточка «Бот-конструктор / CRM» → нажмите «Получить ссылку». Скопируйте её — она понадобится дальше. Ссылка выглядит так:

https://launchstats.ru/api/webhook/bot-payment/ваш_токен?amount=

Шаг 2. Задайте тарифы и предоплату

В Настройках запуска укажите:

  • Тарифы — стоимости ваших тарифов курса.
  • Фиксированная предоплата — сумма, которую обычно вносят как первый платёж (если у вас есть предоплата).

Это нужно, чтобы Launch Stats сам понимал, какая сумма — это полная оплата, а какая — предоплата.

Шаг 3. Настройте блок в Salebot

Найдите в своём сценарии место, куда приходит подтверждение успешной оплаты (обычно это выглядит как сообщение вида ..._success <сумма> в переписке с клиентом). Если такого блока ещё нет — создайте новое «Стартовое условие»:

  • Условие: часть текста, которая всегда одинаковая в вашем коллбэке успеха (например live_XXXXX_success, без суммы в конце — она у каждого платежа своя).
  • Выбор соответствия: «По наличию ключевых слов» (не «Полное совпадение» — сумма в конце всегда разная).

Шаг 4. Калькулятор

В поле «Калькулятор» этого блока впишите (замените ссылку на свою из шага 1):

parts = splitter("#{question}", " ")
amount = parts[1]
url = "https://launchstats.ru/api/webhook/bot-payment/ваш_токен?amount=#{amount}"
result = requests_get(url, "text", None, None, None, None)

Это разбивает текст коллбэка по пробелу, берёт последнее слово (сумму) и отправляет её нам.

Частые ошибки, на которые стоит обратить внимание:

  • В калькуляторе Salebot нет .split() как в Python — нужно использовать функцию splitter(строка, разделитель), которая возвращает массив (parts[0], parts[1] и т.д., без отрицательных индексов вроде [-1]).
  • Сложение строк через + в калькуляторе не работает — вместо этого нужную переменную нужно вставлять прямо в текст через #{...}.
  • В requests_get аргументы headers/params/auth/proxy должны быть None, а не 0.
  • Переменную входящего сообщения нужно оборачивать как "#{question}" (с кавычками и фигурными скобками) — просто question без обёртки не сработает.

Нажмите «Проверить через ИИ» рядом с калькулятором — если есть ошибки в коде, там будет понятная подсказка, что именно поправить.

Шаг 4б. (Рекомендуется) Точная привязка платежей к человеку и тарифу

Без этого шага Launch Stats всё равно посчитает выручку и продажи, но будет угадывать по сумме, какой платёж к какому тарифу относится — это может ошибиться, если предоплата составляет ровно половину цены тарифа, или если доплата случайно совпадает по сумме с другим тарифом. Чтобы работало точно при любой рассрочке — передавайте два дополнительных параметра:

url = "https://launchstats.ru/api/webhook/bot-payment/ваш_токен?amount=#{amount}&customer_id=#{client_id}&tariff=НАЗВАНИЕ_ТАРИФА"
  • customer_id — стабильный ID клиента в Salebot (например, Client ID), один и тот же у всех платежей одного человека — и на предоплате, и на любой доплате.
  • tariff — название тарифа точно как оно указано в «Настройки запуска» → «Тарифы» (с учётом регистра). Передаётся на всех платежах, которые ведут к конкретному тарифу (полная оплата, доплата) — кроме самого первого блока предоплаты, где тариф ещё не выбран.

Это отдельный параметр от client_id в дедупликации (см. статью про дедуп) — тот защищает от повторной отправки одного и того же платежа, а customer_id/tariff нужны для того, чтобы правильно связать несколько платежей одного человека в одну продажу, независимо от того, в 2 или в 5 частей он платит и какой процент вносит предоплатой.

Пример на 3 тарифах (сколько блоков «Стартовое условие» нужно в Salebot):

  1. Блок предоплаты — без tariff
  2. Блок «Тариф 1 целиком» — tariff=Название тарифа 1
  3. Блок «Тариф 1, доплата» — tariff=Название тарифа 1
  4. Блок «Тариф 2 целиком» — tariff=Название тарифа 2
  5. Блок «Тариф 2, доплата» — tariff=Название тарифа 2
  6. (аналогично для остальных тарифов)

Каждый блок — это отдельная платёжная кнопка Salebot со своей фиксированной ценой; условие блока проверяет именно эту сумму в коллбэке успеха.

Шаг 5. Проверьте

Сделайте тестовый платёж на небольшую сумму. Загляните в Воронку — привяжите последний этап (обычно «Оплата») к источнику «Бот-конструктор: Оплата» в выпадающем списке, если ещё не привязали. После этого зайдите на Дашборд — сумма должна появиться в «Выручке» и либо в «Продажах» (если сумма совпала с тарифом), либо в «Предоплатах» (если совпала с фиксированной предоплатой).

Если данные не появляются — самое частое: убедитесь, что в «Калькуляторе» именно #{question} в кавычках, а не голое question, и что используется splitter(...), а не .split(...).