Исключить параметры запроса URL в Google Analytics 4
В Universal Analytics (GA3) на уровне представления была функция Исключить параметры запроса URL, которая позволяла удалять нежелательные параметры из URL-адресов и получать более правильную статистику в отчетах. Но представлений в Google Analytics 4 нет. Можно ли как-то отсекать хвост с параметрами, идущий после вопросительного знака ? Давайте разбираться!
Как это было в Universal Analytics?
С 1 июля 2023 года ваш ресурс Universal Analytics перестал собирать и обрабатывать данные. Google Analytics 4 - единственный счетчик от Google, который вы должны использовать сегодня.
В параметрах запроса вы можете передавать дополнительную информацию о переходе пользователя на ваш сайт. Это хорошо с точки зрения аналитики, но плохо с точки зрения итоговой отчетности Google Analytics, поскольку возникают сложности анализа полученной статистики по страницам. Давайте чуть освежим в памяти как это было в GA3.
Несколько лет назад в своем блоге я описал проблему на примере параметра запроса fbclid из Facebook *, которые с октября 2018 года стали добавляться к исходящим ссылкам, размещенным в социальной сети. И каждый такой переход по ссылке из Facebook осуществлялся с дополнительным параметром:
* Деятельность американской компании Meta (бывшая Facebook) запрещена в России, организация признана экстремистской.
И когда вы просматривали отчет по страницам в Universal Analytics, то могли наблюдать такую картину:
Страница в таблице одна и та же, но за счет уникального параметра запроса fbclid статистика по одному и тому же URL-адресу "размывалась" на несколько строк (записей), что существенно усложняло анализ по просмотру страниц, ее средней длительности просмотра и другим показателям. Google Analytics по умолчанию собирает данные о каждой уникальной URL-ссылке отдельно.
И такая проблема в GA3 не только с fbclid. У различных рекламных и аналитических систем есть свои параметры запроса, которые могут автоматически подставляться в ваши ссылки. Например, тот же gclid от Google Ads и yclid от Яндекс.Директа в рекламных объявлениях, gtm_debug от режима отладки Google Tag Manager, ysclid от Яндекса для более точного распознавания поисковых фраз, roistat от сервиса сквозной аналитики Roistat, calltouch_tm от сервиса коллтрекинга и сквозной аналитики Calltouch, и многие другие. Есть и системные/технические параметры, который так же могут передаваться в ссылке и которые Google Analytics будет фиксировать. Они могут полезными, поэтому их исключение из отчетов не требуется. Метки UTM тоже являются параметрами запроса URL.
Если параметр запроса не изменяет содержимое вашей страницы, то его можно исключить из отчетов Google Analytics. Для этого владельцы счетчиков Universal Analytics раньше использовали функцию Исключить параметры запроса UR на уровне представления:
Все параметры запроса, которые нужно было исключить, перечислялись в этом поле через запятую. Но в Google Analytics 4 такой настройки нет, как и самих представлений. Как быть?
Стандартный отчет и Исследование
Первым делом, что вы можете посмотреть в GA4 - это стандартный отчет по страницам и экранам. Он находится в разделе Взаимодействие. Выбрав диапазон дат и параметр Путь к странице и класс экрана, вы увидите в таблице все URL-адреса без дополнительных параметров запросов:
Именно благодаря параметру Путь к странице и класс экрана (Page path and screen class) вы можете проанализировать статистику по просмотрам страниц вашего сайта без каких-либо дополнительных параметров запроса. Путь определяется по значению, указанному после домена. Например, в адресе osipenkov.ru/ga4-all/ доменом является osipenkov.ru, а путем к странице - /ga4-all/.
Аналогичным образом вы можете поступить, построив отчет в Исследовании. Для этого требуется выбрать тот же параметр Путь к странице и класс экрана, а в качестве показателя - Просмотры:
Это очень удобно, поскольку из ссылок отсекаются все параметры запроса, и вы можете проанализировать статистику консолидировано по каждой странице вашего сайта.
Но параметр Путь к странице и класс экрана исключает из статистики все параметры, и которые вы хотели, чтобы были исключены, и которые вам были бы полезны для анализа. Как же посмотреть данные в отчетах GA4 с учетом некоторых параметров запроса? Самое простое - это использовать другой параметр Путь к странице и строка запроса (Page path + query string):
Чтобы отобразить статистику только с необходимым параметром запроса, воспользуйтесь фильтром. Для этого выберите параметр Путь к странице и строка запроса и укажите нужный параметр через условие содержит. Например, содержит ?fbclid:
А для отображения всех параметров запроса воспользуйтесь фильтром, указав только вопросительный знак - Путь к странице и строка запроса содержит ?
А как исключить параметры запроса URL в Google Analytics 4?
Способы исключения параметров запроса URL в Google Analytics 4
Существует несколько способов исключения параметров запроса URL в Google Analytics 4:
- вручную при выгрузке данных локально или в Google Таблицы;
- с помощью Google Tag Manager;
- без использования Google Tag Manager;
- работа с параметрами в Google BigQuery.
Рассмотрим каждый из них подробнее.
Исключение вручную
Этот способ никак не влияет на те данные, которые собирает ваш счетчик GA4, а сами преобразования происходят вне интерфейса Google Analytics 4. Для исключения параметров запросов вручную вам необходимо выгрузить статистику из GA4 к себе на компьютер или в Google Таблицы, а уже там совершить поиск по параметрам, замену значений и последующую консолидацию данных.
Чтобы это сделать, создайте Исследование с нужным количеством параметров и показателей, используя в качестве основного Путь к странице и строка запроса, а затем сохраните эти данные с помощью функции экспорта:
Примечание: Исследования ограничены количеством строк 500. Поэтому если у вас запрос за больший диапазон дат или в выборку попадает много страниц с разными параметрами запросов, то ручной способ не самый оптимальный вариант, поскольку вам придется частями выгружать статистику по 500 строк за один экспорт.
Можете сохранить локально на компьютер в формате TSV или CSV, можете выгрузить статистику в Google Таблицы, как удобнее. В качестве примера я буду демонстрировать выгрузку данных в CSV, открыв сохраненный файл с помощью Microsoft Excel. Выглядеть он должен примерно так:
Воспользуйтесь функцией Текст по столбцам, чтобы разделить столбец на несколько, используя в качестве символа-разделителя запятую (,). Тогда вы получите данные в удобочитаемом виде:
Выделив столбец Путь к странице и строка запроса, замените /~?* на / с помощью функции Найти и заменить:
В результате вы получите статистику по страницам без параметров запроса. А используя сводные таблицы или консолидацию данных, вы сможете подсчитать общее количество просмотров страниц для каждого URL.
Если вам не нужно удалять все параметры запросов, а только конкретные, то функция замены будет чуть другой. Просто укажите тот параметр запроса, который требует корректировки. Например:
- для fbclid - Найти и заменить /?fbclid=* на /
- для yclid - Найти и заменить /?yclid=* на /
- для ysclid - Найти и заменить /?ysclid=* на /
- и так далее.
Исключение параметров запроса вручную не всегда удобно, поскольку требует выгрузки данных из интерфейса Google Analytics 4. Но вы можете переопределить параметры запросов перед отправкой данных в GA4, используя диспетчер тегов Google.
Использование Google Tag Manager
Пожалуй, это самый распространенный способ исключения параметров запросов URL в Google Analytics 4, который встречается в материалах других авторов, но в нескольких вариациях. Его реализация заключается в том, что данные до попадания в GA4 проходят небольшую обработку, то есть программно корректируются нужные параметры запроса.
Так как в Google Analytics 4 нет схожего с Universal Analytics функционала на уровне представления и настройки исключения параметров URL, нам необходимо выполнять этот процесс самостоятельно с использованием Google Tag Manager. Сделать это можно с помощью готовых решений от сторонних разработчиков, используя галерею шаблонов сообществ GTM.
Откройте свой контейнер Google Tag Manager и перейдите в раздел Шаблоны. В шаблонных переменных нажмите на Поиск в галерее:
Введите в поиске слово Query. В результатах поиска вам отобразится несколько решений, которые вы можете использовать. Одним из самых популярных является шаблон переменной от CardinalPath - Query Parameter Stripping Utility. Выберите его:
В верхнем правом углу нажмите Добавить в рабочую область:
Добавьте шаблон переменных в свою рабочую область. Теперь на основе этого шаблон создайте переменную, перейдя в раздел Переменные и выбрав пользовательскую переменную Query Parameter Stripping Utility:
В открывшемся окне вы увидите следующие настройки переменной:
- Поле Exclude All Parameters будет игнорировать все параметры, кроме тех, которые указаны в поле These parameters are allowed и которые разрешены в белом списке (по умолчанию в него добавлены параметры gbraid, dclid, gclsrc, gclid, wbraid, utm_source, utm_content, utm_id, utm_medium, utm_campaign, utm_term, utm_source_platform, utm_creative_format, utm_marketing_tactic, srsltid);
- Поле Exclude Certain Parameters будет исключать только те параметры, которые вы добавите в поле Only these parameters will be removed;
- В поле Field which needs parameters removed добавьте встроенную переменную Page URL; из нее будут извлекаться параметры запроса.
Таким образом, перед тем, как создавать данную переменную, вам нужно определить перечень параметров запроса, если вы не хотите исключать все. В блоге Analytics Mania представлен список популярных запросов, которые вы можете исключить:
- gtm_debug
- fbclid
- mc_cid (Mailchimp)
- mc_eid (Mailchimp)
- __s (Drip)
- __hssc (HubSpot)
- __hstc (HubSpot)
- __hsfp (HubSpot)
- _hsenc (HubSpot)
- _ke (Klaviyo)
- hsCtaTracking (HubSpot)
- igshid (Instagram)
- ml_subscriber (MailerLite)
- ml_subscriber_hash (MailerLite)
- msclkid (Microsoft)
- omnisendContactID (Omnisend)
- s_cid (Adobe)
- ef_id (Adobe)
- twclid (Twitter)
Правда он больше заточен на зарубежные порталы. Я бы дополнил его следующими запросами:
- yclid
- ysclid
- _ym_debug
- roistat_visit
- roistat
- roistat_pos
- roistat_referrer
- calltouch_tm
- callibri
- cm_id
- ct_vk
- ct_fb
- и другие
Если вы используете Яндекс.Метрику, то для составления полного списка параметров вам поможет отчет Содержание - По параметрам URL:
Если Яндекс.Метрики на вашем сайте нет, то воспользуйтесь поиском с фильтром ? в Исследовании Google Analytics 4, выписав все значения параметров запросов.
В качестве примера я воспользуюсь своим списком, добавив в переменную следующий набор параметров - yclid, ysclid, _ym_debug, roistat_visit, roistat, roistat_pos, roistat_referrer, calltouch_tm, callibri, cm_id, ct_vk, ct_fb, fbclib, gtm_debug:
Задав переменной имя, сохраните ее.
В завершение вам необходимо отредактировать текущий тег конфигурации Google Analytics 4. Для этого перейдите в раздел Теги и откройте свой существующий тег GA4:
Теперь вам необходимо переопределить параметр GA4, который сохраняет и передает информацию о просмотренных страницах в ваш ресурс Google Analytics. За это отвечает поле page_location. Откройте в теге настройку Поля, которые необходимо задать и добавьте параметр page_location, в качестве значения установив для него созданную ранее пользовательскую переменную:
Сохраните изменения в вашем теге.
Чтобы проверить новую настройку, запустите режим предварительного просмотра GTM. В окне ввода URL добавьте к ссылке вашего сайта несколько параметров запроса, которые вы исключили:
В моем примере, исключены параметры yclid, fbclid, gtm_debug и _ym_debug, а разрешен параметр param1. Он не должен быть исключен из параметров запроса URL в page_location. Все параметры запроса должны быть перечислены через знак амперсанда &
После активации режима отладки перейдите в Google Analytics 4 и откройте инструмент DebugView. На шкале событий найдите page_view, и кликнув на него, откройте параметр page_location. Проверьте, чтобы там не отображались исключенные параметры:
Как видите, исключенных параметров yclid, fbclid, gtm_debug и _ym_debug нет в page_location, а есть только param1, который я не добавлял в список исключения. Значит все работает правильно. После проверки не забудьте опубликовать контейнер Google Tag Manager с изменениями.
Есть и другой вариант, который позволяет обойтись без шаблонов переменных других разработчиков. Он описан в блоге codeboosh.com. Вы можете создать пользовательскую переменную типа Собственный код JavaScript, добавив в нее нижеприведенный код:
1 2 3 4 5 6 7 8 9 10 11 |
function() { if('URLSearchParams' in window) { var pageURL = new URL(window.location.href); pageURL.searchParams.delete('hello'); // измените на свой собственный параметр запроса pageURL.searchParams.delete('goodbye'); // измените на свой собственный параметр запроса // если вам нужно исключить больше параметров запроса, скопируйте строчку выше и вставьте их столько раз, сколько нужно return pageURL.toString(); } else { return window.location.href; } } |
, где вместо значений hello и goodbye в скобках вы задаете свои собственные параметры запроса, которые хотите исключить. Если их больше, то просто скопируйте строку pageURL.searchParams.delete('ваш_параметр_запроса'); и вставьте ее ниже столько раз, сколько нужно, заменив значение в скобках на свое собственное (каждая строка - один параметр запроса):
В качестве примера исключим те же параметры запроса, что и в примере выше для пользовательской переменной на основе шаблона Query Parameter Stripping Utility. В Google Tag Manager это будет выглядеть так:
Задайте значение переменной (например, Исключение параметров URL 2) и сохраните ее. Активируйте режим предварительного просмотра Google Tag Manager, добавив в URL те же параметры для примера. В моем случае - это ссылка https://osipenkov.ru/?_ym_debug=1&yclid=lsdgf&fbclid=ksdgIKNa2¶m1=test + в конце будет добавлен параметр gtm_debug.
После включения режима отладки, на шкале событий откройте вкладку Variables и убедитесь, что только что созданная переменная принимает корректное значение, отсекая параметры запроса, которые были указаны в коде, и оставляет те, которые не были добавлены в переменной Собственный код JavaScript:
Теперь эту переменную вы можете использовать в теге конфигурации GA4 для параметра page_location вместо пользовательской переменной, созданной на основе шаблона Query Parameter Stripping Utility. Результат будет тот же.
Примечание: не исключайте параметр запроса поиска по сайту. В противном случае вы не увидите данных по поисковым запросам, которые вводили пользователи в поиске на вашем сайте.
Без использования Google Tag Manager
Если на вашем сайте не используется диспетчер тегов Google, то вам или вашему разработчику нужно будет вручную отправлять события page_view с помощью вызова gtag, переопределяя значение page_location. Пример кода представлен в официальной документации Google:
1 2 3 |
gtag('config', 'STREAM_ID', { 'page_location': 'URL-адрес' // без параметров запроса }); |
, где STREAM_ID - ваш идентификатор потока Google Analytics 4.
Работа с параметрами запросов в Google BigQuery
Этот способ является продвинутым и предназначен только для тех владельцев счетчика GA4, которые настроили в своем ресурсе связь Google Analytics 4 с Google BigQuery.
В отличие от предыдущего варианта с использованием Google Tag Manager, вы здесь ничего не переопределяете и не настраиваете заранее. Предполагается, что все параметры запроса, которые Google Analytics 4 отслеживает по умолчанию, в таком виде и передаются в ваш счетчик, а затем в BigQuery. Манипуляции со страницами и их URL-адресами уже производятся на стороне облачного хранилища Google BigQuery с помощью SQL-команд. То, что вы делали с данными GA4 после экспорта в Excel (см. выше), в этом примере мы будем делать в самом BigQuery.
Поле page_location в BigQuery по умолчанию GA4 содержит полный URL-адрес страницы, включая любые параметры запроса:
Чтобы сделать его более читабельным и более полезным в отчетах, вы можете исключить протокол и имя хоста, а также любые параметры запроса из строки.
Первый запрос, который вы можете попробовать использовать - это расчет просмотра страниц по page_location:
1 2 3 4 5 6 7 8 9 10 11 |
SELECT (SELECT value.string_value FROM UNNEST(event_params) WHERE event_name = 'page_view' AND key = 'page_location') AS page, COUNTIF(event_name = 'page_view') AS page_views FROM `osipenkovru-373609.analytics_206854065.events_*` WHERE _TABLE_SUFFIX BETWEEN '20230610' AND '20230610' GROUP BY page ORDER BY page_views DESC |
, где вместо osipenkovru-373609.analytics_206854065 вы должны указать название вашего проекта в Google Cloud и набора данных в BigQuery, а в _TABLE_SUFFIX диапазон дат, за которые вы хотите получить статистику. Если желаете получить за конкретный день, то можете указать одно и то же значение для BETWEEN и AND.
Рекомендую к прочтению эти материалы:
- Публичный набор данных BigQuery для Google Analytics 4
- Схема данных Google Analytics 4 в Google BigQuery
- Выполнение запросов нескольких таблиц GA4 events_ с _TABLE_SUFFIX в Google BigQuery
В BigQuery сам запрос и его результат будет выглядеть так:
Для извлечения "чистого пути" без протокола, имени хоста и всех параметров запроса (аналог page_path) вы можете использовать этот SQL-запрос и функцию REGEXP_REPLACE:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
SELECT REGEXP_REPLACE( REGEXP_REPLACE( ( SELECT p.value.string_value FROM UNNEST(event_params) AS p WHERE p.key = 'page_location' ), r'^https?://[^/]+', '' ), r'[\?].*', '' ) AS page_path FROM `osipenkovru-373609.analytics_206854065.events_*` WHERE _TABLE_SUFFIX BETWEEN '20230610' AND '20230610' |
, где вместо osipenkovru-373609.analytics_206854065 вы должны указать название вашего проекта в Google Cloud и набора данных в BigQuery, а в _TABLE_SUFFIX диапазон дат, за которые вы хотите получить статистику. Если желаете получить за конкретный день, то можете указать одно и то же значение для BETWEEN и AND.
В BigQuery сам запрос и его результат извлечения из page_location будет выглядеть так:
Чтобы извлечь определенный параметр запроса из page_location, вы можете использовать нижеприведенную SQL-команду и функцию REGEXP_EXTRACT:
1 2 3 4 5 6 7 8 9 |
SELECT REGEXP_EXTRACT( (SELECT value.string_value FROM UNNEST (event_params) WHERE key = 'page_location'), r'(?:\?|&)yclid=([^&]+)' ) AS yclid FROM `osipenkovru-373609.analytics_206854065.events_*` WHERE _TABLE_SUFFIX BETWEEN '20230610' AND '20230610' |
, где вместо osipenkovru-373609.analytics_206854065 вы должны указать название вашего проекта в Google Cloud и набора данных в BigQuery, а в _TABLE_SUFFIX диапазон дат, за которые вы хотите получить статистику. Если желаете получить за конкретный день, то можете указать одно и то же значение для BETWEEN и AND.
Этот SQL-запрос извлекает значения из параметра yclid, но вы можете поменять значение на любое другое. Например, на fbclid, ysclid, gtm_debug и т.д. Результат в BigQuery будет примерно таким:
Другой пример извлекает параметры запроса страницы во вложенный массив в виде пары ключ-значение, аналогичный массиву event_params по умолчанию. Позже из этого массива можно извлечь нужный параметр в отдельный столбец:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
WITH url_params AS ( SELECT ARRAY( ( SELECT AS STRUCT SPLIT(keyval, '=') [SAFE_OFFSET(0)] AS key, SPLIT(keyval, '=') [SAFE_OFFSET(1)] AS value FROM UNNEST( SPLIT( SPLIT((SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location'), '?') [SAFE_OFFSET(1)], '&' ) ) as keyval ) ) AS url_query, FROM `osipenkovru-373609.analytics_206854065.events_*` WHERE _TABLE_SUFFIX BETWEEN '20230610' AND '20230610' ) SELECT *, -- Извлечение yclid (SELECT value FROM UNNEST(url_query) WHERE key = 'yclid') AS yclid FROM url_params |
, где вместо osipenkovru-373609.analytics_206854065 вы должны указать название вашего проекта в Google Cloud и набора данных в BigQuery, а в _TABLE_SUFFIX диапазон дат, за которые вы хотите получить статистику. Если желаете получить за конкретный день, то можете указать одно и то же значение для BETWEEN и AND.
В качестве примера все параметры запроса заносятся во вложенный массив в виде пары ключ-значение, а затем с помощью конструкции SELECT value FROM UNNEST(url_query) WHERE key = 'yclid' извлекается значение конкретного параметра запроса в отдельный столбец. В данном случае - это yclid:
Примеры SQL-запросов в BigQuery взяты с сайта tanelytics.com
Хотите углубленно изучить Google Analytics 4 и работу с данными в BigQuery? Приглашаю вас на онлайн-обучение GA4&BigQuery!