Emdesell

API <--- Вебхуки ---> Прочее


Вебхуки

Вебхук — это запрос, который школа сама отправляет на адрес другого сервиса, когда в школе происходит событие: создан аккаунт, оплачен заказ, ученик получил доступ. Так данные попадают в 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} 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} Время посещения

API <--- Вебхуки ---> Прочее