Как передавать заказы из CRM в Яндекс.Метрику: пошаговое руководство и кейс Kokoc.com
В аналитике важно учитывать и онлайн-, и офлайн-конверсии - заказы, оплаты и отмены. Руководитель группы веб-аналитики Kokoc.com Александр Пелевин и веб-аналитик Никита Косцов рассказали, как настроить передачу данных из CRM-системы в Яндекс.Метрику с использованием API.
Что такое офлайн-конверсии и какие сложности бывают при их оцифровке
Пользователи совершают конверсионные действия не только в интернете — на сайте или в соцсетях заказчика. Многие оформляют заказы онлайн в интернет-магазине, а оплачивают, например, в магазине, пункте самовывоза или напрямую курьеру. Или же кликают по рекламе, изучают информацию на сайте, а потом просто приходят в офлайн-точку и делают заказ. Простыми словами, офлайн-конверсии — это действия пользователей, которые происходят вне сайта: звонки, заказы через менеджеров, оплаты в офисе и т.д.
В случае с офлайн-конверсиями сложно отследить, откуда именно пришла оплата, и связать действия клиента вне интернета с полученными конверсиями. Особенно это актуально для бизнесов, у которых много офлайн-точек.
До сих пор нет точного и однозначного механизм оцифровки офлайн-конверсий. Мы предполагаем, что это может делаться через профиль пользователя Яндекс, например в приложении Яндекс.Карты часто приходит уведомление оценить место, которое вы посетили. Это наталкивает на мысль, что таким образом Яндекс отслеживает пользователя, посетившего и сайт, и офлайн-точку.
- Сценарий может быть следующим: пользователь, авторизованный в сервисах Яндекс через Яндекс ID и на десктопе, и на смартфоне, заходит на сайт, Метрика присваивает ему ClientID. Далее этот же пользователь приходит в офлайн-точку, и благодаря Яндекс.Картам определяется его местоположение. Он оформляет заказ в магазине/офисе и в момент подтверждения его заказа идет сопоставление данных ClientID Яндекс.Метрики и Яндекс ID на смартфоне, после чего офлайн-конверсия присваивается источнику трафика на сайте.
Зачем передавать заказы из CRM в Яндекс.Метрику
С помощью Яндекс Метрики можно связывать действия клиентов на сайте и вне интернета и учитывать офлайн-конверсии. Они отслеживаются с помощью целей, для них рассчитываются целевые метрики (конверсия, количество целевых визитов).
Передача этих данных в Яндекс.Метрику позволяет:
- Оценить эффективность рекламных кампаний. Вы сможете получить полную картину эффективности рекламных кампаний и воронок продаж, какие объявления привели к реальным продажам, даже если заказ был оформлен офлайн.
- Оценить эффективность трафика. Офлайн-конверсии нужно учитывать и передавать, чтобы смотреть на трафик, который пришел с рекламы, но который мы не видим непосредственно в Метрике по различным рода причинам.
- Анализировать воронки продаж. Вы получите данные о том, на каком этапе клиенты чаще всего отказываются от покупки.
- Улучшить таргетинг. Данные о конверсиях помогут точнее настраивать рекламные кампании.
Способы отправки заказов из CRM в Яндекс Метрику
- Вручную через файлы CSV. Нужно подготовить CSV-файл с конверсиями, перейти в Метрику и загрузить файл на странице «Настройка» в блоке «Загрузка офлайн-конверсий».
- Через сервер (sftp или https). Подходит для покупок по телефону. Необходимо, чтобы был подключен коллтрекинг и чтобы все конверсии были размечены yclid.
- С помощью API Метрики. Подходит для покупок по телефону с выкупом товара. В Метрике должен быть включен учет офлайн-конверсий, а сами конверсии должны быть размечены ClientID/UserID/yclid.
- Из CRM-системы по API. Подходит для онлайн-заказов с сайта. Должна быть действующая интеграция между CRM и метрикой. Именно про этот способ мы и хотим поговорить подробно.
Как правило, интернет-магазины подключены к Битрикс24, amoCRM и другим известным на рынке системам. В Метрике есть подробная инструкция по передаче данных. Но часто бывает так, что клиент пользуется самописной кастомной системой, и эти инструкции не всегда актуальны.
Недавно отдел аналитики Kokoc.com провел блестящую работу по передаче офлайн-конверсий из кастомной CRM в Метрику. Решили поделиться нашими инсайтами и полезным опытом — это будет актуально для бизнесов, которые используют самописные CRM. Расскажем пошагово, что мы делали.
Кейс: как передавать заказы из CRM в Яндекс.Метрику
В мае 2024 к Kokoc Group обратилась компания «Московские окна» — им требовался подрядчик по ведению рекламы в Яндекс.Директ. Уже в начале июне возникла масштабная задача — компания переходила на новый сайт, и нужно было настроить на нем не только события по конверсиям, но и передачу заказов из CRM в Яндекс.Метрику.
Сложность заключалась в том, что клиент использует самописную CRM, у которой, по сравнению с известными на рынке CRM-системами, нет готовой интеграции с Яндекс.Метрикой. К счастью, на стороне клиента присутствовала команда разработки, для которой нам предстояло написать ТЗ на основе справочных материалов Яндекс.Метрики.
- Для настройки контекста мы настроили стандартные цели, колл-трекинг, бизнес-аналитик со стороны клиента запросил проброс офлайн-конверсий из CRM в Яндекс.Метрику. Мы созвонились с бизнес-аналитиком клиента и выяснили, что у них очень сложная воронка. Статусов по заказам как минимум 10, из них по желанию клиента 4 статуса должны передаваться в Метрику, а остальные 6 нет. Есть еще промежуточные статусы, которые должны передаваться не стандартным способом, а через дополнительный идентификатор JS-события.
В массовых CRM это делается довольно легко, но поскольку CRM клиента самописная, кастомная, пришлось углубляться и писать подробное ТЗ, в котором расписан процесс проброса пошагово. Покажем эти шаги.
Шаг 1: подготовка данных в CRM
Для передачи данных в Яндекс.Метрику необходимо подготовить файл в формате JSON или CSV. Этот файл должен содержать информацию о заказах, клиентах и их действиях. Вот ключевые поля, которые должны быть включены:
- id — уникальный идентификатор заказа в CRM.
- client_uniq_id — идентификатор клиента на стороне CRM
- client_type — тип клиента (например, CONTACT).
- create_date_time — дата и время создания заказа.
- order_status — статус заказа (например, «оплачен», «отменен»).
- revenue — доход от заказа.
- contactPhone — номер телефона клиента.
- utm-метки (utm_source, utm_medium, utm_campaign и т.д.) — данные о рекламных каналах.
Важно было также прописать требования к выгружаемым данным:
- Данные из CRM должны быть доступны для скачивания по http(s) ссылке.
- Тело ответа должно иметь json формат.
- Для получения доступа к данным крайне желательно предусмотреть авторизацию с помощью логина и пароля. В этом случае вместе со ссылкой нужно предоставить логин и пароль. Для реализации авторизации можно создать приложение-endpoint. Пример такого приложения показан в файле rest_api_endpoint_from_crm_jsons.py либо другим удобным способом.
- Названия свойств элементов должны быть указаны в camelCase со строчной первой буквой.
- Допускается для отдельных сделок или товаров пропускать необязательные свойства, если значения этих свойств не определены.
Последним требованием была выгрузка по срокам — поскольку клиенту нужно было сравнивать количество сделок за предыдущие периоды, до перехода на новый сайт, то сделки, воронки и статусы выгружались с определенной даты, а именно с 01.01.2023 по 31.05.2024 и далее.
Поскольку есть две сущности — заказы и клиенты, то со стороны CRM данные отправляются в виде двух отдельных JSON-файлов.
В нашем случае задача также осложнялась тем, что клиент хотел видеть в отчетах Яндекс.Метрики исключительно сделки из ограниченного числа воронок, некоторые атрибуты пришлось расписать детальнее. Мы составили таблицу со статусами заказов из воронок, которые необходимо выгружать в том или ином статусе в Яндекс.Метрику:
Шаг 2: настройка передачи данных через API Яндекс.Метрики
Для передачи данных используется API Яндекс.Метрики. Вот основные шаги:
1. Создание атрибутов. В Метрике необходимо создать атрибуты, которые будут соответствовать полям из CRM (например, «статус заказа», «идентификатор клиента»).
2. Формирование запроса. Данные передаются методом POST в формате JSON.
Пример тела запроса для заказов:
Пример тела запроса для клиентов:
3. Отправка данных. Запрос отправляется на endpoint API Яндекс.Метрики. Ответ сервера будет содержать информацию об успешности обработки данных.
Шаг 3: управление статусами заказов
Статусы заказов играют ключевую роль в аналитике. В CRM должны быть настроены следующие статусы:
- Заказ создан (IN_PROGRESS): Заказы, которые находятся в работе.
- Заказ оплачен (PAID): Заказы, которые были успешно оплачены.
- Заказ отменен (CANCELLED): Заказы, от которых клиент отказался.
- Спам-заказ (SPAM): Нецелевые заказы.
Каждый статус передается в Яндекс.Метрику с соответствующим идентификатором цели. Это позволяет аналитикам видеть, на каком этапе воронки находятся заказы.
Таким образом все заявки, отправленные с сайта, автоматически попадают в CRM. В CRM реализована логика обработки заявок, в том числе изменение их статусов. Статусы заявок выгружаются в Яндекс.Метрику в соответствии с целями.
Бизнес-аналитик получает актуальные данные из CRM в Яндекс.Метрике для анализа статусов заявок, а также может оценить эффективность продаж и рекламных кампаний, основываясь на данных о целевых контактах, созданных и оплаченных заказах, а также отмененных и спам-заявках.
Рассмотрим пример использования: клиент оформил заказ на сайте, но оплатил его через менеджера. В CRM заказ получил статус «Оплачен». Данные о заказе передаются в Яндекс.Метрику, где аналитик видит, что этот заказ был связан с рекламной кампанией в Яндекс.Директе. Это позволяет оценить ROI кампании и принять решение о ее оптимизации.
Результаты, которых удалось достичь
В интерфейсе Яндекс.Метрики для клиента был создан специальный отчет по UTM-меткам со статусами заказов. Соответственно, клиент может видеть актуальную ситуацию по заказам за нужный период.
До настройки в Метрику пробрасывались только часть статусов заказов, и на момент написания ТЗ для нового сайта требовалось доработать воронку со всеми статусами:
После внедрения ТЗ заказы стали показываться в разных статусах:
А что же с бизнесовой точки зрения?
— Для ведения и оптимизации рекламы данные настройки помогают более тонко настраивать рекламные кампании. Специалисты начинают работать не только на «лидовые», а на конечные бизнес-цели клиента:С помощью статусов по нецелевым и отказным контактам можно строить сегменты для отсечения аудиторий или же с помощью ретаргетинга заинтересовать клиента какой-либо дополнительной подборкой.
С помощью статуса «Оплачено» можно более точно подбирать нужную ЦА и людей, похожих на них, давая Яндексу больше понимания, кто эта ЦА. С ними можно работать по построению лояльности, а также использовать ретаргетинг с предложением какой-либо акции.
Наши рекомендации по настройке
- Периодичность обновления. Данные должны обновляться ежедневно, чтобы аналитика оставалась актуальной.
- Проверка данных. Уб��дитесь, что все поля заполнены корректно, особенно даты и идентификаторы.
- Использование yclid. Для точной привязки заказов к рекламным кампаниям используйте параметр yclid, который передается из Яндекс.Директа. Однако данный параметр может быть заменен на ClientID Яндекс.Метрики.
Пишите в комментариях, сталкивались ли с такой задачей!