Кейс digital-агентства: как отслеживать заработок с каждого канала и управлять рекламным бюджетом

Команда компании «Атвинта» подробно рассказала о настройке сквозной аналитики.

Как отследить стоимость заявки, если вы веб-студия? Путь клиента к сделке долгий, извилистый и запутанный. Клиент может уйти «подумать» и пропасть, а через год позвонить как ни в чем не бывало и сказать: «Я готов, выставляйте счет». Чтобы понять, на чём вы зарабатываете, нужна более глубокая аналитика, чем отслеживание целей в «Метрике».

Например, к нам клиенты приходят:

  • с контекстной рекламы;
  • из соцсетей;
  • из органической выдачи;

  • по рекомендациям​;

  • с вебинаров и конференций.

Это только основные каналы, а ведь еще публикации, визитки компании в рейтингах, справочниках, баннерах. Здесь купим рекламу, здесь договоримся о статье, а здесь разместим кейс. И вроде бы активность есть, звонки идут, маркетолог молодец. Но как понять:

Чтобы ответить на эти вопросы, мы в «Атвинте» решили настроить сквозную аналитику. Цель: видеть все финансовые данные по источникам в едином отчете и управлять рекламным бюджетом на основе этих данных.

Настройка сквозной аналитики

  • Подготовка.
  • Основная настройка.
  • Описание внешних событий.
  • Описание внутреннего взаимодействия.
  • Трудности.
  • Стоимость.
  • Результат.
8afa26909bccf7.png

Источники

Сначала мы определили, как выглядит наша воронка продаж. Набросали все возможные пути клиента от первого обращения до заключения сделки.

Список всех возможных каналов, откуда могут приходить лиды:

16b340fad44717.png

Точки захвата, где мы можем получить данные:

  • чат Carrot Quest;
  • динамический коллтрекинг Callibry;
  • email;
  • форма заявки на сайте.

Обработка заявок и оформление сделки: amoCRM

Статистика эффективности: Google Analytics

Теперь эту воронку надо связать в единое целое.

Оцениваем техническую реализацию

Первая мысль — настроить стандартный модуль электронной торговли в Google Analytics. Но есть проблема: наш сайт — не интернет-магазин. На нем нет авторизации, формы заказа, корзины и оплаты. Значит, счетчик аналитики не сможет идентифицировать пользователя и собирать данные о транзакциях.

Информацию в Google Analytics придется передавать из CRM. Написали в техподдержку amoCRM. Выяснилось, что нам нужно настроить WebHooks — уведомления сторонних приложений о событиях, произошедших в amoCRM.

Настройка — подготовительный этап

Настраиваем интеграцию между сайтом, CRM, чатом, трекингом, email и Google.

amoCRM

Заходим в Настройки — API. Копируем API ключ — он понадобится для интеграции с другими сервисами и для взаимодействия нашего API с API amoCRM.

fd541ec66f9572.jpg

В блоке WebHooks выбираем действия, на которые amoCRM будет посылать запрос на указанный URL. В запросе содержится информация о наблюдаемом объекте в формате JSON. В нашем случае это:

  • изменение статуса сделки;
  • изменение сделки;
  • удаление сделки;
  • создание контакта;
  • изменение контакта.
823c04a592b36f.png

Настраиваем контакты. Переходим в «Настройки — Поля — Контакты». Мы добавили следующие поля: GA_id, Подписчик, IP. Это нужно для корректной передачи данных о поступивших заказах в Google Analytics.

aa75818573c5d0.jpg

Carrot Quest

Carrot Quest позволяет автоматически создавать контакт в CRM и передает информацию об источнике трафика. Для корректной передачи информации в Google, правильного сопоставления и дальнейшего склеивания пользователя, требовалось настроить передачу google_id в CRM вместе с остальными данными контакта. После создания сделки мы получали точные данные по этому контакту в системе аналитики.

Сложность работы с Carrot заключается в том, что для настройки интеграций нельзя обойтись без знаний программирования, несмотря на то, что настройка происходит из админки. Для начала нужно настроить мастер сбора данных. Переходим в «Трекинг — Мастер сбора данных». Выбираем «Продвинутый мастер сбора данных».

c4733caa7411df.jpg

Для нашей работы существенно важно было создать одно поле: GA_id (см. настройку контактов в amoCRM). В блоке «Свойства селектора» впишите селектор тега на сайте (например, input type=«hidden»), из которого скрипт заберет необходимое значение. В нашем случае в этот input мы записываем google_id посетителя сайта. А в выпадающем списке выберете поле в котором сервис будет хранить полученное значение для каждого пользователя.

de25b65d7aff0f.jpg

Далее переходим в «Интеграции».

ea0d4d02620e5b.jpg

Интеграции. Выбираем amoCRM

2dab4c5af62088.jpg

Заполняем все поля.

303d61f19fdc6f.jpg

Особое внимание нужно уделить пункту «Свойства для передачи». Здесь нужно выбрать то поле, которое вы выбрали в пункте 2 (в нашем случае это «cid»). А в текстовое поле нужно вписать название поля контакта из amoCRM, в которое записывается google_id (в нашем случае «GA_id»).

15c89f3b8a2a7a.jpg

Callibri

Коллтрекинг работает примерно так же, как чат, и автоматически создает контакт в CRM. Если ранее этого контакта в CRM не было, создает сделку по каждому новому звонку. Переходим в «Сайты — Название сайта — Настройки — Сайт». Вкладка «Синхронизации». Выбираем amoCRM и заполняем необходимые поля. Если при звонке нужно создавать лид, то выбираем соответствующий пункт.

d9ac0a864fd84e.jpg

SendPulse

Мы используем эту систему для email-маркетинга. В данном сервисе необходимо только создать необходимые адресные книги и в настройках аккаунта во вкладке «API» активировать REST API и API 3.0.

4a8cf75b3b99c1.jpg
1812c2d3fa5b56.jpg

Диаграммы

58e9e16eb9db7e.jpg

Основная настройка

Описание внешних событий

Отправка запроса к API при каком-либо действии, произведенным посетителем на сайте. Сайт синхронизирован с Google Analytics, поэтому к каждому запросу добавляется поле с ga_id посетителя.

Заявка с сайта

При отправлении заявки с формы сайта в API формируется запрос на создание или обновление нового посетителя в amoCRM с информацией из формы, а также дополнительной информацией из запроса (ip, ga_id). Также создается лид в amoCRM. Если посетитель при этом подписался на рассылку, то в API создается запись подписчика и ему (посетителю) отправляется письмо с подтверждающей ссылкой.

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

После подтверждения подписки через API будет отправлен запрос в API SendPulse на перенос почты посетителя в адресную книгу подтвержденных подписчиков. В дальнейшем в интерфейсе SendPulse можно делать рассылки на указанные книги.

786cc0d8f27c43.jpg

Подписка на блог

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

Переход на страницу

При переходе на какую-либо страницу сайта, в API регистрируется посетитель. Его запись содержит ip и ga_id посетителя. Если посетитель уже зарегистрирован, и его ip и ga_id не поменялись, ничего не происходит. Данная информация понадобится позднее при связывании нескольких аккаунтов в amoCRM.

Также в API создается запрос на создание заметки в профиле amoCRM. Она содержит информацию о странице, дате и UTM-метках. Если посетитель не зарегистрирован в amoCRM, то ничего не происходит. Если же это новый, не зарегистрированный в amoCRM посетитель, и он перешел на сайт по рекламной ссылке, то в amoCRM создается пользователь с данными его ip, ga_id и об источнике трафика.

Нажатие и копирование электронной почты

При заходе на страницу сайта, как и было описано выше, в таблице посетителей сайта производится поиск пользователя по его ip и ga_id. Если такого пользователя нет, то он создается. Далее на сайт возвращается его уникальный идентификатор (6 символов). Этот идентификатор подставляется в ссылки с почтами «Атвинты». Так можно однозначно идентифицировать посетителя сайта, который решил отправить письмо.

3a05c8a02aa5c1.png

Телефонный звонок

Посетитель звонит по номеру, указанному в шапке сайта. Номер в шапке сайта автоматически генерируется с помощью сервиса Callibri. Каждый посетитель видит свой уникальный номер. После звонка происходит переадресация на реальный номер отдела продаж «Атвинты». Далее в Callibri создается пользователь и ему присваивается информация о посетителе: телефон, регион, канал, тип трафика, URL страницы, продолжительность разговора и так далее.

6b9057e56e81ae.jpg

Параллельно в amoCRM создается новый пользователь со всей информацией, которую можно к нему привязать. К этому пользователю добавляется метка «Callibri». С помощью API Callibri можно получить информацию о звонках за определенный период.

Обращение через Carrot Quest

Написание сообщения в диалоговом окне Carrot Quest в правом нижнем углу сайта. При отправке первого сообщения с помощью сервиса Carrot Quest в нем создается диалог, в котором менеджер может выполнить команду создания пользователя в amoCRM.

97a8852bc16347.jpg
8df0eb0be8d66b.jpg

Отправка Email

Отправка почты на один из электронных ящиков «Атвинты». В amoCRM есть возможность привязать к аккаунту свою почту и просматривать все входящие письма прямо из панели управления amoCRM. В нашем случае привязанная почта та же, что и на сайте (к которой приписывается идентификатор пользователя).

93ef73428f7988.jpg
20d5064fc6f08a.jpg

На странице письма можно создать контакт пользователя и привязать к нему сделку. В такую сделку автоматически будет приложено выбранное письмо.

a8168e0018dfbf.jpg
5d28cb4c40967d.jpg
e424e78a950473.jpg
6a0b065058318b.jpg

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

AmoCRM API

Отправка запросов из API к amoCRM для различных действий. Подробную документацию можно прочитать здесь. Этот API был необходим для автоматизации некоторых повторяющихся процессов.

Поиск контактов (GET contacts/list). Поиск производится по всем возможным полям. Для однозначного определения посетителя сайта мы производим поиск по ip посетителя и его ga_id. Эта информация всегда передается при переходе на какую-либо страницу сайта. Если пользователь оставил заявку или подписался на блог, то к списку полей поиска добавляются телефон и электронная почта посетителя.

Создание или обновление контакта (POST contacts/set). При отправлении заявки, переходе на сайт с рекламного источника или подписке на блог происходит поиск контакта среди пользователей amoCRM и обновление его информации, или, если такого контакта нет, создание нового с заполнением возможных полей. При обновлении пользователя новые значения почты и телефона добавляются в массив, а не перезаписывают имеющиеся.

Создание или обновление сделок (POST leads/set). После отправки заявки с сайта в amoCRM помимо создания пользователя создается заявка, которая привязывается к созданному или найденному контакту. Поля сделки заполняются в соответствии со значениями полей формы (тип сделки, комментарий, вложенный файл).

Measurement Protocol

Отправка запросов из API к Google Analytics для различных действий (будет описано ниже).

Протокол передачи статистических данных Google Analytics позволяет отправлять необработанные данные напрямую на серверы Google Analytics посредством HTTP-запросов практически в любой среде. С помощью этого протокола разработчики могут решать следующие задачи:

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

Для построения нужных отчетов нам необходимо было провести соответствие между сделками в amoCRM и товарами в GA. Для этого мы представили сделки как транзакции, а этапы продаж сделок как товары данной транзакции. В конечном итоге нас должна была интересовать только стоимость всей транзакции, а не ее товаров (в разделе Webhooks опишем, почему). В качестве типов сделок по услугам (Разработка, SMM, SEO и так далее) мы использовали категории товаров.

c4bc10b87b5f56.jpg
ec84366ea88df2.jpg

Заполнение данных происходит только в автоматическом режиме. В основном использовались следующие методы:

  • создание новой транзакции;
  • добавление товара в имеющуюся транзакцию;
  • отправка событий.

Подробную документацию можно прочитать здесь.

WebHooks

Отправка запросов из amoCRM к API при совершении определенных действий (будет описано ниже).

При совершении некоторых действий в интерфейсе amoCRM, на API Atwinta приходит уведомление об этом событии. Также к этому уведомлению прикрепляется объект, с которым произошло действие, в формате JSON.

Подробнее о WebHooks можно прочитать здесь.

Добавление, изменение контакта — Изменение сделки. Уведомление о переводе сделки отправляется на новый этап продаж. Содержит объект сделки (ее название, стоимость, id этапа продаж, тип сделки).

На стороне API Atwinta также хранятся сделки. Это сделано для поддержания стоимости транзакций в GA в актуальном состоянии, потому что стоимость сделки может меняться несколько раз. Если стоимость существующей сделки изменилась, то необходимо посредством Measurement Protocol добавить в транзакцию сделки новый товар. Ценой данного товара будет не новое значение стоимости сделки, а разница между новой и старой стоимостью.

Таким образом конечная цена транзакции (сделки) будет соответствовать текущей стоимости сделки в amoCRM. Сделано это из-за невозможности удаления или редактирования товаров транзакции посредством MeasurementProtocol.

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

770e62f84166c6.jpg

Удаление сделки. При удалении сделки на сторону GA отправляется запрос на добавление в список товаров транзакции еще одного товара. Цена данного товара будет равна -Х, где Х — стоимость текущей транзакции. Так мы исключим данную транзакцию из отчетов.

Трудности и нюансы

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

Общение с техподдержкой

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

Особенности работы разных сервисов

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

Модуль расширенной электронной торговли

Стандартный модуль электронной торговли Google Analytics не подходит для продажи услуг. Например, если сделка не состоялась, он не позволяет удалять товар при транзакции. В случае услуг транзакция еще не означает получения денег. Поэтому мы подключили модуль расширенной торговли.

Логика там следующая: лид — это товар, который проходит по нескольким этапам транзакции. У нас три этапа: передано менеджеру, реализовано и не реализовано. В Google отправляется ивент, что транзакция перешла на какой-то шаг. Если сделка по факту не состоялась — товар отзывается.

Обучение отдела продаж

Поскольку автоматических транзакций у нас нет, статус сделки обновляет отдел продаж. При этом нужно соблюдать определенный алгоритм действий. Если менджер не внесет данные в CRM или ошибется, статистика в Analytics будет неверной. Специалистов отдела продаж пришлось обучить новому алгоритму и стимулировать следовать ему.

Сколько это стоило

Немного цифр: 68 часов работы программиста, 10 часов работы менеджера. Стоимость настройки: 101 400 рублей.

Результат

Как мы и хотели, теперь все источники и финансовые показатели в едином отчете.

5ef19c36c63abb.jpg

Что мы анализируем

  • Трафик.
  • Количество достигнутых целей.
  • Лиды.
  • Расходы на рекламу по каждому каналу.

Это можно увидеть и без сквозной аналитики. А вот что мы видим еще:

  • конверсию из лида в продажу;
  • доход по каждому лиду в разрезе источника трафика;
  • количество реально заработанных денег с разных каналов;
  • количество обращений от каждого лида;
  • количество отказов на этапах воронки продаж.

Что с этим делать

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

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

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

047b2dd11ba4af.jpg
f052d28b9486c6.jpg

На одном из отчетов заметили интересную картину при сравнении трафика «Яндекс. Директ» и «ВКонтакте». Как оказалось, количество переходов из «Яндекс. Директ» почти в три раза больше, чем с «ВКонтакте», а количество заявок больше в шесть раз.

Затраты на «Яндекс.Директ» в три раза больше чем на «ВКонтакте».

Но по количеству дохода «Яндекс.Директ» опережает «ВКонтакте» всего на 15%.

Делаем вывод, что нужно активно развивать сообщество в социальной сети «ВКонтакте», привлекать подписчиков и увеличивать охват.

91e98f7fe095bb.jpg
ec6110d0839cd0.jpg

Еще мы сравнили две известные площадки с рейтингами студий и агентств (назовем их X и Y). Количество переходов площадки X в два раза меньше, чем у Y, а количество заявок одинаково.

Доход от площадки у X на 82% выше, чем от площадки Y. Целесообразнее покупать рекламу именно на той площадке, которая конвертирует больше денег, несмотря на дороговизну размещения. Теперь мы сможем понять, окупится размещение или нет.

5ff865c07da0cf.jpg

Настроив сквозную аналитику, вы увидите какие каналы приносят вам деньги, а какие — нет.

©  vc.ru