Продажи связаны с вашей CRM.
Получайте подтверждённые события магазина в своей системе. Подпись защищает запрос, журнал помогает найти сбой, повторная доставка — восстановить обмен.
Начните с тестового события
- В кабинете откройте «Интеграции → Исходящие Webhook».
- Укажите название и публичный HTTPS endpoint, выберите необходимые события.
- Сохраните однократно показанный секрет на сервере получателя, не в браузере.
- Нажмите «Тест» и проверьте статус и попытки в журнале.
Не путайте оплату и выдачу
| События | Что произошло |
|---|---|
order.created / order.cancelled | Создание / отмена заказа, не подтверждение денег |
payment.confirmed / payment.review / payment.refunded | Подтверждённая оплата / необходима проверка / подтверждённый возврат |
fulfillment.completed / fulfillment.failed | Выдача или исполнение завершены / возникла проблема выдачи |
access.granted / access.extended / access.revoked | Право доступа предоставлено / срок изменён / прекращён. Не означает вступление в канал. |
access.expired | Синхронизация завершения доступа выполнена, включая отзыв |
amountMinor — строка: копейки для RUB, целые Stars для XTR. Анализируйте валюты отдельно. Передаются внутренние ID и безопасные статусы, без ключей товаров, адресов и ссылок-приглашений.
Надёжная доставка
Событие записывается в той же транзакции, что и изменение заказа. Новая подписка не рассылает историю. Временные ошибки повторяются до восьми попыток; окончательный сбой можно повторить из журнала. Предыдущие попытки сохраняются.
Проверяйте X-Botnest-Signature: HMAC-SHA256 от точных байтов timestamp.body. Отклоняйте старые timestamps и атомарно исключайте дубли по id события. Повторные доставки возможны, порядок не гарантирован. Ответ 2xx означает принятие; 5xx и временные ошибки вызывают повтор.
Примеры для n8n и Make
Мост проверяет подпись до автоматизатора и сохраняет события в SQLite до ответа 202. Нужны Node.js 24, постоянный диск и HTTPS reverse proxy. Секрет и URL автоматизации задаются в окружении. Это пример для самостоятельного размещения, не подключение, автоматически настроенное Botnest.
Порядок настройки
- Импортируйте пример. В n8n используйте production URL опубликованного Webhook; в Make создайте Custom webhook после импорта.
- Укажите URL автоматизатора в
AUTOMATION_WEBHOOK_URL, секрет Botnest вBOTNEST_WEBHOOK_SECRET, постоянный файл вBOTNEST_INBOX_FILE. Запуститеnode sales-gateway.mjsза HTTPS reverse proxy. - В Botnest укажите адрес моста с путём
/botnest/events, не URL автоматизатора. - В автоматизации добавьте Router/Switch по
type, хранилище с уникальнымidи действие CRM. Подтверждайте запрос только после успешного выполнения.
Примеры возвращают ответ без коммерческих действий. Перед включением добавьте атомарную защиту от дублей, обработку ошибок и проверьте импорт в вашем аккаунте. В Make включите последовательную обработку. Письма и финансовые действия нельзя выполнять повторно после потери ответа.
У моста свои повторные попытки: проверяйте строки failed в SQLite и резервируйте файл. 202 в Botnest подтверждает сохранение в мосте, не завершение CRM. URL автоматизации храните как секрет.
Документация: Webhook n8n · Webhooks Make.
Ответы проверяющего моста
| Код | Значение |
|---|---|
| 202 | Событие сохранено в очередь. Это ещё не подтверждение выполнения CRM. |
| 400 | Некорректный JSON или структура события. |
| 401 | Не прошла проверка подписи или времени запроса. |
| 409 | Этот ID уже сохранён с другим содержимым. Первое событие не заменяется. |
| 503 | Временная ошибка приёмника или хранилища. Доставка будет повторена. |
При остановке через SIGTERM/SIGINT мост дожидается текущей отправки и закрывает SQLite. Резервируйте очередь через SQLite backup или после корректной остановки; копирования только основного файла при работающем WAL недостаточно.