Как отследить клиентов, которые пришли в офлайн-магазин с интернет-рекламы? Кейс магазина бытовой техники

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

Но есть категория покупателей, которая перед походом в магазин ищет информацию о товаре в интернете. Она посещает сайт бренда, часто видит тематическую рекламу, читает отзывы, смотрит обзоры — все это формирует первое впечатления о продукте. Уже позже аудитория идет в офлайн-магазин, чтобы увидеть товар вживую и купить или не купить.

Возникает логичный вопрос — как понять, что именно интернет-реклама привела человека в офлайн-магазин? Самый простой способ — спрашивать покупателей на кассе «Откуда вы о нас узнали?». Но информация вряд ли окажется полезной. Наверняка, вы получите ответ «из интернета», а это не очень информативно для проведение серьезного анализа.

Схема отслеживания пользователей онлайн-офлайн

Есть возможность грамотно отслеживать путь покупателя из онлайна в офлайн-магазин и автоматизировать этот процесс. Ниже одна из возможных схем. Она не претендует на истину, но в ней отражены ключевые моменты. 

Принципиальная схема отслеживания онлайн-офлайн

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

Сбор clientID

Обязательным условием для настройки системы отслеживания покупателей онлайн-офлайн является сбор clientID пользователя во время каждого визита и при отправке формы с контактными данными (на схеме за это отвечает Метрика с ее Logs API, но может быть и другая система). Это нужно, чтобы соотнести clientID с пользователем. Главное, соблюдать законодательство в отношении хранения и сбора персональных данных.

Сбор контактов в офлайне

Второе условие — сбор контактов офлайн-покупателей. Прежде всего, это касается email-адресов и номеров телефонов, по которым можно определить клиентов при сопоставлении с clientID. Так мы легко проанализируем:

Обработка собранных данных

Наладили сбор clientID и контактов клиентов с офлайна и онлайна. Теперь нужно сопоставить данные. Удобнее сделать это при помощи запросов в базах данных, но и другие варианты имеют право на жизнь. Важен конечный результат.

Процесс сводится к тому, чтобы объединить контактные данные и clientID одного человека. Для удобства лучше назначить ему внешний идентификатор.

ClientID, присваиваемый системой аналитики — вещь ненадежная. Стоит пользователю сменить браузер, как для системы он уже является другим пользователем. Поэтому матчинг нужно проводить регулярно, собирая clientID и контакты в одну «кучку». Кроме email и номера телефона, который пользователь оставляет при отправке формы на сайте, можно использовать адреса проживания, IP-адреса, ФИО и пр.

Почти готовое решение

Когда мы предложили клиенту настроить сбор статистики по покупателям, которых в офлайн-магазин привела интернет-реклама, они достаточно быстро согласились. Начали обсуждать этапы работы и оказалось, что клиент использует сервис MindBox, который собирает большой объем информации по пользовательской активности.

Встретились с сотрудником MindBox. Он разъяснил, что у нашего клиента настроены интеграции по импорту данных из онлайн и офлайн-источников, и сервис на своей стороне идентифицирует пользователей. То есть у MindBox есть все необходимые данные для построения отчета online-to-offline. Нам оставалось только забрать нужные метрики и параметры, чтобы провести их обработку. Сам сервис берет на себя самую непростую функцию — сопоставление пользователей и данных по разным ключам.

MindBox подготовил 3 выгрузки:

Скачать данные можно через API в формате JSON.

Обработка данных

Получение и последующая обработка данных от MindBox производилась при помощи языка Python и IDE Spyder.

Сначала написали коннектор для MindBox, чтобы отправить на сервер запрос на подготовку данных и получить ссылки на скачивание файлов. Получили первую выгрузку и проверили, на месте ли все параметры и метрики, которые мы хотели получить:

Сперва потребовалось развернуть файл формата JSON в табличный вид. Это нужно, чтобы обернуть данные в DataFrame и экспортировать в CSV для удобства проверки и последующего использования, и чтобы отправить в облако для визуализации финальных данных.

Пример функции для разбора файла формата json

Аналогично были обработаны и другие сущности.

Построение цепочек для каждого пользователя

После создания датафреймов pandas отсортировали данные по clientID и timestamp для удобства последующей обработки. Нужно было построить цепочки для каждого пользователя. За цепочку принята последовательность визитов  пользователя на сайт: от первого посещения до совершения покупки и дальнейшие визиты до совершения следующей покупки. При этом везде указан источник трафика.

Полный путь для каждой покупки строить не пришлось, т.к. периодичность совершения одним пользователем транзакций имеет длительный интервал, а учитывать большой ретроспективный период нецелесообразно. 

Чтобы быстро определить, где заканчивается цепочка, применен метод shift. Он обеспечивает смещение по датафрейму. Предварительно из всех заказов были отобраны только офлайн. После добавлен столбец с отметкой «строка является визитом или заказом». 

Определение конца цепочки визитов для пользователя по атрибуции «последний переход»

Границы цепочки

Для определения границы цепочки контактинированы две строки, содержащие тег «визит» или «заказ», со смещением на один шаг вниз по таблице. Соответственно, ordervisit — эта строка последнего визита на сайт перед покупкой, и для атрибуции last-click достаточно взять ее.

Сопоставление пользователя и заказа

Чтобы понять, относится ли заказ к тому же пользователю, аналогичным методом вычитался clientID следующей строки из предыдущей. Если значение равно 0, то пользователь тот же.

Last-non-direct-click

Для атрибуции last-non-direct-click при фильтрации нужно брать ближайшую строку с источником, отличным от direct, если он есть. Если нет — возвращать direct.

Определение времени с момента визита на сайт до покупки

Добавлено окно атрибуции времени с визита пользователя на сайт до покупки в офлайне путем определения разности между меткой заказа и визита.

Таким не очень хитрым образом были обработаны все данные. На выходе получились готовые таблицы с соответствующей атрибуцией.

Загрузка и визуализация

В качестве конечного пункта выбран дашборд в Google Data Studio (Студия данных). Данные загрузили в Big Query, чтобы было удобнее работать. Для этого использовался написанный ранее коннектор-обертка из официальной библиотеки Google для Python.

Функция загрузки таблиц в Big Query

Данные по офлайн-продажам по атрибуции last-click с окном 30 дней с момента визита на сайт до покупки:

Распределение количества заказов и дохода по источникам трафика (данные сгенерированы)

Динамика количества заказов и дохода (данные сгенерированы)

Заключение

При наличии подключенного сервиса MindBox, его корректной интеграции и при доле желания можно без проблем отследить поведение пользователей и в онлайне, и офлайне.

Но есть нюансы и не упомянуть о них нельзя.

  1. Статистика постоянно пополняется. Необходимо по максимуму использовать все средства (конечно, легальные), чтобы получить контактные данные от пользователя и постоянно обогащать базу.
  2. Стоит понимать, что по тем данным, которые у нас есть, охват не 100%. В лучшем случае цифра едва перевалит за 30%, однако для больших объемов данных и это немало.
  3. К интерпретации данных нужно подходить аккуратно. Статистика показывает лишь то, что пользователь заходил на сайт перед покупкой в выбранный интервал времени. Это не означает, что конкретный источник трафика подтолкнул его совершить покупку. Что именно сподвигло пользователя на целевое действие, можно узнать только забравшись в его голову.

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