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

Google Tag Manager
Бесплатная версия онлайн курса по Google Tag Manager

7 уроков, более 2 часов обучающих видео материалов. Вы можете начать изучение прямо сейчас!

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

Прежде чем перейдем к установке и чтению 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

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

  17. Дмитрий
    03.10.2018 at 19:27

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

    • Ответ автора
      06.10.2018 at 18:47

      Дмитрий, в материале описано все, что для этого необходимо

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