Свое исследование: влияют ли кросс-девайсные пользователи на метрики магазина

Как-то в фейсбуке обсуждали, нужно ли учитывать кросс-девайсных пользователей в стратегии магазина или их доля и влияние настолько несущественные, что не нужно. Мы провели свое исследование на данных реального ритейлера и вот что получили.

Откуда данные: ритейл-сеть, розница, продажи происходят в офлайне, в том числе через инфокиоски в точках продаж, а также через сайт и мобильные приложения. Сеть — один из наших клиентов, у нас есть доступ к их данным.

Изучаем только данные онлайна, учитываем пользователей, которые используют одно или более устройств. Такое возможно, потому что REES46 создает цифровые профили для каждого пользователя — в них хранятся данные об устройствах и истории действий. Метрики, которые есть в статье (RFM, LTV, AOV), рассчитываются автоматически.

На первый взгляд

Наша первая задача — выяснить, есть ли у магазина достаточно кросс-девайсных клиентов. Если нет, то и наше исследование будет несостоятельным.

Возьмем поведенческую историю за последние 7 дней — доля пользователей, посещавших ритейлера с более, чем одного устройства.

Здесь и далее вы можете пропускать куски кода, если они вам неинтересны.

data = EventCl.where(shop_id: shop.id).where('date >= ?', date).pluck(:client_id, :stream).uniq; nil users = {} data.each do |row| users[row[0]] = [] unless users.key?(row[0]) users[row[0]] << row[1] end; nil total = users.keys.count more_than_1_devices = users.select { |k, v| v.count > 1 }.count share = more_than_1_devices.to_f / total.to_f * 100 puts "Visitors: #{ helper.number_with_delimiter total }" puts "More than 1 devices: #{ helper.number_with_delimiter more_than_1_devices }" puts "Share: #{ helper.number_to_percentage share, precision: 2 }"

Результат: 619 131 посетителей, среди них 8 813 с более, чем одним устройством. Доля таких пользователей: 1,42%.

Свое исследование: влияют ли кросс-девайсные пользователи на метрики магазина

Вроде бы ответ очевиден: слишком малая доля кросс-девайсных пользователей, чтобы обращать на них внимание. Но что будет, если мы посмотрим только покупателей?

data = EventCl.where(shop_id: shop.id).where('date >= ?', date).where(client_id: EventCl.select(:client_id).where(shop_id: shop.id).where('date >= ?', date).where(event: 'purchase')).pluck(:client_id, :stream).uniq; nil users = {} data.each do |row| users[row[0]] = [] unless users.key?(row[0]) users[row[0]] << row[1] end; nil total = users.keys.count more_than_1_devices = users.select { |k, v| v.count > 1 }.count share = more_than_1_devices.to_f / total.to_f * 100 puts "Purchasers: #{ helper.number_with_delimiter total }" puts "More than 1 devices: #{ helper.number_with_delimiter more_than_1_devices }" puts "Share: #{ helper.number_to_percentage share, precision: 2 }"

Результат: 19 262 (88,46%) покупателей, среди них 2 223 (11,54%) — кросс-девайсных.

Свое исследование: влияют ли кросс-девайсные пользователи на метрики магазина

Как видим, кросс-девайс среди покупателей в 8 раз более востребован. Уже что-то интересное.

А если взять данные за год? Неделя — слишком маленький интервал, возможны статистические отклонения.

date = 1.year.go.to_date data = EventCl.where(shop_id: shop.id).where('date >= ?', date).where(client_id: EventCl.select(:client_id).where(shop_id: shop.id).where('date >= ?', date).where(event: 'purchase')).pluck(:client_id, :stream).uniq; nil users = {} data.each do |row| users[row[0]] = [] unless users.key?(row[0]) users[row[0]] << row[1] end; nil total = users.keys.count more_than_1_devices = users.select { |k, v| v.count > 1 }.count share = more_than_1_devices.to_f / total.to_f * 100 puts "Purchasers: #{ helper.number_with_delimiter total }" puts "More than 1 devices: #{ helper.number_with_delimiter more_than_1_devices }" puts "Share: #{ helper.number_to_percentage share, precision: 2 }"

Получаем еще более значимые результаты: среди 289 401 покупателей более одного устройства использовали 55 672 или 19,24% людей.

Свое исследование: влияют ли кросс-девайсные пользователи на метрики магазина

Любопытства ради посмотрим, сколько покупателей пользуется тремя и более устройствами:

more_than_2_devices = users.select { |k, v| v.count > 2 }.count share = more_than_2_devices.to_f / total.to_f * 100 puts "Purchasers: #{ helper.number_with_delimiter total }" puts "More than 2 devices: #{ helper.number_with_delimiter more_than_2_devices }" puts "Share: #{ helper.number_to_percentage share, precision: 2 }"

Результат: 431 профиль из 289 401, меньше одного процента.

Свое исследование: влияют ли кросс-девайсные пользователи на метрики магазина

Этим кейсом можно пренебречь.

RFM

Теперь посмотрим, какую роль играют кросс-девайсные покупатели в RFM-сегментах:

cross_devicers = users.select { |k, v| v.count > 1 }.keys; nil rfm_segments = shop.segments.where(segment_type: Segment::TYPE_RFM); nil by_segments = Hash[rfm_segments.pluck(:id).map { |s| [s, []] }]; nil cross_devicers.each do |client_id| segment_ids = SegmentJoin.where(join_id: client_id, segment_id: by_segments.keys).pluck(:segment_id) segment_ids.each do |id| by_segments[id] << client_id end end; nil by_segments.sort_by { |k, v| v.count }.reverse.each do |row| count_in_segment = row[1].count share = count_in_segment.to_f / more_than_1_devices.to_f * 100 puts "Segment '#{Segment.find(row[0]).name}': #{helper.number_to_percentage share, precision: 2}%" end; nil

Результат: видно, что довольно много кросс-девайсных юзеров присутствуют в самых ценных сегментах RFM — в том числе среди лояльных и потенциально лояльных клиентов.

::: Чемпионы – 8,14%

::: Лояльные – 12,10%

::: Потенциально лояльные – 27,20%

::: Перспективные – 9,77%

::: Почти в спячке – 9,58%

::: Недавние покупатели – 9,34%

::: Требуют внимания – 1,00%

::: В зоне риска – 0,21%

::: Нельзя потерять – 0,06%

::: В спячке – 0,31%

::: Потерянные – 1,73%

Средний чек

Зависит ли средний чек от количества устройств, с которых лояльный клиент делает покупки? Из расчета исключаем отмененные и возвращенные заказы. Берем заказы за последние 6 месяцев.

single_devicers = users.select { |k, v| v.count == 1 }.keys; nil cross_devicers = users.select { |k, v| v.count > 1 }.keys; nil single_devicers_orders = [] cross_devicers_orders = [] single_devicers.each_slice(500) do |ids| single_devicers_orders += Order.where(shop_id: shop.id).where('date >= ?', date).where(client_id: ids).where('status != 2').pluck(:value) end; nil cross_devicers.each_slice(500) do |ids| cross_devicers_orders += Order.where(shop_id: shop.id).where('date >= ?', date).where(client_id: ids).where('status != 2').pluck(:value) end; nil puts "Single device AOV: #{single_devicers_orders.sum.to_i / single_devicers_orders.count}" puts "Cross device AOV: #{cross_devicers_orders.sum.to_i / cross_devicers_orders.count}"

Результат: 1612 рублей для покупателей с одним девайсом, 1603 рубля для кросс-девайсных покупателей.

Свое исследование: влияют ли кросс-девайсные пользователи на метрики магазина

Конкретно в этом магазине средний чек никак не зависит от количества устройств, которые использует покупатель.

LTV

Сейчас принято много говорить об LTV. Оценим эту метрику для пользователей с одним и несколькими устройствами. Берем заказы за последние 6 месяцев:

ltv_single = [] ltv_cross = [] single_devicers.each do |id| ltv_single << Order.where(shop_id: shop.id).where('only_date >= ?', 6.month.ago.to_date).where(client_id: id).where('status != 2').pluck(:value).sum.to_i end; nil cross_devicers.each do |id| ltv_cross << Order.where(shop_id: shop.id).where('only_date >= ?', 6.month.ago.to_date).where(client_id: id).where('status != 2').pluck(:value).sum.to_i end; nil puts "LTV one device: #{ltv_single.sum / ltv_single.count}" puts "LTV cross device: #{ltv_cross.sum / ltv_cross.count}"

Результаты: LTV (прогнозируемый чистый доход с одного клиента) у покупателей с кросс-девайсом выше (9455 рублей), чем у покупателей с одним устройством (6023 рубля).

Свое исследование: влияют ли кросс-девайсные пользователи на метрики магазина

Ожидаемо. Но попробуем взять заказы за 12 месяцев: получим значения LTV 7461 рубль и 11 799 рублей для покупателей, использующих одно и более одного устройства, соответственно.

Свое исследование: влияют ли кросс-девайсные пользователи на метрики магазина

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

Выводы

Используя живые данные, полученные с помощью алгоритма R46 Identifier, мы подтвердили, что кросс-девайсные пользователи действительно важны для бизнеса. При этом числа показывают, что кросс-девайсные покупатели являются наиболее активной частью аудитории и их LTV почти в два раза выше клиентов с одним устройством.

Конечно, не стоит путать причину и следствие. Лояльные клиенты, будучи лояльными, начинают делать покупки с нескольких устройств. А не наоборот, наличие нескольких каналов продаж делает из них лояльных клиентов.

(Хотя это тоже влияет, но уже в области user experience).

Если интересны подобные исследования — присылайте свои гипотезы, проверим на реальных данных магазинов.

33
1 комментарий

Интересное исследование. По логике все верно, ведь часто магазины настраивают ретаргетинг (особенно с понравившимся товарами) на разные виды устройств и на разных площадках, и то, что человек искал в телефоне, уже завтра преследует его и на компьютере, поэтому выводы вполне объяснимы.