Skip to content

Сохранение отзыва NPS

Концептуально, оценка NPS представляет собой шкалу от 0 до 10, где 0 означает, что клиент не готов рекомендовать продукт или услугу, а 10 — полное доверие и готовность рекомендовать.

При сохранении отзыва указывается канал channel, из которого получена оценка, и категория category, к которой относится отзыв. Категория, это и есть то, что оценивается. Например, процесс оформления заказа (checkout) или доставка заказа (delivery).

И категории и каналы создаются в личном кабинете в разделе настроек NPS.

Технически процесс оценки следующий:

  1. Запрашиваете информацию о категории с помощью метода nps/categories. Оттуда вас интересуют дополнительные вопросы к клиенту в зависимости от его оценки.
  2. Опционально запрашиваете каналы с помощью метода nps/channels. Но, скорее всего, это не потребуется, т.к. код канала вы знаете заранее и должны "зашить" в саму форму на сайте или в мобильном приложении.
  3. Предлагаете клиенту выбрать оценку от 0 до 10. Визуал может быть либо в виде 10 звездочек либо числовой шкалой.
  4. После выбора оценки проверяете, какой вопрос нужно задать по этой категории. Вопросы вы получили в nps/categories. Вопрос выбирается так:
    • если оценка от 0 до 6, то вопрос из поля detractor_question;
    • если оценка от 7 до 8, то вопрос из поля passive_question;
    • если оценка от 9 до 10, то вопрос из поля promoter_question.
  5. Под вопросом выводите поле ввода комментария.
  6. Предлагаете клиенту либо оставить комментарий либо нажать кнопку "Пропустить".
  7. В конце, отправляете собранные данные на текущий метод API и отображаете клиенту финальное сообщение из nps/categories:
    • если оценка от 0 до 6, то сообщение из поля detractor_success;
    • если оценка от 7 до 8, то сообщение из поля passive_success;
    • если оценка от 9 до 10, то сообщение из поля promoter_success.
POST https://api.rees46.ru/nps/create

Параметры

ПараметрТипОбязателен?Описание
shop_idStringДаAPI-ключ
shop_secretStringНетСекретный API-ключ. Обязателен, если в запросе отсутствует did
did*StringНетИдентификатор устройства. SDK передает его автоматически
sid*StringНетИдентификатор сессии
phone*StringДаТелефон клиента
email*StringДаEmail клиента
loyalty_id*StringДаИдентификатор участника программы лояльности
external_id*StringДаВнешний идентификатор клиента
order_idStringНетИдентификатор заказа, если оценивается заказ
channelStringДаКод канала
categoryStringДаКод категории
rateIntegerДаОценка: 0..10
commentStringНетОпциональный комментарий к оценке

Идентификаторы

Параметры, отмеченные [*] - обязателен хотя бы один из них. На стороне сайта или мобильных приложений SDK автоматически передает did.

Запрос

Пример запроса:

shell
curl 'https://api.rees46.ru/nps/create' \
    -X 'POST' \
    -H 'Content-Type: application/json' \
    --data-raw '{"shop_id":"SHOP_ID", "shop_secret":"SHOP_SECRET", "email":"EMAIL", "channel": "email", "category": "delivery", "rate": 7, "comment": "..."}'
javascript
// Полная структура
r46("nps", "review", {
   channel: "channel_code",
   category: "category_code",
   rate: 7,
   comment: "Some comment"
}, success, failure);

// Без комментария
r46("nps", "review", {
   channel: "channel_code",
   category: "category_code",
   rate: 10
}, success, failure);
swift
// Простая оценка без комментария
sdk.review(rate: 3, channel: "ios_app", category: "checkout") { _ in
  print("Review is posted")
}

// Оценка заказа
sdk.review(rate: 6, channel: "ios_app", category: "checkout", order_id: "ORDER-3341") { _ in
  print("Review is posted")
}

// С комментарием
sdk.review(rate: 9, channel: "ios_app", category: "checkout", comment: "Nice application, thank you!") { _ in
  print("Review is posted")
}

// С комментарием и заказом
sdk.review(rate: 10, channel: "ios_app", category: "checkout", order_id: "ORDER-3341", comment: "Nice application, thank you!") { _ in
  print("Review is posted")
}
kotlin
// TODO описать
java
// TODO описать
javascript
// TODO описать

Ответ

Пример ответа сервера:

json
{
  "status": "success"
}

В случае ошибки ответ будет в формате:

json
{
  "status": "error",
  "payload": {
    "message": "Identifier is not valid"
  }
}