Как настроить вебхуки для получения уведомлений о событиях
Вебхук — это POST-запрос, который SendPulse отправляет на ваш сервер, когда в аккаунте происходит событие, например, появляется новая сделка или доставляется письмо. В разделе Вебхуки (Webhooks) можно настроить уведомления для CRM-системы, Automation, конструктора курсов, сервиса рассылок, SMS и SMTP в одном месте.
Например, интернет-магазин хранит заказы в CRM-системе, а остатки товаров — в собственной системе учета. С вебхуком для событий сделки система учета получает каждую оплаченную сделку за считанные секунды и резервирует товар без ручного экспорта.
Рассмотрим, как создать и протестировать вебхук, выбрать события, проверить подпись запроса и управлять вебхуками.
Преимущества и примеры использования
Вебхуки отправляют данные на ваш сервер в тот же момент, когда происходит событие, поэтому вам не нужно экспортировать данные вручную или опрашивать API. В разделе Вебхуки (Webhooks) можно:
- получать события из CRM-системы, Automation, конструктора курсов, сервиса рассылок, SMS и SMTP на один URL;
- выбирать, какие из 70 доступных событий отправляет каждый вебхук;
- добавлять заголовки авторизации и проверять подпись каждого запроса, чтобы ваш сервер принимал запросы только от SendPulse;
- отправлять тестовый запрос еще до появления реальных событий;
- просматривать каждый запрос за последние 30 дней в журнале запросов и повторять неудачные запросы.
Вот как бизнес может использовать вебхуки:
- Интернет-магазин отправляет события Изменение стадии сделки и Завершение оплаты сделки в свою систему управления заказами, поэтому оплаченная сделка в CRM-системе становится подтвержденным заказом без ручной работы.
- Маркетинговое агентство собирает события Доставлено, Открытие письма, Клик по ссылке в письме, Hard bounce и Письмо отмечено как спам в собственной аналитической панели, чтобы отчитываться клиентам о доставляемости.
- Онлайн-школа получает события Студент зачислен на курс и Студент завершил курс и уведомляет службу поддержки в мессенджере, когда студент записывается на курс или завершает его.
Проверьте требования к вебхуку
Прежде чем создавать вебхук, убедитесь, что у вас есть:
| Публичный HTTPS-URL на вашем сервере | URL должен начинаться с https://, быть доступным из интернета, принимать POST-запросы с телом в формате JSON и отвечать успешным кодом состояния. SendPulse не поддерживает URL с http://, localhost, а также частные или внутренние сетевые адреса. |
| IP-адреса SendPulse, разрешенные в вашем файрволе | Если ваш сервер принимает запросы только с разрешенных IP-адресов, добавьте адреса из списка IP-адреса источника вебхука (Webhook source IP addresses) в форме вебхука. Список может меняться без предупреждения, поэтому проверяйте его, когда ваш сервер перестает получать запросы. |
| Доступ к разделу «Вебхуки» | Владелец аккаунта имеет доступ по умолчанию. Участнику команды нужно право Settings в группе Email and marketing campaigns его роли пользователя. |
SendPulse отправляет каждое событие как отдельный POST-запрос с объектом JSON в теле. О полях тела запроса читайте в статье Просмотр деталей запроса.
Вебхуки для чат-ботов и поп-апов настраиваются отдельно — в каждом чат-боте или поп-апе.
Создайте вебхук
Вебхук связывает один URL на вашем сервере с набором событий, которые вы хотите получать на этот адрес. Каждый вебхук в аккаунте требует собственного URL.
Введите URL вебхука
Перейдите в Настройки аккаунта > Вебхуки и нажмите Добавить вебхук (Add webhook). Если вебхуков еще нет, нажмите Создать вебхук (Create webhook).

На странице Новый вебхук (New webhook) в поле URL вебхука (Webhook URL) введите адрес на вашем сервере, который будет получать запросы, например, https://api.example.com/webhooks/sendpulse.
Чтобы просмотреть IP-адреса, с которых SendPulse отправляет запросы, разверните список IP-адреса источника вебхука (Webhook source IP addresses). Если ваш сервер принимает запросы только с разрешенных адресов, добавьте их в файрвол.

Добавьте заголовки авторизации
Вы также можете добавить заголовки, которые SendPulse будет включать в каждый запрос от этого вебхука, например, заголовок Authorization с токеном, который проверяет ваш сервер.
Разверните секцию Дополнительные заголовки (Additional headers) и нажмите Добавить заголовок (Add header). В поле Название (Name) введите название заголовка, а в поле Значение (Value) — его значение.
Чтобы добавить еще один заголовок, нажмите Добавить заголовок снова. Каждый вебхук может иметь до 10 заголовков.
Чтобы удалить заголовок, нажмите иконку корзины рядом с ним.
Название заголовка может содержать от 1 до 128 символов, разрешенных в именах HTTP-заголовков, а значение — от 1 до 1024 печатных символов ASCII. Нельзя добавлять заголовки, которые SendPulse устанавливает самостоятельно, такие как Content-Type и X-Signature.
После сохранения вебхука SendPulse маскирует значения заголовков в форме и в журнале запросов. Чтобы изменить значение позже, нажмите Изменить значение (Change value) рядом с ним.

Выберите события
В секции События (Events) выберите события, которые хотите получать. События сгруппированы по инструменту SendPulse (CRM, Automation, Courses, Email, SMS и SMTP), а в пределах инструмента — по объекту, такому как Сделки или Задачи.
Чтобы развернуть группу, нажмите стрелку рядом с ней. Затем отметьте чекбокс рядом с событием.
Чтобы выбрать все события инструмента или объекта, отметьте чекбокс рядом с его названием.
Счетчик рядом с каждой группой показывает, сколько ее событий выбрано, а счетчик Выбрано (Selected) показывает общее количество. Все события и их описания приведены в разделе Выберите события для получения.

Нажмите Сохранить (Save). Если не выбрано ни одного события, появляется сообщение Выберите хотя бы одно событие, и вебхук не сохраняется.
Вебхук появляется в списке Вебхуки со статусом Активный (Active). Вебхук готов, и теперь SendPulse отправляет каждое выбранное событие на ваш URL как отдельный POST-запрос, обычно через несколько секунд после того, как оно происходит.
SendPulse также генерирует для вебхука секретный ключ. Используйте этот ключ, чтобы проверить подпись запроса.
Выберите события для получения
Вебхук может отправлять любую комбинацию из приведенных ниже 70 событий. Названия событий совпадают со списком События в форме вебхука.
Некоторые события имеют одинаковое название в разных инструментах. Например, Доставлено есть в Email, SMS и SMTP.
Выбирайте событие под нужным инструментом. Поле scope в теле запроса показывает, какой инструмент отправил событие.
CRM
События CRM охватывают компании, контакты, сделки и задачи в CRM-системе и сгруппированы в форме в Компании, Контакты, Сделки и Задачи. SendPulse отправляет следующие события CRM:
| Создание компании | Создана компания. |
| Удаление компании | Удалена компания. |
| Обновление компании | Изменены данные компании. |
| Создание контакта | Создан контакт. |
| Удаление контакта | Удален контакт. |
| Обновление контакта | Изменены данные контакта. |
| Создание сделки | Создана сделка. |
| Удаление сделки | Удалена сделка. |
| Завершение оплаты сделки | Завершена оплата сделки. |
| Изменение статуса сделки | Изменяется статус сделки. |
| Изменение стадии сделки | Сделка переходит на другую стадию воронки. |
| Обновление сделки | Изменены данные сделки. |
| Создание задачи | Создана задача. |
| Удаление задачи | Удалена задача. |
| Изменение статуса задачи | Изменяется статус задачи. |
| Изменение стадии задачи | Задача переходит на другую стадию. |
| Обновление задачи | Изменены данные задачи. |
Automation
События Automation охватывают цепочки и письма, отправленные из них. SendPulse отправляет следующие события Automation:
| Письмо автоматизации доставлено | Письмо, отправленное из цепочки, доставлено контакту. |
| Письмо автоматизации открыто | Контакт открывает письмо, отправленное из цепочки. |
| Цепочка запущена | Контакт запускает цепочку. |
| Переменная обновлена через Automation | Цепочка изменяет значение переменной контакта. |
Courses
События Courses охватывают курсы, студентов, формы и уроки в конструкторе курсов. В форме они сгруппированы в Курсы и Студенты; события Форма отправлена и Создание урока приведены отдельно. SendPulse отправляет следующие события Courses:
| Создание курса | Создан курс. |
| Удаление курса | Удален курс. |
| Курс запущен | Запущен курс. |
| Студент оплатил курс | Студент оплачивает курс. |
| Обновление курса | Изменены данные курса. |
| Студент получил сертификат | Студент получает сертификат. |
| Студент заполнил форму | Студент заполняет форму. |
| Студент завершил урок | Студент завершает урок. |
| Студент завершил курс | Студент завершает курс. |
| Удаление студента | Удален студент. |
| Студент приглашен на курс | Студент приглашен на курс. |
| Студент зарегистрирован | Регистрируется новый студент. |
| Студент зачислен на курс | Студент зачислен на курс. |
| Студент начал урок | Студент начинает урок. |
| Обновление данных студента | Изменены данные студента. |
| Форма отправлена | Отправлена форма. |
| Создание урока | Создан урок. |
События Email охватывают подписчиков, теги и email-рассылки в сервисе рассылок. В форме события тегов сгруппированы под Теги. SendPulse отправляет следующие события Email:
| Тег добавлен | Добавлен тег. |
| Создание тега | Создан тег. |
| Удаление тега | Удален тег. |
| Тег привязан | Тег назначен подписчику или адресной книге. |
| Тег отвязан | Тег снят с подписчика или адресной книги. |
| Обновление тега | Тег обновлен, например, переименован. |
| Подписчик удален из списка | Подписчик удален из адресной книги. |
| Доставлено | Письмо рассылки доставлено подписчику. |
| Hard bounce | Письмо рассылки не доставлено из-за постоянной ошибки, например, несуществующего email адреса. |
| Новый подписчик | Новый подписчик добавлен в адресную книгу. |
| Открытие письма | Подписчик открывает письмо рассылки. |
| Клик по ссылке в письме | Подписчик нажимает ссылку в письме рассылки. |
| Soft bounce | Письмо рассылки не доставлено из-за временной ошибки, например, переполненного ящика. |
| Письмо отмечено как спам | Подписчик отмечает письмо рассылки как спам. |
| Изменение статуса рассылки | Изменяется статус рассылки, например, когда начинается отправка. |
| Подписчик отписался | Подписчик отписывается. |
SMS
События SMS охватывают SMS-рассылки, доставку сообщений и имена отправителей. В форме события рассылок сгруппированы под Рассылки. SendPulse отправляет следующие события SMS:
| Рассылка на модерации | SMS-рассылка отправлена на модерацию. |
| Рассылка отклонена | Модератор отклоняет SMS-рассылку. |
| Доставлено | SMS доставлено получателю. |
| Изменение статуса имени отправителя | Изменяется статус имени отправителя. |
| Отправлено | SMS отправлено получателю. |
| Не доставлено | SMS не доставлено получателю. |
| Отписка | Получатель отписывается по ссылке в SMS. |
SMTP
События SMTP охватывают транзакционные письма, отправленные через SMTP или API. SendPulse отправляет следующие события SMTP:
| Клик по ссылке | Получатель нажимает ссылку в письме. |
| Доставлено | Письмо доставлено получателю. |
| Hard bounce | Письмо не доставлено из-за постоянной ошибки, например, несуществующего email адреса. |
| Открытие | Получатель открывает письмо. |
| Повторная подписка | Получатель, который ранее отписался, снова подписывается через API-метод Resubscribe a recipient. |
| Soft bounce | Письмо не доставлено из-за временной ошибки, например, переполненного ящика или проблемы на почтовом сервере получателя. |
| Отмечено как спам | Получатель отмечает письмо как спам и отписывается. |
| Не доставлено | Письмо не доставлено получателю. |
| Отписка | Получатель отписывается от дальнейших писем. |
Проверьте подпись запроса
SendPulse подписывает каждый запрос секретным ключом вебхука, поэтому ваш сервер может отклонять поддельные запросы. SendPulse генерирует ключ, когда вы сохраняете вебхук.
Чтобы получить ключ, в списке Вебхуки нажмите три точки рядом с вебхуком и выберите Редактировать (Edit). В поле Секретный ключ (Secret key) нажмите иконку глаза, чтобы показать ключ, и иконку копирования, чтобы его скопировать.
Храните ключ на своем сервере, никогда — в клиентском коде.

Если ключ стал известен посторонним, в поле Секретный ключ нажмите иконку повторной генерации. SendPulse заменяет ключ сразу, без подтверждения, и подписывает следующий запрос новым ключом, поэтому обновите ключ на своем сервере немедленно.
Чтобы проверить запрос, вычислите хеш HMAC-SHA256 от сырого тела запроса, используя секретный ключ как текстовую строку. Закодируйте хеш как шестнадцатеричную строку в нижнем регистре и сравните его со значением заголовка X-Signature, которое отправляется в формате sha256=<hash>.
Вычисляйте хеш от тела в том виде, в котором вы его получили, прежде чем парсить JSON. Разобранное и повторно сериализованное тело дает другой хеш.
Отправьте тестовый запрос
Прежде чем произойдут реальные события, проверьте, что ваш сервер принимает запросы от SendPulse.
Чтобы отправить тестовый запрос, в списке Вебхуки нажмите три точки рядом с вебхуком и выберите Редактировать. На странице Редактирование вебхука (Edit webhook) нажмите Тестовый запрос (Test request) под списком События.
SendPulse отправляет на ваш URL вебхука POST-запрос с типом события test, без данных события, с вашими дополнительными заголовками и подписью. Рядом с кнопкой вы видите код состояния, который вернул ваш сервер, и время ответа, например, 200 · 244 ms.
Зеленая точка отмечает успешный запрос, а красная — ошибку, например, 405 · 87 ms.
Если запрос завершается ошибкой, исправьте свой сервер и нажмите Тестовый запрос снова.
Кнопка Тестовый запрос появляется только для сохраненного вебхука. Тестовые запросы не отображаются в журнале запросов.
О распространенных причинах неудачного запроса читайте в статье Устранение проблем с вебхуками.

Управляйте вебхуками
Раздел Вебхуки показывает все вебхуки аккаунта в виде карточек. Каждая карточка показывает URL вебхука, выбранные события в виде тегов с иконкой инструмента и статус Активный или Неактивный (Inactive).
Чтобы найти вебхук, нажмите Фильтр (Filter). Введите часть его URL в поле Поиск (Search), выберите инструмент в списке Сервис (Service) или выберите Активный либо Неактивный в списке Статус (Status) и нажмите Применить (Apply).
Чтобы снова показать все вебхуки, нажмите Сбросить (Reset).

Чтобы открыть действия вебхука, нажмите три точки на его карточке. Доступны следующие действия:
| Редактировать | Измените URL, заголовки, события или статус, просмотрите или повторно сгенерируйте секретный ключ и отправьте тестовый запрос. |
| Журнал | Откройте журнал запросов вебхука. |
| Отключить |
Остановите отправку запросов, не удаляя вебхук. SendPulse сохраняет настройки и журнал запросов отключенного вебхука. |
| Включить | Возобновите отправку запросов. |
| Удалить |
Удалите вебхук навсегда после подтверждения действия в диалоговом окне. Журнал запросов удаленного вебхука недоступен. |
Включить или отключить вебхук можно также переключателем Статус на странице Редактирование вебхука.
Вебхуки, которые вы создали для сервиса рассылок и SMTP в прежнем разделе Настройки аккаунта > API и вебхуки, переносятся в этот список автоматически. Найти их можно по URL. Они продолжают работать, а запросы для их событий также содержат данные в прежнем формате. Подробнее читайте в статье Просмотр деталей запроса.
Теперь каждое событие приходит как отдельный запрос с объектом JSON в теле, а не как массив. Если ваш сервер ожидает массив событий, обновите свой обработчик, как описано в статье Ваш обработчик перестал обрабатывать события после переноса.

Теперь ваш сервер получает уведомления о событиях от SendPulse в реальном времени.
Чтобы проверить, что события доходят до вашего сервера, и увидеть, как он отвечает, просмотрите журнал запросов.
Узнайте, как создать кастомную роль пользователя для участников команды, которые управляют вебхуками, и настроить вебхуки для чат-ботов и поп-апов.
Вы также можете отправлять события на no-code-платформы, такие как Make и n8n. Чтобы создавать вебхуки и управлять ими из своей системы, используйте REST API.
или