Как настроить передачу событий во внешние сервисы?

В статье описано как настроить передачу данных из Aplaut во внешние системы, например системы лояльности

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

Для настройки этого нам необходимо:

  1. Дать нам URL, на который нужно отправлять вебхуки.
  2. Если установлена защита по IP, добавить наши IP в список разрешенных, предварительно уточнив их у своего менеджера или в чате технической поддержки.
  3. Сообщить на какие события и по какому типу контента отправлять вебхуки.

Типы контента и события, на которые можно настроить отправку вебхука.

Отзыв:

  1. Создание =    create_review  
  2. Обновление =  update_review  
  3. Удаление =   destroy_review 
  4. Публикация =  publish_review 
  5. Бан =   ban_review 
  6. Удержание =  held_review 
  7. Обновление тегов =   update_review_tags 

Пример вебхука для отзыва (формат JSON):

{   
  "event": "create_review",
  "secret": null,
  "hook_id": "685e7fd7a5ab750014729873",

  "id": "613f59762f42f80012220938", (тип — string (ID отзыва))   
  "created_at": "2021-09-13T17:00:22.176+03:00",   
  "updated_at": "2021-09-13T17:00:22.176+03:00",   
  "context_type": "product",   
  "external_id": null,   
  "rating": 5.0,   
  "rating_details": [
    {
      "label": "Качество"
      "name": "quality"
      "value": 5
    }
  ],   
  "author_details": [
    {
      "label": "Возраст",
      "name": "age",  
      "value": "27"     
    }
  ],   
  "lang": "ru",   
  "body": "Текст отзыва",   
  "pros": null,   
  "cons": null,   
  "published_at": null,   
  "imported_at": "2021-09-13T17:00:22.151+03:00",   
  "author_name": "Константин",   
  "author_email": null,
  "author_phone": null,  
  "origin": "omnibox",   
  "syndication_source": null,   
  "state": "published”,   
  "product_id": "5ac6c4514b25650007dfbb7b",   
  "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",  "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": "",     
    "latitude": ,     
    "longitude": ,     
    "time_zone": "Europe/Moscow",     
    "client_ip": ""
  },   
  "comments": [
    {
      "id":"667278394180740012223453",
      "commentable_id":"667277cfed85740011223452",
      "commentable_type":"Review",
      "text":"Текст комментария на отзыв или комментарий",
      "author_name":"Имя",
      "author_email":"yourname@yourmail.ru",
      "author_phone": "123123",
      "author_type":"User",
      "state":"published",
      "lang":"ru"
    }
  ],
  "product": {     
  "name": "Наименование товара",
  "url": "https://yoursite.ru/products/11111111",
  "external_id": "11111111", (тип — string (Внешний ID товара (offer.id в YML файле)))
  "alias": null,
  "group_id": null,     
  "category_name": "Наименование категории",     
  "brand_name": null,     
  "description": "Описание товара",     
  "recommended_product_ids": [],     
  "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"
}
}

Комментарий к отзыву:

  1. Создание = create_comment
  2. Обновление = update_comment
  3. Удаление = destroy_comment
  4. Публикация =  publish_comment 
  5. Бан =  ban_comment 
  6. Обновление тегов =  update_comment_tags 

Пример вебхука для комментария на отзыв (формат JSON):

{
  "state":"published",
  "commentable_external_id":null,
  "secret":"1234567",
  "hook_id":"694d893a8764294ff69741a8",
  "event":"create_comment",
  "author_email":"yourname@yourmail.ru",
  "lang":"ru",
  "text":"Текст комментария на отзыв или комментарий",
  "commentable_type":"Review",
  "author_type":"User",
  "author_name":"Юрий",
  "commentable_id":"69a4342d7b50ae8ad2224456",
  "id":"69a44d65af131bf8d9998765"
}

Вопрос:

  1. Создание =  create_question 
  2. Обновление =  update_question 
  3. Удаление =  destroy_question 
  4. Публикация =  publish_question 
  5. Бан =  ban_question 
  6. Обновление тегов =  update_question_tags 

Пример вебхука для вопроса (формат JSON):

{
  "event": "update_question",
  "secret": "123456789",
  "hook_id": "69a564bdf6e9307f6a123456",
  "id": "69a48cb8b03e53af51234567",
  "created_at": "2026-03-01T20:17:42.249+03:00",
  "updated_at": "2026-03-02T13:22:28.342+03:00",
  "context_type": "product",
  "external_id": null,
  "product_id": "665b6fc67ce94c00012e4785",
  "lang": "ru",
  "body": "Текст вопроса",
  "published_at": "2026-03-01T20:17:42.249+03:00",
  "author_name": "Надежда",
  "author_email": "yourname@yourmail.ru",
  "origin": "submissions_api",
  "state": "published",
  "tags": [
    "test"
  ],
  "location": {},
  "product": {
    "name": "Наименование товара",
    "url": "https://www.yoursite.ru/product/123456/",
    "external_id": "123456",
    "alias": null,
    "group_id": "234567",
    "category_name": "Наименование категории",
    "brand_name": "Наименование бренда",
    "description": null,
    "picture_urls": [
      "https://cdn.yoursite.ru/media_content/115021920299.jpg"
    ],
    "price": 0,
    "available": true,
    "recommended_product_ids": [],
    "custom_attributes": {},
    "reviews_count": 2,
    "questions_count": 2,
    "published_group_reviews_count": 1,
    "published_group_questions_count": 1,
    "rating": 4,
    "rating_details": [
      {
        "name": "reliability",
        "value": 0.6,
        "label": "Надежность"
      },
      {
        "name": "functionality",
        "value": 0.6,
        "label": "Функциональность"
      }
    ],
    "recommended": 0,
    "created_at": "2024-02-29T02:15:25.712+03:00",
    "updated_at": "2025-05-26T16:34:36.453+03:00",
    "published_photos_count": 0,
    "published_kinescope_assets_count": 0,
    "published_mux_assets_count": 0,
    "published_group_photos_count": 0,
    "published_group_kinescope_assets_count": 0,
    "published_group_mux_assets_count": 0,
    "published_partial_rating": 4,
    "published_partial_reviews_count": 1
  },
  "answers": [
    {
      "id": "69a48cb9b03e53af52345678",
      "question_id": "69a48cb8b03e53af52345678",
      "text": "Ответ на вопрос или ответ",
      "author_name": "Олеся",
      "author_email": "yourname@yourmail.ru",
      "author_type": "Consumer",
      "state": "published",
      "lang": "ru"
    }
  ]
}

Ответ на вопрос:

  1. Создание =  create_answer 
  2. Обновление =  update_answer 
  3. Удаление =  destroy_answer 
  4. Публикация =  publish_answer 
  5. Бан =  ban_answer 
  6. Обновление тегов =  update_question_tags 

Пример вебхука для ответа на вопрос (формат JSON):

{
  "event": "create_answer",
  "secret": "123456789",
  "hook_id": "69a564bdf6e9307f6a444000",
  "id": "69a565173d9cca1064511400",
  "question_id": "69a48cb8b03e53af5111222",
  "text": "Текст ответа на вопрос или ответ",
  "author_name": "Алексей",
  "author_email": "yourname@yourmail.ru",
  "author_type": "User",
  "state": "published",
  "lang": "ru"
}

Ответ на опрос:

  1. Создание =  create_survey_response 
  2. Обновление тегов =  update_survey_response_tags 

Пример вебхука для ответа на опрос (формат JSON):

{
  "event": "create_survey_response",
  "secret": "1234567",
  "hook_id": "69a56aecfd7eac6c923305485",
  "id": "69a56b07f6e9307f697462358",
  "started_at": "2026-03-02T13:48:22.023+03:00",
  "created_at": "2026-03-02T13:48:40.009+03:00",
  "updated_at": "2026-03-02T13:48:40.009+03:00",
  "author_name": null,
  "author_email": null,
  "tags": [],
  "custom_attributes": {},
  "order_number": null,
  "location": {
    "continent_code": "EU",
    "continent": "Европа",
    "country_code": "RU",
    "country": "",
    "city": "Москва",
    "postal_code": "08223",
    "latitude": 50.4777,
    "longitude": 12.3649,
    "time_zone": "Europe/Moscow",
    "client_ip": "182.345.85.119"
  },
  "answers": [
    {
      "value": [
        "Вариант 1"
      ],
      "value_type": "string",
      "question_id": "635a79233022e400172505a6",
      "question_type": "ChoiceQuestion",
      "question_text": "Текст вопроса 1",
      "question_params": {
        "required": true,
        "options": [
          "Вариант 1",
          "Вариант 2",
          "Вариант 3"
        ],
        "multiple": false
      },
      "question_order": 0
    },
    {
      "value": [
        "Вариант 1"
      ],
      "value_type": "string",
      "question_id": "635a7a9b3022e40012250b83",
      "question_type": "ChoiceQuestion",
      "question_text": "Текст вопроса 2",
      "question_params": {
        "required": true,
        "options": [
          "Вариант 1",
          "Вариант 2"
        ],
        "multiple": null
      },
      "question_order": 1
    }
  ]
}

Диалог:

  1. Создание =  create_conversation 

Пример вебхука для диалога (формат JSON):

{
  "event": "create_conversation",
  "secret": "1234567",
  "hook_id": "69a568457b50ae8ad2223334",
  "context_type": "product",
  "created_at": "2026-03-02T13:38:56.898+03:00",
  "updated_at": "2026-03-02T13:38:56.898+03:00",
  "origin": "submissions_api",
  "state": "open",
  "product": {
    "name": "Наименование товара",
    "url": "https://yoursite.ru/product/12345066/",
    "external_id": "12345066",
    "alias": null,
    "group_id": null,
    "category_name": "Наименование категории",
    "brand_name": "Наименование бренда",
    "description": null,
    "picture_urls": [
      "https://cdn.yoursite.ru/media_content/115021920299.jpg"
    ],
    "price": 0,
    "available": true,
    "recommended_product_ids": [],
    "custom_attributes": {
      "attribute_1": null,
      "attribute_2": "49156459",
    },
    "reviews_count": 1,
    "questions_count": 0,
    "published_group_reviews_count": 1,
    "published_group_questions_count": 0,
    "rating": 5,
    "rating_details": [],
    "recommended": null,
    "created_at": "2023-12-23T02:12:48.360+03:00",
    "updated_at": "2026-03-01T20:40:48.603+03:00",
    "published_photos_count": 0,
    "published_kinescope_assets_count": 0,
    "published_mux_assets_count": 0,
    "published_group_photos_count": 0,
    "published_group_kinescope_assets_count": 0,
    "published_group_mux_assets_count": 0,
    "published_partial_rating": 5,
    "published_partial_reviews_count": 1
  },
  "items": [
    {
      "_id": "69a568c034934ed10e79af72",
      "author_avatar_url": null,
      "author_email": "yourname@yourmail.ru",
      "author_external_id": "12312333",
      "author_first_name": "Алексей",
      "author_id": "63621845dfd11f0017a4604e",
      "author_name": "Алексей",
      "author_occupation": null,
      "author_type": "Consumer",
      "created_at": "2026-03-02T13:38:56.905+03:00",
      "hide_my_data": false,
      "origin_photo_urls": null,
      "origin_video_urls": null,
      "text": "Текст сообщения",
      "updated_at": "2026-03-02T13:38:56.905+03:00"
    }
  ]
}

Товар:

  1. Пересчет атрибутов =   recalculate_product_attributes 

Пример вебхука для диалога (формат JSON):

{
  "event":"recalculate_product_attributes",
  "secret":null,
  "hook_id":"69bac0b5fce35f6b576cbde9",
  "name":"Футболка женская FILA",
  "url":"https://www.sportmaster.ru/product/31879280299/",
  "external_id":"31879280299",
  "alias":null,
  "group_id":"164251380299",
  "category_name":"Футболки",
  "brand_name":"FILA",
  "description":null,
  "picture_urls":[
    "https://cdn.sportmaster.ru/upload/mdm/media_content/494/136019610299.jpg"
  ],
  "price":0.0,
  "available":true,
  "recommended_product_ids":[],
  "custom_attributes":{},
  "reviews_count":6,
  "questions_count":0,
  "published_group_reviews_count":65,
  "published_group_questions_count":0,
  "rating":4.9,
  "rating_details":[
    {
      "name":"reliability",
      "value":0.959375,
      "label":"Надежность"
    },
    {
      "name":"functionality",
      "value":0.9733333333333333,
      "label":"Функциональность"
    }
  ],
  "recommended":96.875,
  "created_at":"2024-11-17T08:28:13.562+03:00",
  "updated_at":"2025-03-26T17:45:35.543+03:00",
  "published_photos_count":0,
  "published_kinescope_assets_count":0,
  "published_mux_assets_count":0,
  "published_group_photos_count":4,
  "published_group_kinescope_assets_count":0,
  "published_group_mux_assets_count":0,
  "published_partial_rating":5.0,
  "published_partial_reviews_count":3
}



Примечания.

  • В теле вебхука есть параметр secret , в который можно записать любое значение в формате строки и использовать вместо аутентификации. Аутентификация другими способами, на данный момент, не поддерживается.
  • В вебхуках не предусмотрены дополнительные фильтры, а также не настраивается содержание ответа, всегда отправляются все данные, содержащиеся в определенном типе контента;
  • Если в ответ на отправку вебхука мы получаем ошибку, он отправится снова еще несколько раз;
  • Один вебхук можно настроить на несколько событий;
  • Ответ на успешный запрос мы не логируем (логируются только ошибки).
👆 На этом пока всё