Вебхуки для отзывов: сценарии, кейсы, технические детали
Вебхуки — это механизм взаимодействия между системами с помощью HTTP-запросов. Они используются для автоматической передачи данных в реальном времени при наступлении определенных событий.

По сути, вебхук — это файл с программным кодом, в котором содержится определенная информация от сервера. Сервер отправляет этот файл внешней системе, когда происходит событие-триггер.
Преимущества вебхуков — простота настройки и оперативность. В отличие от традиционных API, где клиент с определенной периодичностью сам запрашивает данные (pull-модель), вебхуки используют push-модель: сервер отправляет информацию, как только событие произошло. Это экономит ресурсы и обеспечивает мгновенную реакцию.
Вебхуки незаменимы в ситуациях, когда важно оперативное обновление информации: например, быстрое оповещение модераторов об отзывах, требующих внимания, или начисление баллов клиентам за отзывы.

Примеры использования вебхуков для работы отзывов
Скорость доставки вебхуков и информация, которую они содержат, позволяют настраивать сложные многоуровневые сценарии.
Синхронизация с системой лояльности для начисления баллов за отзывы
Начисление баллов за отзывы влияет сразу на две важные метрики:
- повторные покупки — вознаграждения в виде баллов или скидок побуждают 57% потребителей покупать снова;
- количество оставленных отзывов — начисление баллов может увеличить количество получаемых оценок на 73% при сохранении среднего рейтинга товаров 4,8.
С помощью вебхуков можно настроить гибкие сценарии мгновенного вознаграждения за отзывы. Параметров, по которым проверяется выполнение условий, десятки и из них можно собирать сколь угодно сложные комбинации. Вот только некоторые сценарии и триггеры, которые можно настроить на стороне обработчика вебхуков:
- пользователь оставил свой первый отзыв / вопрос;
- пользователь написал свой N отзыв / вопрос за месяц / год;
- пользователь написал больше всех отзывов с начала года;
- пользователь выполнил условия по длине отзывов;
- пользователь выполнил условие по наличию фото и видео;
- у товара низкий рейтинг, нужно простимулировать отзывы с помощью повышенного вознаграждения;
- товар недавно появился в продаже, и ему не хватает отзывов;
- товарам определенного бренда нужно добавить рейтинг;
- пришла пора сезонного товара, и карточке требуется особое внимание;
- товар часто возвращают, нужно больше отзывов с фото и видео;
- товар стоит больше 10 000 рублей, и его покупают нечасто;
- отзыв / вопрос собрал больше всего лайков;
- пользователь написал отзыв, а через N месяцев дополнил его опытом использования — это повышает качество отзывов;
- пользователь оставил отзыв в первые 12 часов после получения заказа;
- пользователь упомянул в отзыве важные параметры: например, скорость доставки, качество товара, простоту сборки и установки;
- пользователь принял участие в опросе.
Этот список можно продолжать, а его элементы — комбинировать и выстраивать в системные и бизнес-ориентированные правила бонусной программы.
Мгновенная синхронизация между базами данных
Обычно данные синхронизируются с помощью экспортов Aplaut периодически (допустим, раз в сутки), по запросу. А с помощью вебхуков синхронизация происходит в реальном времени, в момент срабатывания событий: например, появление нового отзыва, редактирование, появление ответа на отзыв и так далее.
Оперативное оповещение модераторов
С помощью вебхуков можно настроить мгновенное информирование модераторов о появлении новых отзывов. Можно настроить отправку уведомлений на почту, по SMS или в мессенджеры.
Можно настроить дополнительные оповещения о низких оценках. Или о появлении новых вопросов, чтобы оперативно отвечать на них. Это важно, потому что до 56% потребителей ожидают увидеть ответ в течение 24 часов и 21% хотят получить ответ за 1–4 часа.
Настройка отправки и получения вебхуков
Для настройки отправки вебхуков от Aplaut клиенту необходимо:
1. Сообщить URL, на который будут отправляться вебхуки.
2. Указать список событий, по которым нужно отправлять вебхуки.
3. Определить формат отправки — JSON или XML.
4. В случае если на стороне клиента установлена защита по IP, добавить IP-адреса Aplaut в список разрешенных.
5.Для дополнительной защиты можно добавить токен для аутентификации.
Принимающая система должна уметь «понимать» содержимое вебхуков. Обычно для этого требуется написать простой обработчик: он знает структуру получаемых вебхуков, забирает из них нужную информацию и передает дальше в систему в понятном ей виде.
Пример вебхука Aplaut (формат JSON)
{
"id": "613f59762f42f8001932b595", // ID отзыва (уникальный идентификатор отзыва)
"created_at": "2021-09-13T17:00:22.176+03:00", // Дата и время создания отзыва (ISO 8601)
"updated_at": "2021-09-13T17:00:22.176+03:00", // Дата и время последнего обновления отзыва (ISO 8601)
"context_type": "product", // Тип контекста, к которому относится отзыв (например, product — товар)
"external_id": null, // Внешний ID отзыва, если был передан в Aplaut
"rating": 5.0, // Общий рейтинг отзыва (числовое значение, дробное число)
"rating_details": [ // Детали рейтинга
{
"label": "Качество", // Название критерия оценки
"name": "quality", // Системное имя критерия оценки
"value": 5 // Значение оценки для данного критерия
}
],
"author_details": [ // Детали автора
{
"label": "Срок использования:", // Название поля
"name": "frequency_usage", // Системное имя поля автора
"value": "Менее месяца" // Значение
}
],
"lang": "ru", // Язык отзыва (ISO 639-1)
"body": "Отличные саморезы для работы с деревом", // Основной текст отзыва
"pros": null, // Поле «Достоинства»
"cons": null, // Поле «Недостатки»
"published_at": null, // Дата публикации отзыва (ISO 8601), если опубликован
"imported_at": "2021-09-13T17:00:22.151+03:00", // Дата импорта отзыва в Aplaut
"author_name": "Константин", // Имя автора отзыва
"author_email": null, // Email автора отзыва (если был передан)
"origin": "omnibox", // Источник отзыва (например, виджет или API)
"syndication_source": null, // Источник агрегации отзыва, если применимо
"state": "published", // Статус отзыва (например, published — опубликован)
"product_id": "1234567", // ID товара, к которому относится отзыв
"photos": [
"https://yoursite.ru/picture1.png",
"https://yoursite.ru/picture2.png"
], // Ссылки на прикрепленные фотографии
"videos": [
"https://yoursite.ru/video1.mp4",
"https://yoursite.ru/video2.mp4"
], // Ссылки на прикрепленные видео
"tags": [
"Тег_1",
"Тег_2",
"Тег_3"
], // Список тегов, присвоенных отзыву
"recommended": true, // Рекомендация: отмечает, рекомендует ли автор товар
"custom_attributes": {
"submitted_product_id": "1234567", // ID товара, который был передан вместе с отзывом
"custom_attribute_1": "qwerty" // Пользовательский атрибут
},
"location_name": "Санкт-Петербург", // Местоположение автора отзыва
"likes": 0, // Количество лайков к отзыву
"dislikes": 0, // Количество дизлайков к отзыву
"order_number": null, // Номер заказа, связанного с отзывом (если был передан)
"custom_source": null, // Название источника отзыва (например, сайт)
"custom_medium": null, // Тип источника (например, мобильное устройство)
"custom_campaign": null, // Название кампании (например, рассылка)
"location": { // Публичная геопозиция устройства
"continent_code": "EU", // Код континента
"continent": "Европа", // Название континента
"country_code": "RU", // Код страны
"country": "Россия", // Название страны
"city": "Санкт-Петербург", // Название города
"postal_code": "190807", // Почтовый индекс
"latitude": 59.8981, // Географическая широта
"longitude": 30.2619, // Географическая долгота
"time_zone": "Europe/Moscow", // Часовой пояс
"client_ip": "5.18.171.189" // IP-адрес клиента
},
"comments": [ // Комментарии к отзыву (при наличии)
{
"id": "66727839418074001669e0c3", // системный ID комментария
"commentable_id": "667277cfed85740019141206", // системный ID отзыва, к которому относится комментарий
"commentable_type": "Review", // Тип объекта (например, отзыв)
"text": "Спасибо за отзыв!", // Текст комментария
"author_name": "Имя", // Имя автора комментария
"author_email": "yourname@yourmail.ru", // Email автора комментария
"author_type": "User", // Тип автора комментария
"state": "published", // Статус комментария (опубликован или на модерации)
"lang": "ru" // Язык комментария
}
],
"product": { // Данные о товаре
"name": "Саморезы по дереву 4.0x40 мм потайная головка конструкционный (500 шт.)", // Название товара
"url": "https://yoursite.ru/product_page", // URL страницы товара
"external_id": "11111111", // Внешний ID товара (offer.id из YML-каталога)
"alias": null, // Альтернативный ID товара
"group_id": null, // ID группы, если товар добавлен в группу
"category_name": "Саморезы (шурупы) по дереву конструкционные", // Название категории товара
"brand_name": null, // Название бренда товара
"description": "Предназначены для монтажа деревянных конструкций из цельной и срощенной древесины между собой...", // Описание товара
"recommended_product_ids": [], // Список ID рекомендуемых товаров
"custom_attributes": {}, // Пользовательские атрибуты
"reviews_count": 15, // Количество собственных отзывов
"questions_count": 0, // Количество собственных вопросов и ответов
"published_group_reviews_count": 13, // Количество опубликованных отзывов у всех товаров группы (если товар добавлен в группу)
"published_group_questions_count": 0, // Количество опубликованных вопросов и ответов у всех товаров группы (если товар добавлен в группу)
"rating": 3.25, // Общий рейтинг товара
"rating_details": [], // Детали рейтинга товара
"recommended": 53.84615384615385, // Процент пользователей, рекомендующих товар
"created_at": "2018-04-06T03:50:25.367+03:00", // Дата создания товара
"updated_at": "2021-09-13T07:37:43.112+03:00" // Дата последнего обновления товара
}
}
Безопасность
По умолчанию для отправки вебхуков используется защищенный протокол HTTPS. Кроме того, мы обмениваемся с клиентами специальным секретным ключом: он добавляется в каждый вебхук, и принимающая сторона сверяет этот ключ, чтобы убедиться в подлинности запроса. Этих методов достаточно для надежной защиты системы от посторонних вмешательств.
Особенности
При отправке вебхука мы проверяем ответ внешней системы. Если не получаем отчет об успешной доставке, повторяем отправку по правилу экспоненциальной отправки: в общей сложности система делает до 52 попыток доставить вебхук адресату.
Содержание вебхуков дополнительно не настраивается, всегда отправляются все данные, относящиеся к определенному событию. Благодаря этому структура вебхуков всегда одинакова, их удобно обрабатывать принимающей стороне.
Что в итоге
Вебхуки — это простой и удобный способ оповещения о различных действиях с UGC-контентом (отзывы, комментарии, вопросы и ответы) — от их написания до публикации или бана. Вебхуки позволяют отправлять информацию об изменениях мгновенно и без значительной нагрузки на системы. Они легко настраиваются и обрабатываются — работать с вебхуками умеют большинство современных сервисов и решений.
По общим вопросам: welcome@aplaut.com
По вопросам подключения: sales@aplaut.com
Контактный номер: +7 (499) 938-60-90