- PVSM.RU - https://www.pvsm.ru -

Система отзывов для интернет-магазинов — Cackle Reviews

Всем привет! Сегодня мы расскажем о том, что именно должна делать хорошая система сбора отзывов для гарантированного поднятия конверсии сайта на примере нашего продукта – системы сборы отзывов Cackle Reviews [1]. Первый релиз состоялся в ноябре 2013. За полтора года существования у нас появилось порядка 200 клиентов (из которых 150 – интернет-магазины) и чёткое представление о том, какие возможности системы отзывов честно влияют на рост конверсии:

1. Автоматическая индексация отзывов с микроразметкой рейтинга schema.org/review;
2. Импорт отзывов из Яндекс.Маркета;
3. Рассылка follow-up писем после покупки с приглашением оставить отзыв;
4. Трансляция отзывов в социальные сети;
5. СПАМ-тест (mail-tester.com [2]) с результатом не ниже 9/10 баллов.

Как это всё работает в Cackle Reviews – под катом.

система отзывов для интернет-магазина

1. Индексация в Google с микроразметкой рейтинга

Микроразметка рейтинга – это определённый формат данных для того, чтобы Google понимал и отображал в результатах поиска ссылки на ваш сайт вместе с красивыми оранжевыми звёздочками, рейтингом и количеством отзывов.

Cackle Reviews

В Cackle Reviews это работает автоматически. Cackle Reviews, при установке на любую страницу сайта, скажет Google, что данную страницу надо индексировать с микроразметкой [3]. А самое главное «It's Just JavaScript™», то есть не нужны никакие дополнительные настройки в виде синхронизации отзывов в локальную БД или плагины для CMS. Работает это благодаря тому, что Google индексирует JavaScript.

Проверка в Google Testing Tool

Чтобы убедиться, что Google будет индексировать ваш сайт с микроразметкой, есть специальный валидатор Google Testing Tool [4]. Так как Cackle Reviews работает через JavaScript, то вам нужно не просто скопировать адрес страницы с отзывами, а открыть консоль браузера (например в Chrome это Ctrl + Shift + C), перейти на вкладку Elements и скопировать весь код страницы в окно 1 валидатора, кликнуть «ПРОВЕРИТЬ». Если ошибок нет и в результате отображается рейтинг (значения для примера):

aggregateRating [AggregateRating]:
    ratingValue:      4.5
    reviewCount:    3

То всё ок!

Живой пример

В Google найдите текст «Достоинства: Отличные часы, стоят того Комментарий: модель превосходна» – первая ссылка bestwatch.ru/watch/Frederique_Constant/FC335MC4P5 (наш клиент), сбоку "Рейтинг: 4,5 — ‎4 отзыва". Перейдём на эту страницу, снизу система сбора отзывов Cackle Reviews. Далее откроем страницу в HTML-виде и видим, что отзывов в коде нет, а это значит, что индексация с микроразметкой работает через JavaScript и вам не нужно производить дополнительную настройку: сохранение отзывов в локальную БД или подтягивание стороннего HTML.

микроразметка рейтинга

Ещё примеры индексации с микроразметкой на js (искать в Google):

site:kinderus.ru на основе отзыва
site:unizoo.ru на основе отзыва
site:mirgeeka.ru на основе отзыва
site:afilot.ru на основе отзыва
site:yarcom.ru на основе отзыва
site:shveiburg.ru на основе отзыва

Детали реализации

Google индексирует JavaScript с микроразметкой schema.org/review. Поэтому в виджете, при отрисовке HTML, достаточно просто поддерживать данный формат [3].

Вкратце о том, что по-минимуму должно быть в HTML для корректного понимания микроразметки в Google

1. Информация о продукте

<div itemscope itemtype="http://schema.org/Product">
  <meta itemprop="category" content="Mobile">
  <meta itemprop="brand" content="Apple">
  <meta itemprop="name" content="iPhone 6 Plus 128GB">
  <meta itemprop="image" content="http://mdata.yandex.net/i?path=b0912201810_img_id7453707806759058271.jpeg">
</div>

2. Информация о рейтинге

<span itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
  <span itemprop="ratingValue">4.5</span>    <!-- рейтинг -->
  <span itemprop="reviewCount">7</span>    <!-- количество отзывов -->
</span>

3. Информация о рейтинге каждого отзыва

...
<li itemprop="review" itemscope="" itemtype="http://schema.org/Review">
  <span itemprop="reviewRating" itemscope="" itemtype="http://schema.org/Rating">
    <meta itemprop="ratingValue" content="5">   <!-- рейтинг -->
  </span>
  ...
  <a href="..." itemprop="author">Чак Норрис</a>   <!-- автор -->
  ...
  <meta itemprop="datePublished" content="2015-04-10T12:06:17">   <!-- время публикации отзыва -->
  ...
</li>
...

PS: Значения даны для примера.

2. Сбор отзывов с Яндекс.Маркета

Отзывы – проверенное и недорогое решение для увеличения конверсии сайта. Склонить пользователя написать отзыв трудно, поэтому лучше взять готовые, например с Яндекс.Маркета. Выгоды для вас:

  • Ценный и проверенный контент, дающий дополнительный трафик на сайт;
  • Достоверные отзывы с отметкой источника (отзыв с Яндекс.Маркета) помогают потенциальному покупателю быстрее определиться с покупкой и повышают доверие к вашему Интернет-магазину.

Отзывы с Яндекс.Маркета

Сбор отзывов с Яндекс.Маркета в Cackle Reviews

Сначала надо получить ключ Яндекс.Маркета [5] для доступа к API загрузки отзывов, указав его в форме Cackle Reviews и IP-адрес нашего сервера (cackle.me). Сохранить ключ в панели администрирования Cackle (вкладка «Отзывы», меню «Настройка»).

Для сбора отзывов загрузите товары из вашего интернет-магазина в Cackle, используя API:

HTTP-метод Endpoint Ограничение
POST cackle.me/api/3.0/review/productym.json 2 раза в минуту
Параметр Описание
id Идентификатор вашего виджета
siteApiKey Секретный ключ виджета.
accountApiKey Секретный ключ аккаунта
products Список товаров в формате JSON

У каждого товара должен быть проставлен специальный параметр ymId, принимающий значение modelId из Яндекс.Маркета.

Система отзывов для интернет-магазинов — Cackle Reviews - 5

Пример товара (параметр products):

[{
  "prodId": "12345",
  "ymId": "11031822",
  "chan": "/product/12345/",
  "url": "http://myexamplestore.ru/product/12345/",
  "name": "Смартфон Apple iPhone 6 Plus 128Gb",
  "photo": "http://mdata.yandex.net/i?path=b0912201833_img_id3857037135783998090.jpeg",
  "price": "65500"
}]

prodId – id товара из вашей БД
chan – канал для связки отзывов со страницей сайта (подробнее [6])
url – страницы, где будут отзывы

Демонстрация на сайтах клиентов: delonghi.club [7], shveiburg.ru [8], mrklimat.ru [9].

Разработчикам: детали реализации

Функционал написан на Java, Spring и Hibernate. Оперирует с 4 основными таблицами БД, более подробно – в спойлере.

О технической реализации сбора отзывов с Яндекс.Маркета в Cackle Reviews

review_ym_cursor – информация о модели (modelId), количество загруженных и всех отзывов с Маркета ("курсор")
review_ym – отзывы в формате Яндекс.Маркета
review_product – загруженные товары + информация о количестве конвертированных отзывов из review_ym в review
review – отзывы в формате Cackle

Работает последовательно:

1. Добавляем товар

Клиент вызывает API добавления товара с заполненным ymId. Товар добавляется в таблицу review_product, в review_ym_cursor создается новая запись с идентификатором данного сайта, товара и модели в Яндекс.Маркете.

2. Загрузчик отзывов в формате Яндекс.Маркета

Запускается функция, которая вызывает API Маркета [10] и получает первые 10 отзывов, сохраняя их в промежуточную таблицу review_ym в формате Яндекс.Маркета. В таблицу review_ym_cursor сохраняется общее количество скачанных отзывов (поле recd) по данной модели и сайту + сколько отзывов всего (поле total).

Система отзывов для интернет-магазинов — Cackle Reviews - 6

3. Конвертация отзывов в формат Cackle

Запускается функция, которая берёт Маркет-отзывы из таблицы review_ym и сохраняет их в отзывы в формате Cackle Reviews в таблицу review. В таблицу review_product записывается общее количество конвертированных отзывов (поле conv), чтобы в следующий раз начать с нужного места.

4. Следующие отзывы

В ночное время происходит автоматический вызов двух процессов:

Первая выполняет пункт 2 для всех записей из review_ym_cursor, у которых recd < total.
Вторая выполняет пункт 3 для всех записей из review_product, у которых conv < review_ym_cursor.recd.

В итоге скачиваются новые 10 Маркет-отзывов, а потом конвертируются в Cackle-формат. Это выполняется до тех пор, пока review_ym_cursor.recd < review_ym_cursor.total и review_product.conv < review_ym_cursor.recd соответственно.

Есть и третий процесс. Он проверяет для моделей, у которых review_ym_cursor.recd == review_ym_cursor.total (всё скачано), не появилось ли новых Яндекс.Маркет-отзывов и если появились, то обновляет total.

Основная идея данной реализации – это независимое выполнение двух функций: загрузка Маркет-отзывов (пункт 2) и конвертация в Cackle-отзывы (пункт 3). Меньше каплинга – меньше проблем.

3. Follow-up письма после покупки с приглашением оставить отзыв

Собирать отзывы нужно не только с Яндекс.Маркета, но и от реальных покупателей. Допустим, пользователь приобрёл какой-то товар в интернет-магазине. Через несколько дней на свой email он получает письмо с просьбой оставить отзыв о ранее купленном товаре. Такие письма называются follow-up и Cackle Reviews умеет отправлять их автоматически.

Уникальность Cackle Reviews в том, что ссылка «Оставить отзыв» в follow-up письме ведёт именно на страницу купленного товара интернет-магазина (а не на сайт системы сбора отзывов, как во всех других подобных системах) и при переходе форма написания отзыва открывается автоматически с уже авторизованным пользователем.

Интеграция follow-up рассылки с интернет-магазином

Загрузка заказов

Для рассылки follow-up писем по покупателям необходимо загрузить заказы из вашего интернет-магазина в Cackle. Это делается с помощью API:

HTTP метод Endpoint Ограничение
POST cackle.me/api/3.0/review/order.json 1 раз в 5 секунд

Параметры аналогичные API загрузки товаров, за исключением параметра products, вместо него orders.

Пример заказа (параметр orders):

[{
"orderId": "123",
"created": 1426330626814,
"modified": null,
"notify": 1426330626814,
"paid": true,
"deliver": true,
"notified": false,
"user": {
  "id": "775",
  "name": "Дмитрий Иванов",
  "email": "dmivanov@mailforspam.com"
},
"products": [{
  "prodId": "12345",
  "ymId": "11031822",
  "chan": "/product/12345/",
  "url": "http://myexamplestore.ru/product/12345/",
  "name": "Смартфон Apple iPhone 6 Plus 128Gb",
  "photo": "http://mdata.yandex.net/i?path=b0912201833_img_id3857037135783998090.jpeg",
  "price": "65500"
}]}]

//notify – параметр для безусловной отправки follow-up письма в указанную дату (миллисекунды);
//notified – если true, то по данному заказу уже было отправлено follow-up письмо, если false – нет;
//user – зарегистрированный на вашем сайте пользователь (единая авторизация, SSO [11]), или вместо него может быть два параметра (email и name) для анонимного юзера.

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

Когда заказы загружены, необходимо создать рассылку с условиями отправки и шаблоном письма. Это можно сделать в панели администрирования Cackle (вкладка «Отзывы», меню «Рассылка»).

Система отзывов для интернет-магазинов — Cackle Reviews - 7
Система отзывов для интернет-магазинов — Cackle Reviews - 8

Follow-up письмо

Письмо состоит из нескольких частей. Редактируемые – отправитель, тема, логотип, тело письма (body), подпись (footer). Нередактируемые – товар или список товаров с названием, фото и ссылкой «Оставить отзыв».

Ссылка «Оставить отзыв» ведёт на страницу купленного товара интернет-магазина. Все служебные параметры, для открытия формы написания отзыва и автоматической авторизации пользователя, передаются в ссылке после хеша (#) в закодированном формате (MD5).

follow-up письмо с приглашением оставить отзыв


Если пользователь перешёл по ссылке «Оставить отзыв» и опубликовал его, то он будет помечен значком «Проверенный покупатель», который сигнализирует о том, что данный клиент действительно купил товар.

Система отзывов Cackle Reviews проверенный покупатель

Тестирование, отладка

У созданных рассылок есть кнопка «Тест», по клику на которую происходит мгновенная обработка найденных заказов и отправка follow-up писем. Например, можно загрузить несколько тестовых заказов с email-ми @mailforspam.com или @mailinator.com, а дальше тестировать отправку писем.

Автоматическое исполнение активированных рассылок происходит в ночное время с 01 до 06 часов по Москве.

Плагины для CMS

Рассылка follow-up писем работает автоматически в плагинах 1С-Битрикс [12] и OpenCart [13]. В ближайшее время планируем подключить данный функционал для Joomla (VirtueMart, K2, Zoo) [14], PrestaShop [15] и InSales.

4. Трансляция отзывов в социальные сети

Cackle Reviews поддерживает три типа авторизации: анонимная, социальная и единая с сайтом. Если пользователь выбирает социальную авторизацию и входит через ВКонтакте/Мой Мир/Facebook/Twitter, то его отзыв автоматически попадает на стену социальной сети со ссылкой на сайт. Выгоды для интернет-магазина:

  • Привлечение дополнительного трафика из социальных сетей;
  • Повышение доверия сайта среди друзей пользователя.

Функционал доступен для тестирования на странице демонстрации решения [16].

Реализация

У каждой соц.сети свой API кросспостинга сообщения на стену. Это API мы включаем в реализацию библиотек OAuth-авторизаций. В Cackle для таких библиотек используется Spring Social [17], только со своей имплементацией для каждой социальной сети. Это очень удобно, так как многое Spring Social делает за вас, например, поддержка стандартов OAuth 1.0 и 2.0, сохранение и обновление access, refresh-токенов и expired.

5. СПАМ-тест

Возможно, кто-то не знает, но есть такой сервис проверки писем на СПАМ, как mail-tester.com [18]. Результат его проверки – это количество балов от 1 до 10. Для системы сбора отзывов с follow-up рассылкой низкий бал означает, что покупатели просто не будут получать письма с приглашением оставить отзыв.

В следующем топике расскажем, про наш опыт настройки SMTP-сервера и как мы добились вот такого результата для Cackle Reviews:

Автор: javist

Источник [19]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/89328

Ссылки в тексте:

[1] Cackle Reviews: http://cackle.ru/reviews

[2] mail-tester.com: https://mail-tester.com

[3] микроразметкой: https://developers.google.com/structured-data/rich-snippets/reviews

[4] Google Testing Tool: https://developers.google.com/structured-data/testing-tool

[5] ключ Яндекс.Маркета: http://feedback2.yandex.ru/api-market-content/key/?from=marketcontentapi

[6] подробнее: http://cackle.ru/help/widget-api#channel

[7] delonghi.club: http://delonghi.club/products/avtomaticheskaya-kofemashina-de-longhi-magnifica-s-ecam-22-110-b-black#tabid=tab-2

[8] shveiburg.ru: http://shveiburg.ru/catalog/shveynye_mashiny/juki/juki_hzl_27z/

[9] mrklimat.ru: http://www.mrklimat.ru/vozduchoochistiteli/ochistiteli-vozducha/vozduchoochistitel-sharp-kc-850e.html

[10] API Маркета: https://tech.yandex.ru/market/content/doc/dg/reference/model-id-opinion-docpage/

[11] единая авторизация, SSO: http://cackle.ru/help/integrating-sso

[12] 1С-Битрикс: http://marketplace.1c-bitrix.ru/solutions/cackle.reviews/

[13] OpenCart: https://bitbucket.org/cackle-plugin/review-opencart/get/tip.zip

[14] Joomla (VirtueMart, K2, Zoo): http://extensions.joomla.org/extensions/extension/clients-a-communities/ratings-a-reviews/cackle-reviews

[15] PrestaShop: https://bitbucket.org/cackle-plugin/review-prestashop/get/tip.zip

[16] странице демонстрации решения: http://cackle.ru/demo/review

[17] Spring Social: http://projects.spring.io/spring-social/

[18] mail-tester.com: http://www.mail-tester.com

[19] Источник: http://habrahabr.ru/post/255477/