Установка и чтение cookie с помощью Google Tag Manager

Google Tag Manager

Для чего может понадобится подобная функция? Например для отслеживания последовательности действий пользователя.

Прежде чем перейдем к установке и чтению cookie в Google Tag Manager, определим что такое cookie. За информацией обратимся к wikipedia.org.

Куки (от англ. cookie — печенье) — небольшой фрагмент данных, отправленный веб-сервером и хранимый на компьютере пользователя. Веб-клиент (обычно веб-браузер) всякий раз при попытке открыть страницу соответствующего сайта пересылает этот фрагмент данных веб-серверу в виде HTTP-запроса. Применяется для сохранения данных на стороне пользователя…

Теперь практика, вначале немного JavaScript. Для установки cookie необходимо использовать следующий вызов:

  • name – имя для cookie;
  • value – значение присваиваемое cookie
  • expires – до какого времени будет “жить” cookie;
  • path – путь, внутри которого будет доступ к cookie;
  • domain - домен, на котором доступно cookie;
  • secure - cookie можно передавать только по HTTPS.

Secure обычно не используются, domain не указывается, если cookie устанавливается для текущего домена, а для path значение / означает, что cookie доступно со всех страниц сайта.

Expires – время (дата) истечения куки в формате GMT. Если дату не указать, то cookie удаляется при закрытии браузера. Если дата в прошлом, то cookie будет удалена.

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

Удобство описанной функции в том, что вы можете передать в качестве expires количество секунд, на которое необходимо установить cookie.

Если вам необходимо получить значение ранее установленной cookie используется следующий вызов:

Выполнение этого кода вернет строку, которая будет содержать список пар имя/значение, разделенных точкой с запятой для всех cookie, которые существуют для текущей страницы:

Как и ранее, для облегчения получения значения ранее установленной cookie используют дополнительные функции, например:

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

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

Установка cookie с именем name до закрытия браузера:

Чтение ранее уставленной cookie с именем name:

Удаление cookie с именем name:

Установка cookie с именем name на сутки:

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

Задайте удобное для вас имя тега, например Функции JavaScript, укажите тип тега Пользовательский тег HTML, затем в поле ввода содержимого тега добавьте первую строку <script> затем разметите функции записи, изменения и удаления cookie, после чего завершающей строкой укажите </script>.

Тег Google Tag Manager с функциями JavaScript

Тег Google Tag Manager с функциями JavaScript

Заполнив поля настройки тега не забудьте указать правила активации, если вам необходима активация тега на всех страницах сайта используйте существующее правило – Все страницы.

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

Создайте новый тег типа Пользовательский тег HTML, укажите произвольное имя и правило активации Все страницы. В поле HTML введите следующий код:

 Краткое пояснение алгоритма:

  1. получаем значение cookie;
  2. проверяем значение cookie и если не установлено, то присваиваем значение 1, если ранее установлено, то увеличиваем значение на единицу больше;
  3. сохраняем обновленное значение cookie.

Обратите внимание на строку:

Отсутствует третий параметр, это значит, что cookie будет “жить” до закрытия браузера, установив его значение, например, в 3600, мы сможем получать cookie в течении часа с момента последнего открытия страницы сайта:

Пример работы описанного процесса в Google Chrome:

Пример работы тега

Пример работы тега

Если Вам понадобится удалить cookie, используйте следующий код:

Если материал оказался полезным и интересным для вас, прошу поделиться им в социальных сетях.

Автор блога: Иванов Иван, практикующий веб-аналитик. Специалист по внедреннию Google Analytics и Яндекс Метрики. Занимаюсь разработкой решений для формирования данных и отчетов по сквозной аналитике. Автор обучающего курса по Google Tag Manager, преподаватель в Нетологии
Еженедельная рассылка кейсов!
Обсуждение
  1. Иван
    14.01.2014 at 13:59

    Мне вот интересно. А на роботов поисковых машин можно вешать куки? Например на Googlebot или Yandexbot. Вы не в курсе? Спасибо.

  2. Иван
    14.01.2014 at 16:39

    Добрый день, Иван!
    С подобной задачей не сталкивался. Вопрос в технической реализации, ведь cookie хранится на стороне того, кто заходит на страницу. Они могут быть настроены таким образом, что не будут приниматься браузером клиента, а как устроены пауки поисковиков – это только гадать можно.

  3. Михаил
    15.01.2014 at 16:52

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

  4. Stijit
    15.01.2014 at 17:47

    Да, роботы куки не принимают

  5. Maxim
    14.05.2015 at 16:21

    Спасибо за статью, очень интересно.

    А можно ли как то создать правило активации тега, при наличии определенного кука у пользователя? если да,то как ? )

    • Ответ автора
      15.05.2015 at 09:34

      Да возможно. Нужно использовать код, который прочитает нужную cookie и получит из нее значение. Дальше все строится на основе полученного значения

  6. Алексей
    14.07.2015 at 18:08

    Немогли бы Вы привести пример полного скрипта для отслеживания кук?

    • Ответ автора
      14.07.2015 at 19:11

      Алексей, а какого функционала Вам не хватает в описанном коде?

      • Ответ автора
        21.07.2015 at 13:26

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

  7. Ярослав
    14.08.2015 at 13:29

    Иван, спасибо за публикацию!

    Вопрос: в правой части выражения document.cookie = … – это же обычная строка? Есть у вас идеи, почему здесь не использовался объект? Ведь структура “ключ : значение” к тому располагала.

    • Ответ автора
      16.08.2015 at 22:58

      Ярослав, я использую документацию в таких случаях. Согласно документации значения описываются так, как приведено у меня в материале. Возможен дли другой вариант? Не знаю, я не пробовал другой реализации

      • Ярослав
        25.08.2015 at 18:09

        Иван, я не имел в виду, что у вас что-то неправильно:) просто для себя хотел понять внутреннюю особенность кукис (почему строка, а не объект – чем обусловлен такой выбор разработчиками? наверное, чем-то обусловлен таки).

  8. Kirill
    25.04.2016 at 13:52

    Иван, скажите, а можно получится ли таким образом записывать куку для другого домена?
    У меня страница регистрации вынесена на поддомен, задача что бы при регистрации на поддомене срабатывал пиксель по определенной куке

    • Ответ автора
      25.04.2016 at 14:38

      Cookie могут быть установлены и прочитаны только на своем домене

      • Kirill
        26.04.2016 at 19:23

        даже если на домене и поддомене у меня установлен один и тот же GTM?
        А можно каким-то образом пробрасывать какой-нибудь другой параметр, по которому можно было бы запускать тег на поддомене

      • Ответ автора
        28.04.2016 at 11:13

        Установка и область “чтения/видимости” cookie, это вопрос безопасности на уровне браузера. Для того, чтобы решить Вашу задачу нужно изучать реальный сайт и настройки

  9. Ян
    09.10.2016 at 16:48

    Иван, подскажите, пожалуйста, почему расчет переменной может вызываться много раз?
    Для примера похожего на описанный выше я получаю “Здравствуйте! Это ваше первое посещение!” – 12 раз. Как проверить когда происходит “расчет” переменной?

    • Ответ автора
      09.10.2016 at 19:21

      Ян, проверьте устанавливаются ли у Вас cookie, скорее всего не происходит ее запись, скрипт пытается прочитать данные и не находит их

      • Ян
        09.10.2016 at 23:27

        Если я правильно понял, то скрипт не находит cookie и выводит ‘Здравствуйте! Это ваше первое посещение! – это правильно, но почему 12 раз не понятно.

        Сейчас проверил на другом примере {{myCounterTest}}
        “function ()
        {
        var myCounterTest = 0;
        console.log(myCounterTest);
        return;
        }”
        вызов этой переменной происходит 12 раз.
        Ни в каком из тегов новая переменная не участвует.

      • Ответ автора
        12.10.2016 at 22:18

        Ян, посмотрите в отладчике, сколько раз и при каких условиях активируется тег содержащий код работы с Cookie

      • Ян
        21.10.2016 at 10:40

        Иван, спасибо, разобрался.
        Не внимательно читал статью и запись в куку делал в переменной, а не в теге.
        А так как переменные считается несколько раз (до сих пор не понятно почему), то итоговый результат выходил больше (на кол-во расчетов переменной).

  10. Олег
    13.02.2017 at 17:32

    Иван, огромное спасибо за Ваши статьи! Очень доступно всегда излагаете!
    Вопрос: а как быть, если нам значение прочитанное из куки нужно передать в аналитику, например, в качестве параметра. Т.е. вопрос даже шире, как присвоить какой-либо переменной из GTM значение кастомного JS (в нашем случае чтение из куки)?
    Заранее большое спасибо!!!

  11. Олег
    14.02.2017 at 14:32

    Сморозил, пардон) Это ж через уровень данных и решается.

  12. Сергей
    05.04.2017 at 01:24

    Иван, добрый день. Требуется установить куку на 14 дней каждому пользовальзователю зашедшему из яндекс директ в гугланалитк с utm-metkami. Как можно ето реализовать в техническом плане например через GTM, какую функцию для етого и скрипт использовать.
    Заранее спасибо

    • Ответ автора
      08.04.2017 at 00:47

      Сергей, нужно по источнику ссылки определить нужный Вам источник и параметры, далее по этим данным настроить логику работы

  13. Максим
    20.05.2017 at 11:58

    Добрый день,
    Есть задача.
    Необходимо записывать в память пользователей информацию в кукис информация с другого домена. Но эта информация постоянна.
    Тоесть любой посетитель зашедший на сайт должен “схватить” нужную кукис.
    Как реализовать ?
    bkkex2023@gmail.com

    • Ответ автора
      22.05.2017 at 11:01

      Добрый день, Максим! Не совсем понятна задача. Если я правильно ее понял, то нужно из одной куки получить значение и записать в нужную, но “чужие” куки сайт не сможет считать

  14. Екатерина
    09.06.2017 at 16:21

    Добрый день!

    Коллеги, есть такой вопрос, никак не можем разобраться в чем причина(

    GA явно задваивает данные по Пользователям

    мы создали страницу на домене 3го уровня – повесили на него код ГА,
    далее перед нами стояла задача повесить коды событий на видео с YouTube которые размещаются на этой странице

    реализовывали мы это впервые и по инструкции

    lunametrics.com/labs/recipes/youtube-tracking/

    но в Таг Менеджере мы дополнительно ничего не настраивали ( но данные по событиям видео мы видим в GA

    на сколько мы понимаем 1 уник срабатывает через код GA , и он же через событие

    сейчас не можем понять где именно задвоение данных происходит, и как это поправить ((

    • Ответ автора
      11.06.2017 at 10:28

      Екатерина, для решения вопроса необходима ссылка на страницу, где у Вас возникает проблема

  15. Антон
    09.06.2017 at 19:44

    Доброго времени суток!
    Подскажите, а как быть, если на сайте страницы категорий и товаров не отличаются (ЧПУ), а страницы надо как то разделять в аналитике, можно ли их как-то разметить через код шаблона страниц (например поставить метки в коде этих страниц), т.е. виртуальная страница не через размеченный клик, а через просмотр размеченной страницы.. простите что так запутанно..

    • Ответ автора
      11.06.2017 at 10:30

      Антон, добрый день! Вероятно на странице есть информация о текущем разделе, которая видна пользователю. По ней можно настроить логику работы Google Tga Manager нужным образом

  16. Ivan
    15.07.2017 at 17:26

    Здравствуйте Иван
    Подскажите, а можно ли считывать cookie другого сайта?
    Например: cookie была установлена на сайте site1.ru, а я хочу считать ее с помощью GTM на своем сайте и настроить фильтр для этих пользователей имеющих эту cookie другого сайта.
    Спасибо!

    • Ответ автора
      20.07.2017 at 22:47

      Здравствуйте. Нет нельзя, это сделано для безопасности

      • Ivan
        28.07.2017 at 18:21

        Здравствуйте Иван
        Даже при условии, если я знаю название этой cookie и ее значение?
        Спасибо!

      • Ответ автора
        29.07.2017 at 15:07

        В любом случае

Ваш комментарий
Выберите рубрику
Google Analytics (69)
Google Tag Manager (57)
Яндекс Метрика (8)
Обзоры (3)
Power BI (3)
Яндекс Директ (2)
Последние публикации
Последние комментарии