Кейсы
Hoff и OWOX BI: Как увеличить ROI контекстной рекламы на 17%, а количество фраз с ненулевой ценностью — в 2,4 раза
Hoff
Hoff — единственная в России сеть мебели и аксессуаров для дома, работающая в формате гипермаркета. Компания предлагает комплексные решения по оформлению интерьера и использует омниканальные продажи. Это значит, что можно заказать доставку мебели на дом в гипермаркетах, онлайн-магазине или через колл-центр.
Как самостоятельный бренд Hoff появился на рынке в сентябре 2011 года. К 2017 году сеть Hoff разрослась до 25 магазинов в 11 городах России. Ежегодно гипермаркеты компании посещают 5 млн человек, а сайт Hoff.ru — 12,5 млн уникальных посетителей.
OWOX
OWOX внедряет Google Analytics 360 Suite в Есommerce-проекты и разрабатывает онлайн-сервисы на основе Google BigQuery:
- OWOX BI Smart Data помогает получать быстрые ответы на вопросы к данным, заданные человеческим языком.
- OWOX BI Attribution помогает узнать реальную ценность рекламных кампаний с учетом офлайн продаж и действий пользователя во время сессии.
- OWOX BI Pipeline помогает быстро и без программистов объединять данные из Google Analytics, Competera и других сервисов в Google BigQuery.
OWOX — сертифицированный партнер Google Analytics и Google Cloud Platform. Продуктами компании пользуются 9000+ проектов в 90+ странах.
Цели
Цель Hoff — увеличить ROI онлайн-рекламы. Для этого необходимо:
- Собрать данные о всех сессиях пользователя онлайн (с разных устройств) и офлайн.
- Оценить прибыль от каждой поисковой фразы, а не назначать 100% ценности последним фразам перед конверсией.
- Автоматизировать управление контекстной рекламой и расчет ставок. Сумма, которую платит рекламодатель за клики или показы
Чтобы достичь цели, Hoff использует полные данные (действия пользователей; заказы по телефону, офлайн и онлайн; рекламные расходы), собственную модель атрибуции и Alytics.
Проблема
Чтобы автоматизировать ставки, необходимо знать эффективность каждой поисковой фразы. Определить ценность фраз можно только, связав все сессии пользователя: онлайн — с разных устройств, по телефону и в физических магазинах. В Google Analytics такой возможности нет.
Google Analytics и Яндекс.Метрика неточно определяют ценность рекламных каналов, потому что их модели атрибуции:
- Не учитывают отмененные заказы.
- Не учитывают офлайн-заказы.
- Не учитывают маржу заказа.
- Не учитывают заказы по телефону.
- Воспринимают пользователя, который заходит на сайт с разных устройств, как нескольких пользователей.
- Семплируют В отчетах отражается лишь часть данных, что уменьшает точность решений данные при построении отчетов.
Неправильная оценка поисковых фраз мешает корректно рассчитывать ставки. В результате высокая ставка расходует бюджет впустую, а низкая — привлекает меньше клиентов.
Решение
Заказы по телефону и в офлайн, а также расходы на рекламу (кроме AdWords) недоступны в Google Analytics, поэтому Hoff собирает данные и атрибутирует ценность от заказов в Google BigQuery.
Причины, по которым компания выбрала этот сервис:
- Высокая скорость выполнения запросов на любом объеме данных — до 20 секунд.
- Наличие API для интеграции с другими системами.
- Возможность легко загрузить данные из файлов и Google Sheets.
- Плата только за использование.
- Нет необходимости поддерживать базу данных.
Hoff импортирует рассчитанную в Google BigQuery ценность каналов и фраз из Google Cloud Storage в Alytics с помощью RESTful API Средства и правила, по которым веб-приложения обмениваются информацией , чтобы управлять ставками. Теперь распишем подробнее каждый шаг.
Шаг 1. Сбор данных в Google BigQuery
Данные о расходах на рекламу из AdWords передаются в Google Analytics автоматически благодаря интеграции сервисов.
С помощью сервиса OWOX BI Pipeline Hoff передает:
- Данные о расходах на рекламу из Яндекс.Директ в Google Analytics (GA объединяет их с расходами из AdWords).
- Объединенные данные по расходам из Google Analytics в Google BigQuery.
- Действия пользователей с сайта в Google BigQuery в режиме, близком к реальному времени.
С помощью API Средства и правила, по которым приложения обмениваются информацией Hoff передает в Google BigQuery:
- Маржу товаров и исполняемость заказов из CRM и ERP.
- ClientID пользователей, которые звонили, из системы отслеживания звонков CallTouch. Hoff покупает у CallTouch телефонные номера: чем выше посещаемость и дольше средняя сессия, тем больше номеров. Система показывает один из номеров в каждой сессии на сайте и связывает его с ClientID пользователя. Далее Hoff импортирует ClientID звонивших из CallTouch в Google BigQuery с помощью API.
Ниже представлена схема движения данных:

Шаг 2. Обработка собранных данных
Теперь действия пользователей в магазине, колл-центре и на сайте собраны в Google BigQuery. Компания передает сессионные данные (последовательность хитов, идентификаторы сессии и зашифрованные личные данные пользователей) в Google BigQuery с помощью OWOX BI Pipeline и объединяет сессии в пользователей по следующим параметрам:
- ClientID — уникальный идентификатор пары браузер-устройство.
- UserID — уникальный идентификатор пользователя, который привязан к email.
- Номер карты лояльности.
Hoff связывает сессии с помощью SQL-запросов.
Рассмотрим три примера, как объединяются данные.
Пример № 1
Алла через Google Chrome на смартфоне заходит на сайт Hoff.ru и смотрит диваны. Позже, определившись с выбором, она заходит на сайт из этого же браузера на смартфоне и авторизуется, указав свой email, чтобы добавить понравившийся диван в список избранных товаров. Устройство и браузер одни и те же, поэтому Hoff объединяет обе сессии по ClientID. Придя домой, Алла садится за компьютер, входит в личный кабинет и покупает диван. Теперь сессии на компьютере и телефоне можно объединить по UserID:

Пример № 2
Игорь ищет новый стол на рабочем компьютере и заходит на Hoff.ru. Во время обеда он создает аккаунт на Hoff.ru со смартфона и оформляет заказ.
Игорь пользовался 2 разными устройствами и авторизовался только на смартфоне, поэтому сессии не связать ни по ClientID, ни по UserID. В итоге Google Analytics считает, что два разных человека используют компьютер и смартфон.
Вернувшись на рабочее место, Игорь вспоминает, что жена хотела стол цвета венге, а не орех, и что у него есть карта лояльности. Он заходит на Hoff.ru с рабочего компьютера, авторизуется, меняет заказ и покупает стол, используя карту лояльности.
Теперь Hoff может объединить все сессии Игоря, связав покупку стола на компьютере:
- С поиском стола (сессия 1) — по ClientID, так как обе сессии созданы в одном браузере рабочего компьютера.
- С созданием аккаунта на смартфоне (сессия 2) — по UserID, так как в обеих сессиях Игорь зашел в аккаунт Hoff.

Готово — путь Игоря от первого посещения сайта до покупки стола находится в Google BigQuery.
Пример № 3
Уже знакомый нам Игорь из Примера № 2 на рабочем компьютере заходит на Hoff.ru, подбирает стулья к новому столу, звонит по номеру телефона, который видит на сайте и делает заказ. Потом он едет в магазин на машине и покупает стулья, используя карту лояльности.
Hoff объединяет прежние действия Игоря на сайте с действиями в магазине и по телефону:
- Заказ по телефону с действиями онлайн — по ClientID, так как Игорь ранее совершил покупку стола и CallTouch показал ему телефонный номер на одном компьютере в одном и том же браузере.
- Офлайн покупку стульев с онлайн действиями Игоря — по номеру карты лояльности.
Теперь у Hoff достаточно данных, чтобы связать воедино все взаимодействия Игоря с их компанией. Вот как они это делают:

Объединенные данные показывают, какие поисковые запросы приносят прибыль, а какие «съедают» ставку и не приводят к заказам.
Шаг 3. Расчет модели атрибуции
Логика расчета атрибуции у Hoff такая: суммарная ценность первой и последней сессии на пути к заказу равна ценности сессий между ними. В первой сессии пользователь знакомится с брендом, в последней — совершает покупку. Первая сессия — та, в которой пользователь впервые зашел на сайт. Объединение данных на разных устройствах помогает найти связь между сессиями и их хронологическую последовательность.
Ценность каналов определяют в 2 этапа:
- Определение рекламного канала, который инициировал первую сессию. Если пользователь уже был на сайте, то источник привлечения — рекламный канал предыдущей сессии. Если пользователя привела контекстная реклама в Google, но до этого он заходил через органический поиск в Яндексе, то модель считает, что с брендом его познакомил Яндекс, а не Google.
-
Назначение ценности сессиям. Прибыль от покупок распределяется между сессиями пользователя по следующим правилам:
- Первая сессия — 20% от суммы транзакций.
- Последняя сессия — 30%.
- Сессии между ними — 50%. Сессии оценивают по количеству просмотренных страниц, т.е. вовлеченности, и количеству часов до покупки. Чем больше страниц и меньше часов по сравнению с другими сессиями, тем ценнее эта сессия.
Шаг 4. Передача и использование данных в Alytics
Ценность фраз и каналов пересчитывается автоматически каждый день. Результат сохраняется в таблице в Google BigQuery и Google Cloud Storage. Hoff экспортирует результат атрибуции из Google Cloud Storage в Alytics с помощью RESTful API.
Hoff настроили правила, по которым Alytics определяет размер ставки. Чем больше ROI поисковой фразы, в которой упоминается товар, тем выше ставка. К примеру, если ROI столов меньше 15%, ставка на объявление для поисковой фразы «купить стол» равна 1 $; если ROI больше 75% — 4 $. Все числа определены экспериментально.
Результаты
В итоге Hoff:
- Увеличил ROI контекстной рекламы на 17% за счет оптимизации размера ставок.
- Точнее оценил прибыль от поисковых фраз. Количество фраз с ненулевой ценностью выросло в 2,4 раза: стандартные модели атрибуции их просто не учитывали.
- Узнал, что некоторые ключевые фразы приносят значительно больше заказов офлайн, чем онлайн.
Решение помогло ответить на вопросы:
- Как изменится ROI онлайн-рекламы с учетом исполняемости заказов?
- Как онлайн-реклама влияет на заказы, оформленные через колл-центр?
- Какие ключевые фразы приносят самые прибыльные заказы?
- Какие товары имеют наибольший ROI?
- Какая доля офлайн заказов совершена под влиянием онлайн-рекламы?