Многие сервисы рассылки email-сообщений предлагают инструменты автоматизации – триггеры. Для многих задач этого функционала действительно хватает. Но иногда возникают более сложные задачи, когда нужно обеспечить максимально продвинутый обмен данными между разными web-приложениями или между разными облачными сервисами. Как раз тут на помощь приходят вебхуки (webhooks).

Ниже наш материал, расставляющий все точки над i. Расскажем о том, что такое Webhook’и и как их применять в email-рассылках для повышения эффективности. Начнём с определений.

Что такое Webhook простыми словами

Webhooks – дословно «веб-перехватчик». Слово hook переводится как «крючок», «ловушка» или «захватка».

Система вебхуков – это модель автоматического обмена данными по http(https)-протоколу, реализованная с помощью web-обработчиков. Здесь есть источники оповещений, отправляющие набор данных при возникновении определённых событий, и web-перехватчики, которые отвечают за принятие этих данных на стороне внешнего сервера и последующую обработку.

Такая система во многом похожа на взаимодействие двух разных web-сервисов по API-интерфейсу (в некоторых документах webhooks даже называют «обратным API»), но фактически это разные подходы.

Чтобы обмениваться данными по API, системы реализуют модель опроса внешнего сервера, это происходит циклически (то есть непрерывно). Если сервер отвечает о готовности, начинается процедура отправки/обмена. API обычно имеют двунаправленный характер – «ты мне, я тебе».

Webhook’и просто отправляются на внешний сервер без каких-либо циклических опросов. Инициатором отправки всегда выступает определённое событие – триггер. Соответственно, отправка данных фактически выполняется только однократно – при срабатывании триггера.

Если данные не были приняты с первого раза, то сервер может пытаться дослать данные с определённой периодичностью. Но если принимающая сторона долго не отвечает, то отправка прекращается – через заданный период времени или через определённое количество попыток.

Итак, Webhooks – это такая система автоматических однонаправленных уведомлений, в рамках которой разные web-приложения или сервисы обмениваются данными между собой по интернету.

Для чего могут использоваться вебхуки

Исходя из вышесказанного, получается, что webhooks удобно использовать для того, чтобы:

  • Отправлять уведомления о наступлении важных событий внутри определённого онлайн-сервиса: поступление новых заказов, появление новых сообщений, срабатывание иных триггеров.
  • Добавлять новые контакты и данные из внешних сервисов – при их появлении.
  • Обновлять, изменять и удалять данные в базах – цены, остатки и т.п.

Web-хуки часто применяются в CRM и CMS-системах, в системах сквозной аналитики, а также в сервисах push, SMS и email-рассылок (ESP-сервисах).

Применение вебхуков в email-рассылках

В email-рассылках вебхуки применяются для:

  • Оповещения внешних систем об изменении статуса письма в триггерной рассылке (доставлено оно или нет, открыто или нет, перешёл ли пользователь по ссылке и по какой).
  • Оповещение об изменении статуса контакта, а также об изменении/появлении данных в определённых полях (отписался, подписался, проявил активность, было заполнено поле с датой рождения, с именем и т.п.).
  • Уведомления об изменении статуса общей рассылки (в процессе, закончена, отклонена и пр.).
  • Уведомления о наличии ошибок или проблем (отписки, жалобы на спам, проблемы доставки и т.д.).

Почти всегда webhooks в email-рассылках соотносятся с системой внутренних триггеров. Соответственно, с их помощью можно значительно расширить возможности автоматических рассылок.

Например, по триггеру обнаруживается клик в последней рассылке, почтовый сервис передаёт данные о контакте во внешнюю CRM-систему (с помощью вебхуков). CRM-система подбирает первого свободного менеджера и тот звонит или пишет клиенту с персональным предложением товаров/услуг.

Эффективность продаж может вырасти в разы.

Как минимум становится проще отслеживать ошибки и проблемы, собирать данные о действиях пользователей и т.п.

Как подключить /настроить webhook для отправки уведомлений

Так как список обработчиков хуков у каждого сервиса рассылки свой, то и функционал триггеров у каждой платформы будет отличаться.

Точно также будут различаться API-интерфейсы и методы вызова хуков.

Чтобы настроить отправку данных по тому или иному событию, нужно обратиться к документации сервиса.

Единственный плюс – все вебхуки передаются в POST-запросах и используют один и тот же формат (JSON).

Соответственно, каким бы ни был внешний сервис, при правильной конфигурации можно будет настроить обмен данными и обработку хуков из любого почтового сервиса.

Для защиты данных могут применяться специальные ключи (как с API), которые одновременно обеспечивают идентификацию клиента и отсекают все нелегитимные запросы (если внешний сервис не может предъявить ключ, то его запросы просто игнорируются).

Алгоритм создания и настройки нового вебхука выглядит примерно так:

  • Внутри основного сервиса, выступающего в роли источника данных, например, в сервисе email-рассылок, создаётся новый хук. Для этого нужно задать его название и определить тип сообщения (если есть разделение по форматам). Плюс, в отдельных сервисах может потребоваться использование/генерация API-ключей для защиты.
  • Для хука задаётся адрес принимающего сервиса. Это может быть URL с доменом, а может быть конкретный IP-адрес, включающий номер вызываемого порта (порты указываются после двоеточия).
  • На принимающем сервере (сервисе), например, в CRM-системе, настраиваются web-перехватчик. Он будет отвечать за приём и распарсивание данных из JSON-структуры. Данные, принятые в POST-запросе, могут вноситься в единую базу, на их основе могут работать различные триггеры и т.п.

Создание Webhook в сервисе рассылок RuSender

В старой версии личного кабинета перейдите в раздел «Автоматизация». Выберите пункт «Webhooks».

В новой версии панели управления функционал автоматизации пока ещё на стадии разработки.

Нажмите кнопку «Создать новый webhook».

Введите название хука, URL-адрес сайта и страницы обработчика, а также определите тип сообщений и передаваемые события.

В качестве типа сообщений могут быть выбраны уведомления о событиях в:

  • классических рассылках;
  • одиночных письмах, отправленных по шаблону;
  • триггерных письмах;
  • рассылках по API/SMTP.

В качестве событий могут передаваться данные о событиях (фактах):

  • доставки (или недоставки);
  • пропущенных писем;
  • открытия писем;
  • перехода по ссылкам (клика на кнопках);
  • отписки;
  • попадания в категорию «Спам».

Сервер RuSender отправляет уведомления на вебхуки с частотой один раз в 10 минут. В передаваемом массиве может быть очередь до 500 уведомлений (событий) сразу.

В формируемом уведомлении будет два раздела:

  • Meta – используется для описания хука. Например, здесь можно считывать информацию о типе уведомления, об идентификаторе хука, а также о его названии.
  • Events – непосредственно массив с данными по событию. Тут могут передаваться данные об имени и статусе события, о времени его возникновения, о параметрах браузера клиента и т.п. (включая ссылки, по которым кликнул клиент, email-адрес, код и текст ответа почтового сервера).

Вебхуки можно создавать и удалять посредством API-интерфейса, через API можно ими управлять (получать списки действующих, изменять выбранные и т.п.).

Примерно вот так будет выглядеть массив, отправляемый хуком:

{
  "meta": {
      "id": 1234,
      "name": "Название вашей рассылки",
      "type": "campaign"
    },
  "events": [
    {
      "name": "delivered",
      "email": "klient@mail.ru",
      "timestamp": 1693207847
    },
    {
      "name": "opened",
      "email": " klient2@mail.ru ",
      "timestamp": 1693207848
    },
    {
      "name": "clicked",
      "email": " klient2@mail.ru ",
      "timestamp": 1693207852,
      "url": "https://ваш-сайт.ru/страница-акции/",
      "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
      "ip": "168.192.0.1",
      "browser": "Chrome",
      "os": "Windows",
      "device_type": "Desktop",
      "country": "Russian Federation",
      "region": "46",
      "city": "Saransk"
    },
  ]
}

Здесь статус «delivered» обозначает «доставлено». Статус «opened» – «открыто». «Clicked» – переход по ссылке (в том же блоке будут предоставлены данные об URL и о пользователе: IP, регион, город, юзер-агент, браузер, операционная система и т.п.).

На принимающей стороне (в нашем случае на сайте) должен реализовываться приём и обработка webhook’а. Тело JSON-ответа должно распарсиваться, а нужные данные должны передаваться для дальнейшей работы. Например, CMS-система сайта может инициировать оповещения в Telegram.

Вместо собственных обработчиков можно задействовать обработчики, встроенные в CRM (при наличии), или в сервисы-коннекторы: Albato, Zapier, ApiX-Drive, IFTTT и пр.

На примере платформы-коннектора Albato:

  1. Нужно создать триггер, запускающий связку. В качестве триггера указывается входящий webhook-запрос.
  2. Для вебхука создаётся и настраивается новое подключение – определяется список возможных параметров и заголовков.
  3. Сервис Albato сгенерирует специальный URL-адрес, на который нужно будет направлять оповещения из хуков. Он будет иметь примерно такой вид – «https://h.albato.com/wh/38/1lft5ig/bL8jY64RyATU3H_tsu-xxСЛОЖНЫЙ_ИДЕНТИФИКАТОР/».
  4. Далее настраивается web-хук в сервисе рассылки (пример привели выше).
  5. После отправки нескольких тестовых запросов сервис Albato автоматически обнаружит имеющиеся поля вебхука.
  6. Останется только настроить дальнейшую логику обработки данных из этих полей. Например, можно обновить статус сделки в CRM или добавить новую задачу для исполнителя в PBM-системе, отправить оповещение в любимый мессенджер и т.п.

Заключение:

Вебхуки – это реально полезный инструмент для максимальной автоматизации любых web-сервисов, в том числе служб рассылки email-сообщений. С помощью хуков можно настроить отправку оперативных уведомлений, сообщающих о наступлении важных событий, например, об успешном завершении рассылки или о наличии ошибок/отписок и т.п.

Но webhook’и рассчитаны исключительно на продвинутых пользователей и программистов (web-разработчиков). Одно дело настроить отправку стандартных данных в POST-запросе, это делается в несколько кликов. А другое – настроить их приём и обработку на своём сервере. Готовые стандартные решения представлены пока только на базе no-code платформ, таких как, Albato (работает в РФ) или Zapier (не работает в РФ).

Даже с платформами-коннекторами нужно будет правильно настроить обработку полей и все последующие действия. Всё это повышает порог вхождения для начинающих email-маркетологов.

Дата публикации: 20 сентября 2023