Как подключить оплату через бота (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):
- Блок предоплаты — без
tariff - Блок «Тариф 1 целиком» —
tariff=Название тарифа 1 - Блок «Тариф 1, доплата» —
tariff=Название тарифа 1 - Блок «Тариф 2 целиком» —
tariff=Название тарифа 2 - Блок «Тариф 2, доплата» —
tariff=Название тарифа 2 - (аналогично для остальных тарифов)
Каждый блок — это отдельная платёжная кнопка Salebot со своей фиксированной ценой; условие блока проверяет именно эту сумму в коллбэке успеха.
Шаг 5. Проверьте
Сделайте тестовый платёж на небольшую сумму. Загляните в Воронку — привяжите последний этап (обычно «Оплата») к источнику «Бот-конструктор: Оплата» в выпадающем списке, если ещё не привязали. После этого зайдите на Дашборд — сумма должна появиться в «Выручке» и либо в «Продажах» (если сумма совпала с тарифом), либо в «Предоплатах» (если совпала с фиксированной предоплатой).
Если данные не появляются — самое частое: убедитесь, что в «Калькуляторе» именно #{question} в кавычках, а не голое question, и что используется splitter(...), а не .split(...).