11 октября 2024 «Яндекс» анонсировал Measurement Protocol — новый способ для передачи данных в «Яндекс Метрику». Measurement Protocol (далее MP) — инструмент, который позволяет передавать данные о взаимодействиях пользователей напрямую с вашего сервера на серверы Метрики через HTTP-запросы. Он расширяет возможности сбора и анализа данных: дополняет данные, собранные стандартным веб-счетчиком.С помощью MP можно отправлять:посещения страниц;выполнения JavaScript-целей;события в электронной коммерции (просмотры товаров, покупки, добавления или удаления из корзины).В этой статье мы разобрали сценарии, когда MP может быть полезен, и привели примеры кода на Python для отправки данных в Яндекс Метрику. Сценарии с использованием MPПо многолетнему опыту работы с Яндекс Метрикой мы выделили 2 основных сценария, в которых без нового инструмента (Measurement Protocol) не обойтись это:Отслеживание взаимодействия с чат-ботом;Передача транзакций в сфере электронной коммерции.Взаимодействие с чат-ботомРанее в Яндекс Метрике не было возможности полноценно отслеживать взаимодействие пользователей с чат-ботом (Telegram, VK и т.д). Можно было отслеживать через офлайн-конверсии, но этот способ неудобный и недостоверный.Поэтому в чат-боте отслеживали ключевые/финальные шаги либо использовали другой инструмент, например, Google Analytics 4. Для компаний, которым важно использовать отечественные инструменты, это стало проблемой. C появлением MP в Яндекс Метрике стало возможным отслеживать любое взаимодействие пользователей с чат-ботом, имитируя отправку просмотров страниц с названиями экранов, например:https://yourdomain.ru/chatbot/main_screen (главный экран чат-бота)Транзакции в электронной коммерцииУ интернет-магазинов часто возникает потребность отправить информацию о покупке с сервера, если на сайте есть возможность онлайн-оплаты с переходом на страницу эквайринга. Это связано с тем, что часть пользователей после оплаты сразу закрывает сайт, и информация о транзакции не успевает отправиться в Яндекс Метрику. Также могут быть другие сценарии, из-за которых количество фактических транзакций не сходится с количеством транзакций в Яндекс Метрике. В таких случаях надежнее отправлять данные с сервера. Инструмент MP дает возможность отправлять все транзакции с сервера. Поэтому количество транзакций будет полностью соответствовать фактическому количеству заказов в CRM.Примеры отправки данных на серверы Яндекс МетрикиКак получить токенПрежде чем отправлять данные в Яндекс Метрику, необходимо получить токен. Для этого нужно перейти в: «Настройки > Счетчик > Дополнительные настройки > Безопасность и использование данных > Measurement Protocol».Максимальное количество активных токенов на счетчик — 5. Отправка просмотра страницыШаблон кода для отправки информации о просмотрах страниц:#Отправка просмотра страницы import requests import json import pandas as pd import pandasql as ps #-----------------Для заполнения (начало) ms = '' #Укажите ваш токен tid = 88989734 #Укажите ваш cчетчик cid = 1710232430899999999 #Идентификатор ClientID dr = 'https://yandex.ru/' #Реферер dl = 'https://yourdomain.ru/chatbot/main_screen' #URL dt = 'Чат-бот Главный экран' #Заголовок страницы #et = 1728630000 #Время хита (Timestamp, если не передан, будет использовано время получения данных) #-----------------Для заполнения (конец) URL = 'https://mc.yandex.ru/collect/?tid='+str(tid)+'&cid='+str(cid)+'&t=pageview&dr='+str(dr)+'&dl='+str(dl)+'&dt='+str(dt)+'&ms='+str(ms) r_s = requests.get(URL) print(r_s)В код необходимо подставить свой токен (ms) и указать номер счетчика (tid).Ключевые параметры:cid — идентификатор ClientID,dl — URL,dt — заголовок страницы.ClientID — параметр, по которому Яндекс Метрика понимает, кому принадлежат хиты. Если хиты отправляются с чат-бота, то можно генерировать собственный ClientID, при условии, что не нужно объединять данные по пользователю с сайта и чат-бота. Важно, чтобы clientID на протяжении жизни пользователя не менялся, иначе просмотры будут отнесены к разным юзерам.URL — в случае с чат-ботом, нужно создать уникальный URL для каждого экрана, чтобы они наглядно отображались в интерфейсе Яндекс Метрики. Заголовок страницы позволяет передавать понятное название для каждого экрана.Отправка JavaScript-целейШаблон кода для отправки целей:#Отправка JavaScript-цели import requests import json import pandas as pd import pandasql as ps #-----------------Для заполнения (начало) ms = '' #Укажите ваш токен tid = 88989734 #Укажите ваш cчетчик cid = 1710232430899999999 #Идентификатор ClientID dr = 'https://yourdomain.ru/test1' #Реферер (Для параметра URL события в отчете Параметры целей) ea = 'test_mp' #JavaScript-событие #et = 1728630000 #Время хита (Timestamp, если не передан, будет использовано время получения данных) #-----------------Для заполнения (конец) URL = 'https://mc.yandex.ru/collect/?tid='+str(tid)+'&cid='+str(cid)+'&t=event&dr='+str(dr)+'&ea='+str(ea)+'&ms='+str(ms) r_s = requests.get(URL) print(r_s)Ключевые параметры:cid — идентификатор ClientID,dr — URL,ea — JavaScript-событие.dr — параметр реферера. Для целей этот параметр определяет, на какой странице сработала та или иная JS-цель.Отчет Параметры целей ea — идентификатор, который необходимо указать при настройке цели «JavaScript-событие».При настройке целей через MP стоит указывать, что цель передается через MP, чтобы спустя время быстро найти, где она сработала. Отправка транзакцийШаблон кода для отправки транзакций:#Отправка успешной покупки import requests import json import pandas as pd import pandasql as ps #-----------------Для заполнения (начало) ms = '' #Укажите ваш токен tid = 88989734 #Укажите ваш cчетчик cid = 1710232430899999999 #Идентификатор ClientID pa = 'purchase' #ecom действие с товаром (detail, ) #et = 1728630000 #Время хита (Timestamp, если не передан, будет использовано время получения данных) ti = 4555 #Идентификатор транзакции tr = 70000 #Доход транзакции #список товаров pr1id = 456 pr1nm = 'iphone' pr1br = 'apple' pr1pr = 50000 pr2id = 459 pr2nm = 'airpods' pr2br = 'apple' pr2pr = '20000' #-----------------Для заполнения (конец) URL = 'https://mc.yandex.ru/collect/?tid='+str(tid)+'&cid='+str(cid)+'&t=event&pa='+str(pa)+'&pr1id='+str(pr1id)+'&pr1nm='+str(pr1nm)+'&pr1br='+str(pr1br)+'&pr1pr='+str(pr1pr)+'&pr2id='+str(pr2id)+'&pr2nm='+str(pr2nm)+'&pr2br='+str(pr2br)+'&pr2pr='+str(pr2pr)+'&ti='+str(ti)+'&tr='+str(tr)+'&ms='+str(ms) r_s = requests.get(URL) print(r_s)Ключевые параметры:cid — идентификатор ClientID,ti — идентификатор транзакции,tr — доход транзакции,свойства товаров (pr<productIndex>id, pr<productIndex>pr, pr<productIndex>qt и т.д).Идентификатор каждой транзакции должен быть уникальным, чтобы транзакции не схлопывались в одну. Надеемся, приведенные выше примеры помогут вам освоить инструмент Measurement Protocol от Яндекс Метрики. Если есть вопросы, задавайте их в комментариях к статье или присоединяйтесь к нашему аналитическому сообществу в Telegram.Документация по загрузке данных в Яндекс Метрику.