Всем привет! Меня зовут Иван Спиридонов, я создатель сервиса сквозной аналитики R7K12. Наша система помогает выявить наиболее эффективные источники рекламы, которые приносят реальную прибыль компании, а не просто расходуют бюджет. Для анализа статистики посещений, продаж, целевых обращений часть клиентов пользуется не только R7K12, но и Google Analytics (далее GA).
Поэтому сегодня мы хотим поделиться собственным опытом передачи данных в GA по Measurement Protocol (далее MP). Уверен, многим эта информация будет полезна. О том, как настроить отправку информации с помощью MP и что это такое, подробно описано здесь. А я расскажу про “подводные камни” инструмента и покажу, как их можно обойти. При передаче данных в GA через MP чаще всего возникают следующие проблемы:
Рассмотрим подробнее каждую из них.
MP дает возможность передавать любые данные (заявки, продажи, телефонные звонки) из офлайн источников в GA. Система безошибочно определяет IP-адреса посетителей с помощью счетчика, установленного на сайт.
![](https://habrastorage.org/r/w1560/webt/ib/uq/yw/ibuqywgt7czcs3rrz5hl8nfqtqk.png)
Рассмотрим этот момент подробнее на конкретном примере. Зайдем на сайт www.r7k12.ru и откроем код страницы. Во вкладке “Network” видно, что в параметрах запроса нет IP-адреса. Это объясняется тем, что когда на сайте срабатывает счетчик GA, система определяет страну/город исходя из IP пользователя.
![](https://habrastorage.org/r/w1560/webt/ht/zb/qx/htzbqxlzr-qrvoygfii43hkiaxg.png)
Соответственно, визит в системе аналитики будет зафиксирован с правильным геоположением.
![](https://habrastorage.org/r/w1560/webt/_g/et/zo/_getzob1u-3of89egtd4x0f5ke0.png)
Теперь попробуем отправить данные о продаже по MP в GA на Client ID спустя полчаса (после завершения текущей сессии). Сразу уточню, что делать запрос я буду с сервера, который находится в Германии.
![](https://habrastorage.org/r/w1560/webt/dg/ww/xr/dgwwxrb-947zi-ykpx8g8ptg-vy.png)
Итак, после передачи данных в GA мы видим, что по тому же Client ID открылась сессия из Германии. Почему так произошло?
![](https://habrastorage.org/r/w780q1/webt/mi/nq/pz/minqpzkggkci4na5u9oke4hrnkc.jpeg)
Дело в том, что когда в систему аналитики поступает дополнительная информацию по MP после завершения основной сессии, создается новая и GA считывает IP-адрес сервера, с которого был передан запрос. Соответственно, всем данным, полученным таким образом, будет присвоен один и тот же IP.
Этот нюанс может создать достаточно большие расхождения в отчетах, особенно, если пользователи и сервер имеют разное геоположение. Например, в нашем случае сервер находится в Германии, а заявки от клиентов поступают из Украины. Тем не менее, в отчете GA заказ, отправленный с помощью MP после окончания сессии, будет иметь неверный IP-адрес.
![](https://habrastorage.org/r/w780q1/webt/at/5x/g2/at5xg2qlfj0ew-jj4f26-4nn-7e.jpeg)
Таким образом, GA фиксирует только IP-адрес сервера, а не конкретных пользователей, поэтому у всех продаж будет стоять немецкий IP.
![](https://habrastorage.org/r/w1560/webt/6r/t0/d0/6rt0d0o4fow3j8matwxqq-koyuu.png)
Для решения этой проблемы рекомендую при отправке запроса добавлять специальный параметр (uip), с помощью которого можно будет передать IP-адреса посетителей. Если сайт написан на PHP, то данные для параметра можно взять из переменной $_SERVER['REMOTE_ADDR'].
![](https://habrastorage.org/r/w1560/webt/lt/mu/3v/ltmu3vmhzmlcf5rxcthvtpal0ms.png)
Итоговый запрос должен выглядеть примерно вот так:
![](https://habrastorage.org/r/w1560/webt/a8/p-/du/a8p-dur-tyh6aom3m4hp5ukskmy.png)
После этого в GA видны следующие изменения:
![](https://habrastorage.org/r/w1560/webt/8u/hy/o3/8uhyo3cgtzkglpzrwuufalklax8.png)
Информацию о типе устройства система аналитики определяет из заголовков, которые передаются вместе с запросом. Поэтому, как и в случае с IP-адресами, при отправке данных через MP после завершения основной сессии в GA значение этих данных зачастую будет “desktop” (используется User Agent текущего сервера), даже если посетитель оставил заявку с мобильного телефона или планшета.
![](https://habrastorage.org/r/w1560/webt/dj/fw/nc/djfwncc2jox566idkc4xybqbdt4.png)
В такой ситуации мы не можем корректно определить конверсию устройства или браузера, поэтому необходимо снова использовать дополнительные метки при отправке запроса в GA. Здесь нам поможет параметр ua.
![](https://habrastorage.org/r/w1560/webt/d8/uc/tb/d8uctbtcles0-rldtnkx2b1zbqu.png)
А вот так будет выглядеть запрос, который поможет определить тип устройства пользователя.
![](https://habrastorage.org/r/w1560/webt/f3/er/wd/f3erwdabajsmn1dtqisvrwojr7a.png)
Также при отправке через MP есть некоторые особенности присвоения рекламных площадок. А именно, у сервиса GA есть собственный алгоритм для их определения. Например, пользователь перешел на сайт с источника Google Adwords в 15:31 и оставил заявку.
![](https://habrastorage.org/r/w1560/webt/l8/g8/ze/l8g8zeejhr-nsmtnpc1cvfbbylc.png)
Второй визит был с Yandex/cpc, а последний — прямой заход в 18:13. Отправили продажу в 18:48, после завершения последнего визита пользователя. Соответственно, GA запустил еще одну сессию с прямым заходом на сайт.
![](https://habrastorage.org/r/w1560/webt/1t/ng/fe/1tngfe6bhzxo9dz540xti7jdnvc.png)
В отчете видно, что все три сеанса и транзакция были присвоены рекламной площадке yandex/cpc, хотя фактически визит и заявка была с Google Adwords. Как так вышло?
![](https://habrastorage.org/r/w1560/webt/jc/kq/fd/jckqfdl5tlhnfoabu8uxqtsm-2u.png)
GA присваивает данные в отчетах на последний непрямой заход пользователя. А это значит, что если на момент, пока данные не отправили в систему аналитики, клиент зашел на сайт с других рекламных источников, то заявка будет зафиксирована за одним из них. Подобная ситуация характерна для сайтов, где продажа происходит спустя какое-то время после оформления заявки и клиент успевает повторно посетить сайт. Например, b2b, где промежуток от заявки до продажи может составлять от одного дня до нескольких месяцев.
Таким образом, определение рекламных источников становится проблемой. Единственный выход из ситуации — при отправке запроса MP вручную добавить все используемые площадки в GA с помощью специальных параметров (cn, ck, cc, cm, cs).
![](https://habrastorage.org/r/w1560/webt/60/td/pf/60tdpf7gwwklsyys523vnj7rxbw.png)
![](https://habrastorage.org/r/w1560/webt/6z/bj/fh/6zbjfhtqj_icmhj4bpxpppkcnxw.png)
![](https://habrastorage.org/r/w1560/webt/fn/25/a-/fn25a-gqlhgtv672mfd8awk6q3e.png)
![](https://habrastorage.org/r/w1560/webt/dq/wi/se/dqwisezb2heu3jgkd900k9utviu.png)
Если отправить запрос с указанием источника (в данном примере это google/cpc), то транзакция будет присвоена на правильный рекламный канал.
![](https://habrastorage.org/r/w1560/webt/1y/y0/jt/1yy0jtuwgvq9ed0ggaohs38gk2o.png)
Набор параметров выглядит вот так:
![](https://habrastorage.org/r/w1560/webt/ic/nj/5v/icnj5vookhybrm41vb7xjnithmu.png)
Но есть один важный нюанс, который нужно учитывать при формировании запроса. Реклама GoogleAds не работает с UTM-метками, тем не менее, в системе есть специальная функция автоматической пометки — Google click ID (GCLID).
![](https://habrastorage.org/r/w1560/webt/9d/oi/mw/9doimwtrl2ioqgke2zedovzwewq.png)
Это значит, что для корректного отображения рекламных компаний придется отправлять не только UTM-метки, но и GCLID. Пример итогового запроса:
![](https://habrastorage.org/r/w1560/webt/m-/bm/oy/m-bmoys5mjiladueveg-ugdta7g.png)
В заключении хочу подытожить все вышенаписанное касательно MP. Этот инструмент имеет некоторые особенности передачи информации в Google Analytics, о которых важно знать. Для того, чтобы данные отправлялись корректно, следует обязательно указывать в запросе дополнительные параметры. С их помощью рекламные источники, тип устройства, IP-адреса посетителей и другая важная информация будет верно отображена сервисом GA.
Поэтому сегодня мы хотим поделиться собственным опытом передачи данных в GA по Measurement Protocol (далее MP). Уверен, многим эта информация будет полезна. О том, как настроить отправку информации с помощью MP и что это такое, подробно описано здесь. А я расскажу про “подводные камни” инструмента и покажу, как их можно обойти. При передаче данных в GA через MP чаще всего возникают следующие проблемы:
- Некорректное считывание IP-адреса.
- Переопределение типа устройства пользователя.
- Рандомное присвоение рекламных источников.
Рассмотрим подробнее каждую из них.
Некорректное считывание IP-адреса
MP дает возможность передавать любые данные (заявки, продажи, телефонные звонки) из офлайн источников в GA. Система безошибочно определяет IP-адреса посетителей с помощью счетчика, установленного на сайт.
![](https://habrastorage.org/webt/ib/uq/yw/ibuqywgt7czcs3rrz5hl8nfqtqk.png)
Рассмотрим этот момент подробнее на конкретном примере. Зайдем на сайт www.r7k12.ru и откроем код страницы. Во вкладке “Network” видно, что в параметрах запроса нет IP-адреса. Это объясняется тем, что когда на сайте срабатывает счетчик GA, система определяет страну/город исходя из IP пользователя.
![](https://habrastorage.org/webt/ht/zb/qx/htzbqxlzr-qrvoygfii43hkiaxg.png)
Соответственно, визит в системе аналитики будет зафиксирован с правильным геоположением.
![](https://habrastorage.org/webt/_g/et/zo/_getzob1u-3of89egtd4x0f5ke0.png)
Теперь попробуем отправить данные о продаже по MP в GA на Client ID спустя полчаса (после завершения текущей сессии). Сразу уточню, что делать запрос я буду с сервера, который находится в Германии.
![](https://habrastorage.org/webt/dg/ww/xr/dgwwxrb-947zi-ykpx8g8ptg-vy.png)
Итак, после передачи данных в GA мы видим, что по тому же Client ID открылась сессия из Германии. Почему так произошло?
![](https://habrastorage.org/webt/mi/nq/pz/minqpzkggkci4na5u9oke4hrnkc.jpeg)
Дело в том, что когда в систему аналитики поступает дополнительная информацию по MP после завершения основной сессии, создается новая и GA считывает IP-адрес сервера, с которого был передан запрос. Соответственно, всем данным, полученным таким образом, будет присвоен один и тот же IP.
Этот нюанс может создать достаточно большие расхождения в отчетах, особенно, если пользователи и сервер имеют разное геоположение. Например, в нашем случае сервер находится в Германии, а заявки от клиентов поступают из Украины. Тем не менее, в отчете GA заказ, отправленный с помощью MP после окончания сессии, будет иметь неверный IP-адрес.
![](https://habrastorage.org/webt/at/5x/g2/at5xg2qlfj0ew-jj4f26-4nn-7e.jpeg)
Таким образом, GA фиксирует только IP-адрес сервера, а не конкретных пользователей, поэтому у всех продаж будет стоять немецкий IP.
![](https://habrastorage.org/webt/6r/t0/d0/6rt0d0o4fow3j8matwxqq-koyuu.png)
Для решения этой проблемы рекомендую при отправке запроса добавлять специальный параметр (uip), с помощью которого можно будет передать IP-адреса посетителей. Если сайт написан на PHP, то данные для параметра можно взять из переменной $_SERVER['REMOTE_ADDR'].
![](https://habrastorage.org/webt/lt/mu/3v/ltmu3vmhzmlcf5rxcthvtpal0ms.png)
Итоговый запрос должен выглядеть примерно вот так:
![](https://habrastorage.org/webt/a8/p-/du/a8p-dur-tyh6aom3m4hp5ukskmy.png)
После этого в GA видны следующие изменения:
![](https://habrastorage.org/webt/8u/hy/o3/8uhyo3cgtzkglpzrwuufalklax8.png)
Переопределение типа устройства пользователя
Информацию о типе устройства система аналитики определяет из заголовков, которые передаются вместе с запросом. Поэтому, как и в случае с IP-адресами, при отправке данных через MP после завершения основной сессии в GA значение этих данных зачастую будет “desktop” (используется User Agent текущего сервера), даже если посетитель оставил заявку с мобильного телефона или планшета.
![](https://habrastorage.org/webt/dj/fw/nc/djfwncc2jox566idkc4xybqbdt4.png)
В такой ситуации мы не можем корректно определить конверсию устройства или браузера, поэтому необходимо снова использовать дополнительные метки при отправке запроса в GA. Здесь нам поможет параметр ua.
![](https://habrastorage.org/webt/d8/uc/tb/d8uctbtcles0-rldtnkx2b1zbqu.png)
А вот так будет выглядеть запрос, который поможет определить тип устройства пользователя.
![](https://habrastorage.org/webt/f3/er/wd/f3erwdabajsmn1dtqisvrwojr7a.png)
Присвоение рекламных источников
Также при отправке через MP есть некоторые особенности присвоения рекламных площадок. А именно, у сервиса GA есть собственный алгоритм для их определения. Например, пользователь перешел на сайт с источника Google Adwords в 15:31 и оставил заявку.
![](https://habrastorage.org/webt/l8/g8/ze/l8g8zeejhr-nsmtnpc1cvfbbylc.png)
Второй визит был с Yandex/cpc, а последний — прямой заход в 18:13. Отправили продажу в 18:48, после завершения последнего визита пользователя. Соответственно, GA запустил еще одну сессию с прямым заходом на сайт.
![](https://habrastorage.org/webt/1t/ng/fe/1tngfe6bhzxo9dz540xti7jdnvc.png)
В отчете видно, что все три сеанса и транзакция были присвоены рекламной площадке yandex/cpc, хотя фактически визит и заявка была с Google Adwords. Как так вышло?
![](https://habrastorage.org/webt/jc/kq/fd/jckqfdl5tlhnfoabu8uxqtsm-2u.png)
GA присваивает данные в отчетах на последний непрямой заход пользователя. А это значит, что если на момент, пока данные не отправили в систему аналитики, клиент зашел на сайт с других рекламных источников, то заявка будет зафиксирована за одним из них. Подобная ситуация характерна для сайтов, где продажа происходит спустя какое-то время после оформления заявки и клиент успевает повторно посетить сайт. Например, b2b, где промежуток от заявки до продажи может составлять от одного дня до нескольких месяцев.
Таким образом, определение рекламных источников становится проблемой. Единственный выход из ситуации — при отправке запроса MP вручную добавить все используемые площадки в GA с помощью специальных параметров (cn, ck, cc, cm, cs).
![](https://habrastorage.org/webt/60/td/pf/60tdpf7gwwklsyys523vnj7rxbw.png)
![](https://habrastorage.org/webt/6z/bj/fh/6zbjfhtqj_icmhj4bpxpppkcnxw.png)
![](https://habrastorage.org/webt/fn/25/a-/fn25a-gqlhgtv672mfd8awk6q3e.png)
![](https://habrastorage.org/webt/dq/wi/se/dqwisezb2heu3jgkd900k9utviu.png)
Если отправить запрос с указанием источника (в данном примере это google/cpc), то транзакция будет присвоена на правильный рекламный канал.
![](https://habrastorage.org/webt/1y/y0/jt/1yy0jtuwgvq9ed0ggaohs38gk2o.png)
Набор параметров выглядит вот так:
![](https://habrastorage.org/webt/ic/nj/5v/icnj5vookhybrm41vb7xjnithmu.png)
Но есть один важный нюанс, который нужно учитывать при формировании запроса. Реклама GoogleAds не работает с UTM-метками, тем не менее, в системе есть специальная функция автоматической пометки — Google click ID (GCLID).
![](https://habrastorage.org/webt/9d/oi/mw/9doimwtrl2ioqgke2zedovzwewq.png)
Это значит, что для корректного отображения рекламных компаний придется отправлять не только UTM-метки, но и GCLID. Пример итогового запроса:
![](https://habrastorage.org/webt/m-/bm/oy/m-bmoys5mjiladueveg-ugdta7g.png)
В заключении хочу подытожить все вышенаписанное касательно MP. Этот инструмент имеет некоторые особенности передачи информации в Google Analytics, о которых важно знать. Для того, чтобы данные отправлялись корректно, следует обязательно указывать в запросе дополнительные параметры. С их помощью рекламные источники, тип устройства, IP-адреса посетителей и другая важная информация будет верно отображена сервисом GA.