Отслеживание скопированного текста в Яндекс.Метрике

05 мая, 2023

Для Universal Analytics у меня есть руководство по отслеживанию скопированного текста, для Google Analytics 4 - тоже есть. А почему нет решения для Яндекс.Метрики? Исправляю это досадное недоразумение с помощью Google Tag Manager и параметров визитов.

Итак, если на странице вашего сайта присутствует информация, которую пользователи могут скопировать, то вы не просто можете отслеживать факт совершения данного события, но еще и передавать само значение скопированного текста в Яндекс.Метрику. Это может быть:

  • номер телефона;
  • ваша электронная почта;
  • промокод на скидку;
  • абзац статьи;
  • цитата или какой-то другой полезный контент.

Пользователь может копировать текст на вашем сайте различными способами. Например, через вызов контекстного меню и выбор и пункта Копировать:

Копирование текста через контекстное меню

Через выделение нужного текста и сочетание клавиш Ctrl + C или благодаря дополнительному функционалу сайта, например, иконке буфера обмена:

Копирование текста через иконку буфера обмена

Все такие действия можно отследить и передать вместе с содержимым в Яндекс.Метрику. И инструмент, который я рекомендую использовать для такой задачи - это Google Tag Manager.

Разумеется, можно обойтись и без него. Но в этом случае вам потребуется либо написать подробное техническое задание разработчику с просьбой отправлять JavaScript-событие в Яндекс.Метрику вместе с дополнительным параметром визита, в котором будет передаваться скопированный пользователем текст, либо выполнить отслеживание самостоятельно, что не всегда возможно, особенно, когда вы не владеете навыками программирования

А диспетчер тегов от Google как раз позволяет вам существенно упростить сам процесс настройки без привлечения программиста. Поэтому для отслеживания скопированного текста мы будем использовать именно его. Для этого в Google Tag Manager перейдите в раздел Теги и создайте тег типа Пользовательский HTML тег, добавив в него следующий код:

В GTM это будет выглядеть так:

Код addEventListener в Google Tag Manager

Триггер активации – Все страницы (All Pages).

Функция getSelectionText возвращает текст, который находится в буфере обмена. Метод addEventListener регистрирует обработчик события. В нашем случае – это copy. Событие срабатывает тогда, когда выделение было скопировано в буфер обмена. Затем полученную информацию мы помещаем в уровень данных (dataLayer), в которой есть 3 пары ключ:значение. Это:

  • event – название пользовательского события (textCopied, но может быть другим);
  • clipboardText – фактическое содержимое скопированного текста;
  • clipboardLength – длина скопированного текста (количество символов);

Подробнее о том, как формировать уровни данных и как извлекать из них информацию, читайте в других материалах моего блога:

Теперь вы можете использовать все это при активации триггера и отправке значений в Яндекс.Метрику. Для этого создайте пользовательскую переменную типа Переменная уровня данных со значением clipboardText для извлечения значения скопированного текста:

Переменная уровня данных clipboardText

Для отслеживания количества символов создайте еще одну переменную уровня данных со значением clipboardLength:

Переменная уровня данных clipboardLength

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

Теперь добавьте в контейнер триггер специального события. Если на предыдущем шаге в теге вы не меняли его имя, то это textCopied:

Триггер специального события textCopied

Поскольку отслеживание скопированного текста - это событие, то вам необходимо зайти в свой счетчик Яндекс.Метрики и создать цель типа JavaScript-событие. В качестве идентификатора цели вы можете задать произвольное название, например, copyText с условием совпадает:

JavaScript-событие для копирования текста

Скопируйте код цели, он вам пригодится на следующем шаге настройки в Google Tag Manager. Чтобы передавать значения скопированного текста и его длину конструкции кода цели с методом reachGoal будет недостаточно. Вам необходимо использовать метод params вместе с JavaScript-событием, добавив в конце скопированного кода цели еще один аргумент. Именно в нем будут передаваться дополнительные параметры, именуемые в Метрике параметрами визитов.

Параметры визитов – те данные, которые могут быть привязаны к визиту пользователя. Например, точное время совершенного события, значения выбранных полей формы или введенной в них информации, идентификатор заявки (если он генерируется на вашем сайте), URL-адрес страницы, на которой было совершено это событие, значение промокода или скидки, добавленного в отдельное поле, номер/вариант эксперимента и т.д. и т.п.

Примечание: подробнее о том, как передавать различные параметры визитов (один, несколько, 10, с ценой цели), включая статистические и динамические, читайте в этом материале.

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

, где:

  • XXXXXX – идентификатор счетчика Яндекс.Метрики;
  • reachGoal – метод для отслеживания цели типа JavaScript-событие;
  • target – идентификатор цели:
  • params – параметры визита;

Такую конструкцию вы скопировали из интерфейса Яндекс.Метрики при создании JS-события, но без последнего аргумента params. Именно его вместе с созданными ранее переменными уровня данных требуется прописать в конце кода цели.

В завершение настройки создайте тег типа Пользовательский HTML и вставьте туда свой код цели для события скопированного текста, а в конце кода цели пропишите четвертым параметр визита:

, где вместо XXXXXX  - идентификатор вашего счетчика.

В Google Tag Manager это будет выглядеть так:

Тег Яндекс.Метрики

В качестве триггера активации выберите специальное событие, созданное на предыдущем шаге.

В этом коде четвертым аргументом передаются переменные длины текста и его содержимого, у которых названия Текст и Длина текста соответственно. Вы можете использовать свои собственные написания параметров визита для отличия их в отчетах Яндекс.Метрики.

Сохранив тег и опубликовав изменения в контейнере GTM, проверьте корректность передачи данных с помощью специального расширения Yandex Metrica Debugger или Яндекс.Метрика Инспектор. Для этого зайдите на свой сайт и скопируйте какой-нибудь текст. На шкале отладки вы должны увидеть ваше событие с переданными значениями параметров визита:

Проверка отслеживания скопированного текста (Яндекс.Метрика Инспектор)

Через некоторое время статистика станет доступна в отчетах Яндекс.Метрики. Общее количество достигнутых целей по отслеживанию скопированного текста можно посмотреть в отчете Конверсии:

Отчет по конверсиям

А сами параметры (скопированный текст и его длина) через некоторое время отобразятся в отчете Параметры визитов (Отчет - Содержание - Параметры визитов). Раскрыв список параметра визита Длина текста, вы увидите все значения длины содержимого, а выбрав параметр визита Текст, сможете проанализировать то, какой текст чаще всего копируют пользователи на вашем сайте:

Отчет "Параметры визитов"

Содержимое скопированного текста из моего примера также отобразилось в отчете:

Мой пример скопированного текста

Из вашего отчета может быть удалена часть данных, поскольку детализация до уровня отдельных визитов и посетителей в Яндекс.Метрике отключена для исключения рисков деанонимизации пользователей. Показываются только строки с информацией не менее чем по 10 посетителям. Об этом свидетельствует соответствующая надпись над отчетом:

Из отчета могли быть удалены чувствительные данные

Поэтому если вы не видите никаких данных в отчете Параметры визитов о скопированном тексте, значит, вам нужно больше данных от пользователей и совершенном событии.

Получайте бесплатные уроки и фишки

По контекстной, таргетированной рекламе и аналитике