Отслеживание скопированного текста в Яндекс.Метрике
Для Universal Analytics у меня есть руководство по отслеживанию скопированного текста, для Google Analytics 4 - тоже есть. А почему нет решения для Яндекс.Метрики? Исправляю это досадное недоразумение с помощью Google Tag Manager и параметров визитов.
Итак, если на странице вашего сайта присутствует информация, которую пользователи могут скопировать, то вы не просто можете отслеживать факт совершения данного события, но еще и передавать само значение скопированного текста в Яндекс.Метрику. Это может быть:
- номер телефона;
- ваша электронная почта;
- промокод на скидку;
- абзац статьи;
- цитата или какой-то другой полезный контент.
Пользователь может копировать текст на вашем сайте различными способами. Например, через вызов контекстного меню и выбор и пункта Копировать:
Через выделение нужного текста и сочетание клавиш Ctrl + C или благодаря дополнительному функционалу сайта, например, иконке буфера обмена:
Все такие действия можно отследить и передать вместе с содержимым в Яндекс.Метрику. И инструмент, который я рекомендую использовать для такой задачи - это Google Tag Manager.
Разумеется, можно обойтись и без него. Но в этом случае вам потребуется либо написать подробное техническое задание разработчику с просьбой отправлять JavaScript-событие в Яндекс.Метрику вместе с дополнительным параметром визита, в котором будет передаваться скопированный пользователем текст, либо выполнить отслеживание самостоятельно, что не всегда возможно, особенно, когда вы не владеете навыками программирования
А диспетчер тегов от Google как раз позволяет вам существенно упростить сам процесс настройки без привлечения программиста. Поэтому для отслеживания скопированного текста мы будем использовать именно его. Для этого в Google Tag Manager перейдите в раздел Теги и создайте тег типа Пользовательский HTML тег, добавив в него следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<script> function getSelectionText() { var text = ''; if (window.getSelection) { text = window.getSelection().toString(); } else if (document.selection && document.selection.type != 'Control') { text = document.selection.createRange().text; } return text; } document.addEventListener('copy', function(e){ dataLayer.push({ 'event': 'textCopied', 'clipboardText': getSelectionText(), 'clipboardLength': getSelectionText().length }); }); </script> |
В GTM это будет выглядеть так:
Триггер активации – Все страницы (All Pages).
Функция getSelectionText возвращает текст, который находится в буфере обмена. Метод addEventListener регистрирует обработчик события. В нашем случае – это copy. Событие срабатывает тогда, когда выделение было скопировано в буфер обмена. Затем полученную информацию мы помещаем в уровень данных (dataLayer), в которой есть 3 пары ключ:значение. Это:
- event – название пользовательского события (textCopied, но может быть другим);
- clipboardText – фактическое содержимое скопированного текста;
- clipboardLength – длина скопированного текста (количество символов);
Подробнее о том, как формировать уровни данных и как извлекать из них информацию, читайте в других материалах моего блога:
Теперь вы можете использовать все это при активации триггера и отправке значений в Яндекс.Метрику. Для этого создайте пользовательскую переменную типа Переменная уровня данных со значением clipboardText для извлечения значения скопированного текста:
Для отслеживания количества символов создайте еще одну переменную уровня данных со значением clipboardLength:
Вы можете создать обе переменных, чтобы вместе с событием скопированного текста в Метрику отправлять два параметра визита - и сам текст, и его длину в символах.
Теперь добавьте в контейнер триггер специального события. Если на предыдущем шаге в теге вы не меняли его имя, то это textCopied:
Поскольку отслеживание скопированного текста - это событие, то вам необходимо зайти в свой счетчик Яндекс.Метрики и создать цель типа JavaScript-событие. В качестве идентификатора цели вы можете задать произвольное название, например, copyText с условием совпадает:
Скопируйте код цели, он вам пригодится на следующем шаге настройки в Google Tag Manager. Чтобы передавать значения скопированного текста и его длину конструкции кода цели с методом reachGoal будет недостаточно. Вам необходимо использовать метод params вместе с JavaScript-событием, добавив в конце скопированного кода цели еще один аргумент. Именно в нем будут передаваться дополнительные параметры, именуемые в Метрике параметрами визитов.
Параметры визитов – те данные, которые могут быть привязаны к визиту пользователя. Например, точное время совершенного события, значения выбранных полей формы или введенной в них информации, идентификатор заявки (если он генерируется на вашем сайте), URL-адрес страницы, на которой было совершено это событие, значение промокода или скидки, добавленного в отдельное поле, номер/вариант эксперимента и т.д. и т.п.
Примечание: подробнее о том, как передавать различные параметры визитов (один, несколько, 10, с ценой цели), включая статистические и динамические, читайте в этом материале.
Таким образом, конструкция, которую вам необходимо использовать для передачи параметров визита вместе с событием, следующая:
1 |
ym(XXXXXX, 'reachGoal', target, params); |
, где:
- XXXXXX – идентификатор счетчика Яндекс.Метрики;
- reachGoal – метод для отслеживания цели типа JavaScript-событие;
- target – идентификатор цели:
- params – параметры визита;
Такую конструкцию вы скопировали из интерфейса Яндекс.Метрики при создании JS-события, но без последнего аргумента params. Именно его вместе с созданными ранее переменными уровня данных требуется прописать в конце кода цели.
В завершение настройки создайте тег типа Пользовательский HTML и вставьте туда свой код цели для события скопированного текста, а в конце кода цели пропишите четвертым параметр визита:
1 2 3 4 5 |
<script> var copyParams = {'Копирование текста': {'Текст':{{clipboardText}}, 'Длина текста': {{clipboardLength}} }}; ym(XXXXXX,'reachGoal','copyText', copyParams) </script> |
, где вместо XXXXXX - идентификатор вашего счетчика.
В Google Tag Manager это будет выглядеть так:
В качестве триггера активации выберите специальное событие, созданное на предыдущем шаге.
В этом коде четвертым аргументом передаются переменные длины текста и его содержимого, у которых названия Текст и Длина текста соответственно. Вы можете использовать свои собственные написания параметров визита для отличия их в отчетах Яндекс.Метрики.
Сохранив тег и опубликовав изменения в контейнере GTM, проверьте корректность передачи данных с помощью специального расширения Yandex Metrica Debugger или Яндекс.Метрика Инспектор. Для этого зайдите на свой сайт и скопируйте какой-нибудь текст. На шкале отладки вы должны увидеть ваше событие с переданными значениями параметров визита:
Через некоторое время статистика станет доступна в отчетах Яндекс.Метрики. Общее количество достигнутых целей по отслеживанию скопированного текста можно посмотреть в отчете Конверсии:
А сами параметры (скопированный текст и его длина) через некоторое время отобразятся в отчете Параметры визитов (Отчет - Содержание - Параметры визитов). Раскрыв список параметра визита Длина текста, вы увидите все значения длины содержимого, а выбрав параметр визита Текст, сможете проанализировать то, какой текст чаще всего копируют пользователи на вашем сайте:
Содержимое скопированного текста из моего примера также отобразилось в отчете:
Из вашего отчета может быть удалена часть данных, поскольку детализация до уровня отдельных визитов и посетителей в Яндекс.Метрике отключена для исключения рисков деанонимизации пользователей. Показываются только строки с информацией не менее чем по 10 посетителям. Об этом свидетельствует соответствующая надпись над отчетом:
Поэтому если вы не видите никаких данных в отчете Параметры визитов о скопированном тексте, значит, вам нужно больше данных от пользователей и совершенном событии.