Ошибки при оформлении заказа онлайн и как с ними бороться — кейс «М.Видео» и OWOX BI

14
986

О компании

«М.Видео» — крупнейшая в России сеть электроники и бытовой техники. Компания использует в продажах омниканальный подход: клиенты могут совершать покупки в магазинах, заказывать товары на сайте и по телефону, выбирая доставку на дом или самовывоз из розницы. Благодаря этому в 2017 году компания увеличила свои интернет-продажи на 41,3%.

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

Проблема

Сайт www.mvideo.ru ежедневно посещает около 700 тыс. человек, которые читают обзоры и выбирают товары. Иногда, к сожалению, усилия маркетологов по привлечению релевантных пользователей пропадают даром из-за технических ошибок на сайте. Человек не может оформить заказ, потому что, например, неактивна кнопка, товары пропадают из корзины или указана скидка, которая уже не действует.

В колл-центр «М.Видео» начали звонить пользователи, которые не могли оформить заказ в интернет-магазине.

Цель

Аналитики и тестировщики компании рассмотрели все обращения в колл-центр и определили типичные сценарии сбоев. Ошибки, которые удалось воспроизвести, исправили — на остальные критические ошибки нужно было настроить мониторинг. Раньше команда «М.Видео» не собирала информацию о таких сбоях и, соответственно, не могла оценить, сколько их, как они влияют на конверсию, как связать ошибку с конкретным пользователем, чтобы помочь ему оформить заказ.

Аналитики «М.Видео» решили настроить отслеживание таких ошибок на сайте и приложить дополнительные усилия, чтобы люди могли закончить процесс оформления заказа. Благодаря этому количество покупок увеличится, а пользователи не будут покидать сайт разочарованными.

При этом мониторить ошибки требовалось в реальном времени, чтобы успеть отреагировать и не потерять клиента.

Решение

Для решения проблемы с ошибками на сайте аналитики «М.Видео» и OWOX BI сделали следующее:

  1. Разместили на сайте дополнительный код, чтобы собирать данные об ошибках и отправлять их в Google BigQuery.
  2. Обработали полученные данные и вывели их в таблицу в необходимой для компании структуре.
  3. Организовали отправку данных о пользователях и ошибках в колл-центр, сотрудники которого перезванивают клиентам и помогают оформить заказ.

Схематично все действия выглядят так:

схема сбора данных об ошибках и их последующей обработки

А теперь рассмотрим подробнее каждый шаг.

Шаг 1. Сбор информации об ошибках

Компания использует для отслеживания действий на сайте Google Tag Manager. Однако логические ошибки, возникающие на страницах, не всегда можно зафиксировать с помощью стандартных методов GTM. Поэтому разработчики «М.Видео» написали несколько специальных скриптов и внедрили их через GTM на нужные страницы. Эти скрипты добавляют в dataLayer информацию о том, что произошла ошибка, и какой именно она была.

Далее с помощью тегов GTM информация об ошибках отправляется в Google BigQuery через OWOX BI Pipeline. Благодаря этому сырые несемплированные данные с сайта появляются в Google BigQuery уже через 2-5 минут.

С помощью API аналитики компании передают из CRM в GBQ данные о пользователях и в результате собирают в хранилище всю необходимую информацию:

  • Время ошибки.
  • Тип ошибки.
  • Идентификатор пользователя.
  • Email пользователя.
  • Город пользователя.
  • Актуальное состояние товаров в корзине.

Шаг 2. Обработка данных

Данные, собранные в Google BigQuery с помощью OWOX BI Pipeline, содержат намного больше параметров, чем нужно «М.Видео» в этом кейсе. Поэтому аналитик OWOX BI написал для компании SQL-запрос, который собирал данные из таблицы со вложенной структурой и представлял их в линейном виде, где одна строка равна одной ошибке.

Пример такого запроса:

                        
Select
date, hour,minute, email, description, City, productIds, productnames, productprice, cartquantity, cartamount,
From
(
SELECT usererrors.date as date, usererrors.hour as hour, usererrors.minute as minute, usererrors.userEmail as email, usererrors.action as action,  usererrors.error as error,
case when action = 'disabled' and error = 'buttonCreateOrder' then 'Недоступно оформление заказа из Корзины'
when action = 'notAdded' and error = 'productToCart' then 'Не добавляется товар в корзину'
when action = 'open' and error = 'emptyCart' then 'Не отображается товар в корзине'

when action = 'open' and error = 'HoldingPageCheckout' then 'Ведутся технические работы (после чекаута)'
when action = 'absent' and error = '5discountCart' then 'Недоступна скидка 5% онлайн (в корзине)'
when action = 'absent' and error = '5discountCheckout' then 'Недоступна скидка 5% онлайн (на чекауте)'
when action = 'disabled' and error = 'buttonSubmit' then 'Не работает кнопка "Оформить заказ" на странице оформления заказа'
else 'Другое' end as description,
Dimensions.city as City, Dimensions.productids as productIds, Dimensions.productnames as productnames, customMetrics.productprice as productprice, customMetrics.cartquantity as cartquantity, customMetrics.cartamount as cartamount,

  FROM
        (SELECT date, hour,minute, hitId, userEmail, eventInfo.eventAction as action, eventInfo.eventLabel as error, hour(CURRENT_TIMESTAMP())+2-hour as currenthour
from TABLE_DATE_RANGE([mvideo-ru:Streaming.streaming_],
DATE_ADD(CURRENT_TIMESTAMP(), 0 ,'DAY'),
DATE_ADD(CURRENT_TIMESTAMP(), 0 , 'DAY') )

where eventInfo.eventCategory = 'Errors' and userEmail is not null

group by 1,2,3,4,5,6,7,8) as usererrors
 left join
   (SELECT hitId, MAX(IF(customDimensions.index=4, customDimensions.value, NULL)) WITHIN hitId  AS city, MAX(IF(customDimensions.index=21, customDimensions.value, NULL)) WITHIN hitId AS productids,
   Max(IF(customDimensions.index=22, customDimensions.value, NULL)) WITHIN hitId AS productnames
from TABLE_DATE_RANGE([mvideo-ru:Streaming.streaming_],
DATE_ADD(CURRENT_TIMESTAMP(), 0 ,'DAY'),
DATE_ADD(CURRENT_TIMESTAMP(), 0 , 'DAY') )) as Dimensions
 ON Dimensions.hitId=usererrors.hitId
 left join
 (SELECT hitId, MAX(IF(customMetrics.index=1, customMetrics.value, NULL)) WITHIN  hitId AS productprice, MAX(IF(customMetrics.index=4, customMetrics.value, NULL)) WITHIN hitId AS cartamount, Max(IF(customMetrics.index=5, customMetrics.value, NULL)) WITHIN hitId AS cartquantity

 FROM TABLE_DATE_RANGE([mvideo-ru:Streaming.streaming_],
DATE_ADD(CURRENT_TIMESTAMP(), 0 ,'DAY'),
DATE_ADD(CURRENT_TIMESTAMP(), 0 , 'DAY') )) as customMetrics
ON customMetrics.hitId=usererrors.hitId
where usererrors.currenthour=0
)
  ORDER BY date asc, hour asc, minute asc, email asc


                        
                    

В результате получилась таблица, которая содержит такие данные:

  • Дата
  • Час
  • Минута
  • Email пользователя
  • Описание ошибки
  • Город пользователя
  • ID товаров в корзине
  • Названия товаров в корзине
  • Цена товаров в корзине
  • Общее количество товаров в корзине
  • Общая сумма товаров в корзине

Затем аналитики настроили импорт данных в Google Sheets с помощью аддона OWOX BI BigQuery Reports, благодаря которому информация в таблицах обновляется автоматически и ежечасно. То есть в отчете всегда есть актуальная информация об ошибках за прошлый час.

Пример такого отчета:

схема сбора данных об ошибках и их последующей обработки

Шаг 3. Применение данных

Полученный в Google Sheets отчет об ошибках каждый час автоматически отправляется на электронную почту ответственным сотрудникам (в рабочие дни с 9.00 до 18.00). Далее они передают эту информацию в колл-центр и разработчикам, если нужно что-то поправить на сайте. Операторы колл-центра звонят пользователю и помогают оформить заказ по телефону.

Результаты

  • Компания «М.Видео» получила удобный отчет об ошибках, которые возникают на сайте и мешают оформить покупку.
  • Разработчики внедрили на сайт дополнительную форму обратной связи. Ее показывают неавторизованному пользователю при возникновении ошибки — предлагают оставить контакты и кратко описать суть проблемы. Это помогает быстрее реагировать на сбои, расширить базу контактов, а также получать контактные данные неавторизованных пользователей.
  • Колл-центр компании оперативно получает информацию о пользователях, которые столкнулись с ошибкой, и составе их корзины. Операторы общаются с покупателями и помогают им закончить покупку.
  • Около 3% пользователей, которым перезванивали сотрудники «М.Видео» после ошибки на сайте, в итоге оформляют заказ по телефону. Это приносит дополнительный доход от 100 тыс. рублей в день, который компания могла бы потерять, если бы игнорировала ошибки.

Использованные инструменты

Вас также могут заинтересовать