20 февраля 2019

Сколько раз клиент посещает сайт застройщика перед звонком

Редакция
Время чтения 3 минуты

Среди маркетологов распространено мнение, что клиент при покупке недвижимости долго выбирает квартиру: много раз заходит на сайты застройщиков, всё тщательно изучает, а потом уже звонит. Так говорят о медийных площадках и «охватных» ресурсах: якобы клиенты с них переходят на сайт застройщика, изучают информацию, потом возвращаются на сайт, например, по брендовым запросам через поисковики и только тогда звонят. На самом деле зачастую это не так.

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

Понадобятся динамический коллтрекинг. В нашем варианте это CoMagic, сырые данные Яндекс.Метрики и Google BigQuery.


Сырые данные Метрики

В интерфейсе Метрики данные агрегированы, то есть рассчитываются для определенной группы визитов. Основой для этих расчетов служат сырые данные — записи об отдельных визитах или просмотрах. Таблица с этими записями передается через Logs API — специальный интерфейс для работы с логами Метрики, при этом каждая запись дополнена сведениями из Метрики.

Пример выгрузки Logs API. Первый столбец — уникальный ID визита, второй — ID пользователя, третий — каких целей, заданных в Метрике, достиг пользователь за этот визит.


Передача данных о звонках в Метрику

При динамическом коллтрекинге каждая сессия пользователя на сайте получает собственный телефонный номер. Для каждой такой сессии CoMagic определяет clientID Метрики через yaCounterXXXXXX.getClientID().

В интерфейсе CoMagic такой clientID можно найти в отчете Список обращений → Звонки:

По умолчанию не отображается, выбирайте поле «ClientID Яндекс.Метрика» в конструкторе отчетов

CoMagic передает в Метрику CSV-таблицу, где есть ClientID, дата и время визита:

Метрика получает от CoMagic информацию о звонке и по ClientID добавляет эти данные к тому визиту посетителя, который предшествовал звонку.

Синхронизация CoMagic и Метрики происходит раз в сутки, данные передаются за прошедший день. На 2, 7, 14 и 20-й день CoMagic повторно отправляет данные в Метрику, если что-то поменялось в информации о звонке, например, если к звонку добавили теги.

В Метрике звонки отслеживают с помощью целей — при первой передаче данных от CoMagic создается специальная цель. Она отображается в сервисе, в разделе Настройка → Цели. Название и описание цели могут быть произвольными.


Обработка логов Метрики в BigQuery

Сначала нужно выгрузить логи Метрики в BigQuery. В Logs API понадобятся поля:

Название параметра Описание
ym:s:visitID Идентификатор визита
ym:s:date Дата визита
ym:s:dateTime Дата и время визита
ym:s:pageViews Глубина просмотра (детально)
ym:s:visitDuration Время на сайте (детально)
ym:s:goalsID Идентификатор целей, достигнутых за данный визит
ym:s:clientID Идентификатор пользователя на сайте
ym:s:UTMCampaign UTM Campaign
ym:s:UTMContent UTM Content
ym:s:UTMMedium UTM Medium
ym:s:UTMSource UTM Source
ym:s:UTMTerm UTM Term
ym:s:offlineCallTag Произвольная метка
ym:s:offlineCallTalkDuration Длительность звонка в секундах

Далее разберем пример, когда в CoMagic звонки тегируются. Если вы не ставите теги в CoMagic и относите к целевым звонки больше минуты, берите комбинацию двух признаков: выполнение цели с нужным ID (goalID like ‘%XXX%’) и offlineCallTalkDuration > 60. К тому же можно настроить код так, чтобы он не учитывал короткие сессии или прямые доходы.

1. Из сырых данных оставляем только нужные столбцы. Каждая строка — отдельный визит, для которого мы знаем:

  • clientID (уникальный идентификатор пользователя);
  • visitID (ID визита);
  • dateTime (дата и время начала визита);
  • visitDuration (продолжительность в секундах);
  • UTMSource (метка utm_source);
  • offlineCallTag (теги из CoMagic для визитов со звонками).

Несколько строк лога Яндекс.Метрики. Каждая строка — отдельный визит

Запрос (Legacy SQL):

SELECT
  clientID,
  visitID,
  dateTime,
  visitDuration,
  UTMSource,
  REGEXP_REPLACE(offlineCallTag, r'[\,\'\]\[]|null', '') AS offlineCallTag
FROM
  [%dataset%]
ORDER BY
  offlineCallTag DESC

2. Найдем всех пользователей, у которых были визиты с целевыми звонками — в примере целевой звонок имеет тег «Целевой РА»:

Идентификаторы пользователей, кто звонил застройщику

Запрос

SELECT
  clientID,
FROM
  [%dataset%]
WHERE
  offlineCallTag LIKE '%Целевой РА%'
GROUP BY
  clientid

3. Объединяем две таблицы, чтобы оставить только сессии тех, кто звонил; нумеруем визиты по порядку для каждого пользователя:

Добавили столбец visitNumber — номер визита для каждого пользователя

Видно, что, например, пользователь 154589812623271896 заходил трижды: 18 января, 1 и 4 февраля. Позвонил с третьей сессии.

Запрос

SELECT
  all.clientID AS clientID,
  all.visitID AS visitID,
  ROW_NUMBER() OVER(PARTITION BY all.clientID ORDER BY all.datetime) AS visitNumber,
  all.dateTime AS dateTime,
  all.visitDuration AS visitDuration,
  all.UTMSource AS UTMSource,
  REGEXP_EXTRACT(all.offlineCallTag, '(Целевой РА)?') AS offlineCallTag
FROM (
  SELECT
    clientID,
    visitID,
    dateTime,
    visitDuration,
    UTMSource,
    REGEXP_REPLACE(offlineCallTag, r'[\,\'\]\[]|null', '') AS offlineCallTag
  FROM
    [%dataset%] ) all
INNER JOIN (
  SELECT
    clientID,
  FROM
    [%dataset%]
  WHERE
    offlineCallTag LIKE '%Целевой РА%'
  GROUP BY
    clientid ) call
ON
  all.clientid = call.clientid
ORDER BY
  clientID,
  dateTime

4. Находим для каждого clientID номер визита, во время которого клиент совершил целевой звонок:

ID пользователя и номер сессии, с которой был произведен целевой звонок

Запрос

SELECT
  clientid,
  MIN(visitNumber) AS FirstCallVisitNumber
FROM (
  SELECT
    all.clientID AS clientID,
    all.visitID AS visitID,
    ROW_NUMBER() OVER(PARTITION BY all.clientID ORDER BY all.datetime) AS visitNumber,
    all.dateTime AS dateTime,
    all.visitDuration AS visitDuration,
    all.UTMSource AS UTMSource,
    REGEXP_EXTRACT(all.offlineCallTag, '(Целевой РА)?') AS offlineCallTag
  FROM (
    SELECT
      clientID,
      visitID,
      dateTime,
      visitDuration,
      UTMSource,
      REGEXP_REPLACE(offlineCallTag, r'[\,\'\]\[]|null', '') AS offlineCallTag
    FROM
      [%dataset%] ) all
  INNER JOIN (
    SELECT
      clientID,
    FROM
      [%dataset%]
    WHERE
      offlineCallTag LIKE '%Целевой РА%'
    GROUP BY
      clientid ) call
  ON
    all.clientid = call.clientid
  ORDER BY
    clientID,
    dateTime)
WHERE
  offlineCallTag = 'Целевой РА'
GROUP BY
  clientID

5. Делаем сводную таблицу:

Запрос

SELECT
  FirstCallVisitNumber,
  COUNT(clientid) AS clients
FROM (
  SELECT
    clientid,
    MIN(visitNumber) AS FirstCallVisitNumber
  FROM (
    SELECT
      all.clientID AS clientID,
      all.visitID AS visitID,
      ROW_NUMBER() OVER(PARTITION BY all.clientID ORDER BY all.datetime) AS visitNumber,
      all.dateTime AS dateTime,
      all.visitDuration AS visitDuration,
      all.UTMSource AS UTMSource,
      REGEXP_EXTRACT(all.offlineCallTag, '(Целевой РА)?') AS offlineCallTag
    FROM (
      SELECT
        clientID,
        visitID,
        dateTime,
        visitDuration,
        UTMSource,
        REGEXP_REPLACE(offlineCallTag, r'[\,\'\]\[]|null', '') AS offlineCallTag
      FROM
        [%dataset%] ) all
    INNER JOIN (
      SELECT
        clientID,
      FROM
        [%dataset%]
      WHERE
        offlineCallTag LIKE '%Целевой РА%'
      GROUP BY
        clientid ) call
    ON
      all.clientid = call.clientid
    ORDER BY
      clientID,
      dateTime)
  WHERE
    offlineCallTag = 'Целевой РА'
  GROUP BY
    clientID )
GROUP BY
  FirstCallVisitNumber
ORDER BY
  FirstCallVisitNumber

6. Визуализируем данные, если необходимо. Из BigQuery легко отправить данные в Google Data Studio, чтобы сделать простую визуализацию:

Почти 80% наших пользователей звонят с первой или второй сессии на сайте

В моем примере, построенном на основе данных московского проекта бизнес-класса, видно, что 67% пользователей звонят после первого визита на сайт, почти 80% — не позже второго. Аналогичные расчеты для проектов экономкласса показали, что после первого визита застройщику звонит даже большее число клиентов. Оказывается, люди не тратят много времени и сессий, чтобы позвонить застройщику. Так и передайте своим медиапланерам.

Над статьей работали: автор Виталий Бахвалов, редактор Ника Троицкая

Читайте ещё по этой теме