Measurement Protocol — просто о несложном

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

    Для этих целей используется Measurement Protocol или Протокол передачи данных. В каких случаях вы можете использовать эту возможность? Приведу пару примеров.

    Первый вариант — посетитель приобретает у вас на сайте товар или услугу, при этом выбирает вариант оплаты «безналичный расчет». Мы можем предположить, что процесс покупки по ряду причин может быть и не завершен, поэтому передача сведений в Google Analytics о транзакции после завершения процесса оформления заказа/покупки некорректна. Данные должны быть переданы после фактического поступления оплаты.

    Второй вариант — оплата наличными курьеру при доставке товара. Покупка считается завершенной после получения оплаты курьером.

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

    Решить обозначенную проблему нам поможет новая возможность, появившаяся в Google Analytics с выходом Universal Analytics, под названием Mesurement Protocol.

    В чем заключается принцип работы протокола? Все достаточно просто: необходимо отправить специальным образом сформированный запрос на определенный URL.

    Пример запроса:
    www.google-analytics.com/collect?v=1&tid=UA-47xxxx-1&cid=12xx916x95.13x6127xx4&t=pageview

    Разберем подробнее параметры подлежащие передаче.

    Первое — это URL, на который должен быть отправлен запрос. Он должен принимать значение www.google-analytics.com/collect для незащищенного соединения и ssl.google-analytics.com/collect для протокола SSL.

    Второе — обязательный набор из 4 параметров:
    • 1. v — версия протокола, в настоящей момент используется значение равное 1;
    • 2. tid — идентификатор кода отслеживания (ресурса) Google Analytics в виде UA-XXXX-Y;
    • 3. cid — анонимный Client-ID;
    • 4. t — тип хита.


    Если первый и второй параметр не должны вызвать сложностей, то третий и четвертый требуют уточнений.
    Параметр cid, это анонимный client-id или идентификатор клиента. Если посетитель просматривает ваш сайт с помощью браузера, Universal Analytics сохранит значение client-id в cookie, а если вам не известно значение, используйте любое свое.

    Обратите внимание, если вы используете client-id, который получен из cookie файла, переданные данные будут сопоставлены с другими действиями посетителя, а если передаете свое значение, то будет просто зафиксирован некоторый хит нового посетителя (операции под одним client-id приписываются одному посетителю). Для иллюстрации сказанного посмотрите на изображение:

    image

    Просмотр страницы под номером 1 — это первое посещение сайта, просмотр 2 сгенерирован с помощью Mesurement Protocol по клику на кнопке (при этом использовался clid из cookie, установленного в посещении номер 1). У нас по отчету на сайте будет 1 посетитель.

    Просмотр 3, как и просмотр 2, сгенерирован при клике на кнопку, при этом в качестве clid передано значение 12345, что приводит к появлению на сайте второго посетителя. У нас по отчету уже 2 посетителя. Просмотр 4 полностью аналогичен просмотру 2 (это действие посетителя номер 1, который ранее осуществил просмотры 1 и 2).

    Вернемся к параметрам. Следующий параметр t (это тип хита). Он может принимать ограниченный круг значений — 'pageview', 'appview', 'event', 'transaction', 'item', 'social', 'exception', 'timing'.

    Наиболее часто используемые значения:
    pageview — просмотр страницы;
    event — событие;
    transaction — транзакция;
    item — элемент транзакции.

    Уже сейчас у вас есть возможность передачи в Universal Analytics данных с помощью Measurement Protocol. Но для того, чтобы нам получить в отчетах достоверную и полную информацию, необходимо выполнить еще два действия:

    1. Получить client-id посетителя сайта и сохранить его в CRM вместе с данными о заказе (сопоставить активность пользователя на сайте и его оффлайн действия).

    2. Дополнить запрос дополнительными параметрами, позволяющими работать нам с передаваемыми данными в отчетах.
    Получить clien-id можно из cookie Universal Analytics:

    image

    Вы можете самостоятельно либо с помощью разработчиков получить нужное значение. Я в своей деятельности пользуюсь следующим кодом на языке PHP (автор Matt Clarke):

    <?php
    /*
    * Name: Universal Analytics Cookie Parser Class
    * Description: Parses the new format Universal Analytics cookie. 
    * Developer: Matt Clarke
    * Date: January 10, 2013
    */
    
    class UniversalAnalyticsCookieParser{
    
        // Parse the _ga cookie if found
        function __construct() {
            if( isset($_COOKIE["_ga"]) ){
                echo $this->getCid();
            }
        }
    
        // Handle the parsing of the _ga cookie
        public function parseCookie()
        {
            list($version,$domainDepth, $cid1, $cid2) = split('[\.]', $_COOKIE["_ga"],4);
            return array('version' => $version, 'domainDepth' => $domainDepth, 'cid' => $cid1.'.'.$cid2);
        }
    
        // Get cid
        public function getCid()
        {
            $contents = $this->parseCookie();
            return $contents['cid'];
        }
    
    }?>


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

    Рассмотрим некоторые из параметров, которые относятся к ранее обозначенным типам хитов.
    • dh — доменное имя сайта;
    • dp — адрес страницы относительно доменного имени сайта;
    • dt — заголовок страницы;
    • ec — категория события;
    • ea — действие по событию;
    • el — ярлык события;
    • ti — идентификатор транзакции;
    • ta — название филиала или магазина;
    • tr — общая сумма транзакции;
    • in — название товара;
    • ip — стоимость товара;
    • iv — категория товара.


    Теперь, когда мы имеем все необходимое для использования Measurement Protocol (протокола передачи данных), можно попробовать на практике приобретенные знания. Мы с вами воспользуемся всеми типами хитов, которые были названы ранее. Я буду демонстрировать передачу данных, отправляя запросы с помощью JQuery.

    Отправка данных о просмотре страницы:

    $('#buttonId').click(function(){
            $.post(
                    "http://www.google-analytics.com/collect",
                    {
                            v: '1',
                            tid: 'UA-xxxxx-1',
                            cid: '12xx916x95.13x6127xx4',
    
                            t: 'pageview',
                            dh: 'test.prometriki.ru',
                            dp: '/my-test-page',
                            dt: 'Это проверка работы!'
                    },
                    onAjaxSuccess
            )
    });


    Отправка данных о событии:

    $('#buttonId').click(function(){
            $.post(
                    "http://www.google-analytics.com/collect",
                    {
                            v: '1',
                            tid: 'UA-xxxxx-1',
                            cid: '12xx916x95.13x6127xx4',
    
                            t: 'event',
                            ec: 'Проверка события',
                            ea: 'Виртуальное',
                            el: 'Получилось'
                    },
                    onAjaxSuccess
            )
    });


    Отправка данных о покупке:

    $('#buttonId').click(function(){
            $.post(
                    "http://www.google-analytics.com/collect",
                    {
                            v: '1',
                            tid: 'UA-xxxxx-1',
                            cid: '12xx916x95.13x6127xx4',
    
                            t: 'transaction',
                            ti: '44473',
                            ta: 'SITE',
                            tr: '19990.00'
                    },
                    onAjaxSuccess
            )
    
            $.post(
                    "http://www.google-analytics.com/collect",
                    {
                            v: '1',
                            tid: 'UA-xxxxx-1',
                            cid: '12xx916x95.13x6127xx4',
    
                            t: 'item',
                            ti: '44473',
                            'in': 'Название товара',
                            ip: '19990.00',
                            iv: 'Категория товара'
                    },
                    onAjaxSuccess
            )
    });


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

    В какой момент вам необходимо передавать данные с помощью Mesurement Protocol? Для примеров, которые я привел в самом начале публикации, моментом передачи данных может быть перевод заявки в CRM из статуса «заказ доставляется» в «заказ оплачен». Разработчикам, при наличии необходимых данных, не составит особого труда отправить сформированный запрос по определенному действию или событию на сайте.

    Как видите, сложного в использовании этого функционала Universal Analytics нет. Используйте его для сбора достоверных данных и оптимизации вашего бизнеса.

    Для получения полной и официальной информации обратитесь к документации.

    В заключении приведу пример ролика, который демонстрирует фиксацию событий и передачу сведений в Universal Analytics для датчика движения:

    Метки:
    Поделиться публикацией
    Похожие публикации
    Комментарии 11
    • 0
      Спасибо за наводку на сервис.

      Андрей, ответь, пожалуйста, на вопрос — предусмотрена ли в протоколе Measurement защита от спама? Например, я могу открыть консоль на странице с управляющим кодом и начать посылать запросы с этого домена в сервис Google Analytics на примере запросов сгенерированных нативным кодом (структуру тоже консоль покажет).
      • 0
        На самом деле вам не нужно посылать запросы вручную, вы можете просто вызывать JS методы аналитики тем самым эмулируя свою активность. Точно не скажу, но когда я пробовал так делать, то не был заподозрен в спаме и все запросы успешно «ушли» в аналитику.
        • 0
          Учитывая большой объем данных поступающий с посещаемых ресурсов, вероятно ограничений нет
        • 0
          А можно ли отправлять действия не связанные с посетителем сайта?
          Я хочу фиксировать звонки. Т.е. в качестве идентификатора передавать номер звонящего.
          • 0
            Можно, но тогда не в качестве идентификатора, а например, действие по событию. Категория — звонок, событие — номер звонящего. Значение идентификатора — cid -в отчетах Вы не увидите.
            • 0
              Спасибо за ответ. А можно ли передавать как cid номер звонящего его его хеш? Просто мне нужно передавать: номер звонящего и номер на который звонят.
              • 0
                Для события в Google Analytics можно использовать три параметра — категория, действие и ярлык. Можете использовать их как Вам удобно
          • 0
            Не очень понятен момент со стасусами заказов (доставлено, отмена). Где их указывать, где затем смотреть?
            Особые вопросы вызывают что делать с заказами, где заказ был оставлен на одни товары, а затем в процессе обсуждения товары заменены на другие.
            • 0
              А разве междоменные ajax запросы работают?
              • 0
                А можете подсказать, как лучше передавать данные об оформленных, но ещё не оплаченных заказах? То есть планируемый доход по ним.
                У нас заказы поступают сильно заранее (за 1-3 месяца), и для текущей оценки рекламных каналов используются данные об оценке дохода.
                • 0
                  Здравствуйте, Андрей.
                  Ознакомился со Справка по параметрам Measurement Protocol https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters?hl=ru

                  Там есть параметры: доход от транзакции, налог, стоимость доставки.
                  Но нет прибыли (моржи) от сделки. У меня на сайте эта информация известна. Как её передать в Гугл.Анлитикс.

                  Если у меня есть свой счётчик для присвоения ID посетителям. Через какой параметр мне его передать на сайт cid или uid ?

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.