Вебхуки
Вебхук — это запрос, который школа сама отправляет на адрес другого сервиса, когда в школе происходит событие: создан аккаунт, оплачен заказ, ученик получил доступ. Так данные попадают в CRM, таблицы и сервисы автоматизации без ручной выгрузки.
Вебхуки доступны только на тарифах Эксперт и Эксперт + WhiteLabel.
Чтобы другой сервис сам запрашивал данные школы или менял их, используется API.
Создание вебхука
- Перейдите в раздел Настройки → вкладка API и Вебхуки
- В параметре Вебхуки выберите Включены
- Нажмите Создать вебхук
- В поле Название Вебхука укажите название, например «Оплата в CRM»
- В списке Событие выберите, после чего отправлять запрос. Без события вебхук не сохранится
- В поле Тип запроса | URL выберите тип запроса и вставьте адрес целиком, например
https://mysystem.ru/emdesell-webhook. Тип запроса и адрес дает сервис, который принимает данные. Чаще всего это POST - В блоке Заголовки нажмите Добавить и заполните заголовки, которые требует сервис
- В блоке Тело запроса выберите JSON или Form-data и опишите данные
- Нажмите Сохранить изменения

Вебхуков может быть несколько, в том числе на одно событие: запрос уйдет по каждому. Чтобы удалить вебхук, нажмите Удалить на его вкладке, затем Сохранить изменения.
Переменные
Школа отправляет только то, что вы написали в настройках вебхука. Данные события подставляются через переменные в фигурных скобках, например {email}. Переменные работают в URL, заголовках и теле запроса.
Кнопка Доступные переменные показывает список для выбранного события. Нажатие на переменную копирует ее. Переменная, которая подходит к событию, подсвечивается в поле цветом.

- Время передается числом секунд с 1 января 1970 года (Unix-время)
- Если значения нет, вместо переменной подставляется
null
Полный список — в конце страницы.
Пример: оплата в CRM
Вебхук передает в CRM контакт покупателя и сумму после оплаты:
- Событие — Заказ завершен
- Тип запроса | URL — POST и адрес из настроек CRM, например
https://mysystem.ru/emdesell-webhook - Заголовки —
Content-Type:application/json - Тело запроса — JSON:
{
"order_id": {id},
"email": "{email}",
"name": "{first_name}",
"phone": "{phone}",
"sum": {sum},
"currency": "{currency}"
}

Заголовок Content-Type школа сама не добавляет. Без него сервис может не распознать JSON.
Текстовые переменные берите в кавычки, числовые — без кавычек.
В режиме Form-data пары параметр и значение добавляются кнопкой Добавить и отправляются как обычная форма (application/x-www-form-urlencoded). Заголовок для этого режима не нужен.
Проверка
- Создайте временный адрес в сервисе для приема тестовых запросов, например https://webhook.site, и укажите его в поле Тип запроса | URL
- Выполните событие в школе: например, для Аккаунт создан создайте тестовый аккаунт
- Посмотрите в сервисе, какой запрос пришел и подставились ли переменные
- Замените адрес на рабочий и нажмите Сохранить изменения
Как отправляются запросы
- Школа ждет ответ сервиса до 5 секунд
- Запрос отправляется один раз. Если сервис был недоступен или ответил ошибкой, повтора не будет, и событие до него не дойдет
- Журнала отправленных запросов в школе нет: смотреть результат нужно на стороне сервиса
- Школа не подписывает запросы. Чтобы сервис мог проверить, что запрос пришел из вашей школы, добавьте в Заголовки свой заголовок с секретным значением и проверяйте его на стороне сервиса
События
| Событие | Когда отправляется |
|---|---|
| Аккаунт создан | Создан новый аккаунт |
| Заказ создан | Создан новый заказ, он еще не оплачен |
| Заказ завершен | Заказ оплачен или закрыт |
| Урок просмотрен | Ученик впервые открыл урок |
| ДЗ одобрено | Домашнее задание ученика одобрено |
| Тест сдан | Ученик успешно сдал тест |
| Доступ получен | Ученику выдан доступ |
| Доступ закончился | У ученика закончился или снят доступ |
| Вебинар посещен | Ученик впервые зашел на вебинар |
Переменные событий
Аккаунт создан
| Переменная | Значение |
|---|---|
{id} |
ID аккаунта |
{email} |
Email аккаунта |
{first_name} |
Имя аккаунта |
{last_name} |
Фамилия аккаунта |
{patronymic} |
Отчество аккаунта |
{phone} |
Телефон аккаунта |
{extra_data} |
Доп. данные аккаунта |
{role} |
Роль аккаунта |
{bothelp_cuid} |
Bothelp Cuid аккаунта |
{vk_id} |
VK ID аккаунта |
{telegram_id} |
Telegram ID аккаунта |
{salebot_id} |
Salebot ID аккаунта |
{bonus_balance} |
Баланс бонусов аккаунта |
Заказ создан и Заказ завершен
| Переменная | Значение |
|---|---|
{id} |
ID заказа |
{account_id} |
ID аккаунта |
{type} |
Тип заказа |
{payment_system} |
Платежная система заказа |
{currency} |
Валюта заказа |
{sum} |
Сумма заказа |
{payment_form_id} |
ID платежной формы |
{payment_subscription_id} |
ID подписки |
{subscriber_id} |
ID подписчика |
{creation_time} |
Время создания заказа |
{completion_time} |
Время завершения заказа |
{status} |
Статус заказа |
{key} |
Ключ |
{first_name} |
Имя |
{last_name} |
Фамилия |
{patronymic} |
Отчество |
{email} |
|
{phone} |
Телефон |
{extra_data} |
Доп. данные |
{code} |
Код |
{promo_code} |
Промокод |
{used_bonuses} |
Использованные бонусы |
{senler_vk_id} |
Senler VK ID |
{bothelp_cuid} |
Bothelp Cuid |
{salebot_id} |
Salebot ID |
{utm_source} |
UTM Source |
{utm_medium} |
UTM Medium |
{utm_campaign} |
UTM Campaign |
{utm_content} |
UTM Content |
{utm_term} |
UTM Term |
{payment_method_id} |
ID метода оплаты |
{comment} |
Комментарий |
{payment_link} |
Ссылка на оплату |
Урок просмотрен
| Переменная | Значение |
|---|---|
{lesson_id} |
ID урока |
{account_id} |
ID аккаунта |
{time} |
Время просмотра |
ДЗ одобрено
| Переменная | Значение |
|---|---|
{homework_id} |
ID домашнего задания |
{lesson_id} |
ID урока |
{account_id} |
ID аккаунта |
{time} |
Время одобрения |
{creation_time} |
Время создания ДЗ |
Тест сдан
| Переменная | Значение |
|---|---|
{test_id} |
ID теста |
{lesson_id} |
ID урока |
{account_id} |
ID аккаунта |
{time} |
Время сдачи |
Доступ получен и Доступ закончился
| Переменная | Значение |
|---|---|
{access_id} |
ID доступа |
{account_id} |
ID аккаунта |
{start_time} |
Время начала доступа |
{end_time} |
Время окончания доступа, 0 у бессрочного доступа |
Вебинар посещен
| Переменная | Значение |
|---|---|
{webinar_id} |
ID вебинара |
{account_id} |
ID аккаунта |
{time} |
Время посещения |
