Как в Universal Analytics фиксировать знак # в URL

Если вы сталкивались с задачей по отображению знака # в отчетах Universal Analytics, то наверное обратили внимание, что данные расположенные справа от знака и он сам в отчетах не отображаются. Как решить подобную задачу?

Без дополнительной настройки в Universal Analytics, все что лежит правее знака # и он сам “обрезается”. Например, при переходе по URL вида:

в отчетах отображается следующий URL:

Пример URL без настройки

Пример URL без настройки

Ниже я приведу несколько способов решения этой проблемы.

Небольшое отступление для тех, кто еще использует классическую версию Google Analytics. Вам необходимо в код отслеживания добавить всего одну строчку:

Теперь вернемся к Universal Analytics и рассмотрим два варианта решения:

  1. если у вас используется Google Tag Manager;
  2. если вы используете код отслеживания.

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

Настройки макроса

Настройки макроса

Необходимо указать имя макроса, тип выбрать как URL, а в качестве Типа компонента выбрать Фрагмент. Для строки вида:

макрос вернет значение – 123.

Теперь у нас есть значение после знака # и нам нужно передать данные о нем в Universal Analytics.

Перейдем к настройкам тега Universal Analytics позволяющим указать дополнительные параметры для передачи нужного нам формата URL страницы:

Настройка тега Universal Analytics

Настройка тега Universal Analytics

Обратите внимание, что сначала указывается путь к странице, который должен начинаться со знака слеш – /, затем идет знак #, за которым ранее созданный макрос {{m}} содержащий значение из URL.

В принципе настройка завершена, но есть несколько нюансов:

  1. чтобы не создавать для каждой страницы отдельный тег, где нужно указать /путь к странице, неплохо было бы этот процесс автоматизировать и реализовать в одном теге;
  2. если у нас в URL не содержится фрагмента со знаком #, то мы все равно получим в отчете адрес страницы с # на конце, но без значения после, что не есть хорошо.

Итак, устраним эти моменты. Создадим макрос, который вернет URL текущей страницы без доменного имени сайта:

Макрос для получения URL страницы

Макрос для получения URL страницы

Теперь можно исправить настройки тега Universal Analytics:

Настройки виртуального просмотра

Настройки виртуального просмотра

Обратите внимание, что знак / в начале строки не нужен для такой реализации. Смотрим что будет теперь в Google Analytics:

Результат с # в URL страницы

Результат с # в URL страницы

Чтобы у вас настроенный тег активировался только тогда, когда есть данные в URL, которые необходимо связать с просмотром страницы, используйте для него правило:

Правило активации

Правило активации

Для случаев, когда в URL нет знака # вызывайте тег Universal Analytics без дополнительных настроек используя соответствующее правило по аналогии с приведенным выше.

Второй вариант решения задачи, без Google Tag Manager, заключается в получении нужного фрагмента строки с помощью JavaScript, JQuery или любого другого языка и передачи данных о нем с помощью стандартных средств Universal Analytics. Кратко опишу решение.

Для парсинга (разбора) URL существует несколько различных библиотек, я при подготовке материала использовал эту jsurl. Подключаем ее ОБЯЗАТЕЛЬНО ДО вызова кода Universal Analyics и получаем значение после знака #:

 Теперь зная его, можно передать сведения в Google Analytics с помощью следующего вызова:

Обратите внимание на среднюю строку.

Осталось решить нюансы описанные выше с автоматической подстановкой адреса страницы и передач только если в URL есть знак #. Это не сложно и пусть будет вам домашним заданием.

Кейсы и инструкции по настройке в вашем ящике. Подпишитесь сейчас!

26 комментария(ев) к “Как в Universal Analytics фиксировать знак # в URL

  1. = настроила по первому методу для Universal Analytics,
    но в итоге у меня отображается только /# в гугл
    а части, которая по умолчанию не отслеживается, ее нету.
    настраивала так:
    1. Создала тег для Universal Analytics
    В правилах активации исключила урл содержащий #
    2. Создала макросы n и m
    3. Создала тег для отслеживания хешированных страниц – настроила правило активации, добавила путь к домену, как описано у вас

    В итоге толку нет, все равно возвращает пустое значение у домена, только то, что статично задала, сам хеш
    Напишите подробнее зачем в классическом GA счетчике добавлять строку _gaq.push(['_setAllowAnchor', true]);
    и как она реализована в Universal версии, ничего не нужно добавлять в счетчик Universal Analytics что бы он смог увидеть хешированные части страниц, как для классической версии

    • @Виктория, сложно ответить на подобный вопрос не видя сайта и тех данных, с которыми GTM работает

    • @Виктория, созданные макросы и правила активации нужно размещать не в отдельном теге UA, а в основном. По крайней мере у меня заработало именно так.

  2. Иван, а как обстоит дело с отслеживанием хешей через GTM на страницах, где не происходит новая загрузка, к примеру, в случае переходов по вкладкам прибавляются хеши с разными значениями?

    Какие есть страницы:
    - обычные;
    - с хешами ;
    - страница обычная, но при клике по вкладке а ней добавляется хеш.

    Как я сейчас делаю:
    теги GA и UA на обычных страницах работает (правило – нет хеша)
    теги GA hash и UA hash работает на страницах с хешами (правило на хеш)
    теги GA hash и UA hash работают на вкладках (правило на хеш и gtm.historyChange)

    Проблема в том, что при отладке на страницах с вкладками (где есть хеш) отрабатывает и GA, и GA hash. Один не видит hash, другой видит gtm.historyChange и хеш.

    А на страницах просто с хешем GA hash отрабатывает 2 раза, т.к. сработали оба правила(есть просто хеш И есть хеш с изменением history)

    Итог:
    нужно, чтобы на обычных срабатывал просто GA, на стр. с хешами и на стр, где хеши появляются без загрузки стр. GA hash.
    Никак не получается, уже версий 5 разных создала.

    • @Ксения, добавьте во второй пример с хешами без истории условие, что история не изменятся. Т.е. в третьем Вы проверяете наличие или изменение gtm.historyChange, а во тором сделайте обратное условие с приставкой НЕ.

      • Гузель 15.05.2015 в 19:29 -

        Иван, подскажите, пожалуйста, как реализовать фиксацию хеша в url, если хеш проставляется при переходе по вкладкам (при этом при переходе по вкладкам подгружается только содержимое самой вкладки без загрузки всей страницы). Добавляю gtm.historyChange , UA без хеша его видит, UA c хешем то видит то не видит ( не понимаю в чем проблема), но даже когда видит все равно не срабатывает. не понимаю что не так. Подскажите, плиз, как в принципе алгоритм на таких страницах? Может я делаю что-то не так все-таки.

      • Гузель, нужно разбираться в реализации работы вкладок на Вашем сайте, вариантов как они работают несколько, по этой причине и решение не одно

    • Ксения, подскажите, пожалуйста как у вас работает UA hash на вкладках? Что-то у меня не срабатывает UA hash на вкладках, совсем не видит хеш. Как вы настраивали gtm.historyChange ? Может у меня конкретно в этом проблема…

  3. @Виктория, созданные макросы и правила активации нужно размещать не в отдельном теге UA, а в основном. По крайней мере у меня заработало именно так.

  4. Подскажите как передать название страницы корректно в GA, если использовать gtm.historyChange
    урл приходит – а название некорректное, не видит.

      • function() {
        var u = {{element}};
        return u.ownerDocument.title;
        }
        вот такой макрос по умолчанию
        но название приходит старое – так как обновления страницы не было
        событие gtm.historyChange
        как переписать макрос для history new title не понимаю, а разработчики GTM такой макрос по умолчанию не сделали, а могли бы

      • Из истории получите URL новой страницы, создайте макрос типа “Таблица сопоставления” и в нем от значения URL Новой страницы присваивайте значение макросу, который содержит Title страницы

  5. Добрый день.
    На сайте есть страницы по типу /#insurance
    Мы размещаем код Google Universal не через Tag manager. я поняла, что нам нужно добавить строчку ga(‘set’, ‘page’, ‘/my-page#’ + u.hash );

    но при этом не понятно, где относительно скрипта должна размещаться строка var u = new Url;?

    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
    ga('create', 'UA-ХХХХХХХХ-Х', 'auto');
    ga('set', 'page', '/my-page#' + u.hash );
    ga('send', 'pageview');

    • Мария, определение переменной должно происходить до ее использования. В Вашем случае до кода Universal Analytics

  6. Иван, а как именно мы должны прописать код, если у нас URL в части случаев формируются следующим образом:

    site.domen.ru/#razdel1
    site.domen.ru/#razdel2
    site.domen.ru/#razdel3
    и т.д. ?
    а другая часть:
    site.domen.ru/page1?g=g7y3t98054o
    site.domen.ru/page2?g=…..
    и т.д.
    т.е. у нас по-разному формируются uRL

    Правильно ли нам будет использовать ваш второй пример:
    ga(‘create’, ‘UA-XXXX-Y’, ‘auto’);
    ga(‘set’, ‘page’, ‘/#’ + u.hash );
    ga(‘send’, ‘pageview’);
    ?

    и правильно ли сейчас сформирован код?

    И каким образом в нашем случае можно решить нюанс передачи данных только в случае, если в URL есть знак # ?

    • Мария, не видя сайта и не зная логику его работы можно гадать очень долго. Правильный или нет код нужно смотреть после выяснения описанного ранее, а фиксацию только если есть знак # Вы можете сделать с помощью конструкции JavaScript if(){}

  7. А где это найти?

    “Перейдем к настройкам тега Universal Analytics позволяющим указать дополнительные параметры для передачи нужного нам формата URL страницы:”

    Это настраивается в UA или в GTM? У меня версия 2.0

  8. Иван, добрый день. МЫ установили на сайте GTM 2.0. Перед нами стоит задача собирать статистику по страницам у которых в адресе есть # (хэш). Пример страницы http://www.site.com/#main
    Каким образом это можно настроить в GTM 2.0 ?
    Спасибо.

    • Мария, все аналогично настраивается в Google Tag Manager второй версии, лишь немного отличается интерфейс

  9. Иван, добрый день!
    Попробовала реализовать указанную настройку, но данные по страницам не отправляются в GU.
    Применим ли способ к страницами по типу http://www.site.com/#/for/state ?

    • Какое значение принимает макрос {{Page Path}}? Вероятно у Вас не правильно заданы настройки дополнительных полей в теге Google Analytics

Добавить комментарий

Current month ye@r day *