Копирование контактного email можно отслеживать отдельной целью в Яндекс.Метрике. Показываю, как установить обработчик через Яндекс Тег Менеджер: посетитель выделяет почту на странице, копирует её — скрипт отправляет событие copy_email.
Этот вариант работает с копированием выделенного текста через Ctrl+C, Cmd+C или пункт «Копировать» в меню браузера. В скрипте указываем контактные адреса сайта, которые нужно учитывать. Сам адрес в Метрику не передаётся — только событие.
Создаём цель в Метрике
Открываем нужный счётчик и переходим в «Цели → Добавить цель». Заполняем:
- Название: Копирование почты.
- Тип: Целевое событие.
- Условие: совпадает.
- Идентификатор:
copy_email.
Сохраняем цель. Идентификатор должен совпадать со значением GOAL_ID в коде ниже.
Добавляем скрипт в ЯТМ
В Метрике открываем «Настройки → Счётчик». Включаем Яндекс Тег Менеджер и функцию «Пользовательский HTML», сохраняем изменения. Если они уже включены, переходим к созданию тега.
В разделе «Тег Менеджер → Теги» нажимаем «Добавить тег». Называем его «Копирование почты» и выбираем шаблон «Пользовательский HTML».
Вставляем весь код, включая теги <script>. Перед сохранением заменяем:
12345678— на номер своего счётчика Метрики.info@example.ru— на контактную почту сайта, копирование которой нужно отслеживать.
Если адресов несколько, перечисляем их в строке EMAILS: var EMAILS = ['info@site.ru', 'sales@site.ru'];
<script>
(function () {
'use strict';
var COUNTER_ID = 12345678; // Номер счётчика Метрики
var GOAL_ID = 'copy_email';
var EMAILS = ['info@example.ru']; // Контактные адреса сайта
var guard = '__gmCopyEmail_' + COUNTER_ID + '_' + GOAL_ID;
if (window[guard]) return;
window[guard] = true;
var allowed = EMAILS.map(function (email) {
return email.trim().toLowerCase();
});
document.addEventListener('copy', function (event) {
if (!event.isTrusted) return;
var target = event.target;
if (target && (target.isContentEditable ||
/^(INPUT|TEXTAREA)$/.test(target.tagName))) return;
var text = String(window.getSelection() || '').toLowerCase();
var emails = text.match(/[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\.[a-z0-9-]+)+/g) || [];
var matched = emails.some(function (email) {
return allowed.indexOf(email) !== -1;
});
if (!matched) return;
window.setTimeout(function () {
if (event.defaultPrevented || typeof window.ym !== 'function') return;
window.ym(COUNTER_ID, 'reachGoal', GOAL_ID);
}, 0);
}, true);
})();
</script>Назначаем триггер и публикуем
Добавляем к тегу триггер загрузки страницы «Модель DOM готова» и задаём срабатывание на всех страницах, где нужно отслеживать копирование почты.
Сохраняем тег и публикуем изменения контейнера ЯТМ. После публикации обработчик будет устанавливаться на этих страницах.
Проверяем цель
- Открываем страницу сайта с параметром
?_ym_debug=2. Если в адресе уже есть?, добавляем&_ym_debug=2. - Выделяем контактный email, указанный в скрипте, и копируем его.
- Внизу страницы открываем панель отладки Метрики. На вкладке Events или Console проверяем достижение цели
copy_emailу нужного счётчика. - Копируем обычный текст без этого адреса. Цель
copy_emailсрабатывать не должна.
Скрипт учитывает адрес и внутри выделенного фрагмента текста. Копирование из полей ввода и редактируемых областей пропускается. Повторная установка того же тега не добавляет второй обработчик.
Для отдельной кнопки «Скопировать почту» нужна привязка к её обработчику: этот код отслеживает копирование выделенного текста страницы. Достижение цели показывает действие копирования, а отправку письма не подтверждает.
Ещё больше практических инструкций по рекламе и аналитике — в «Гнусном Маркетинге».
Для обращений через другой способ связи есть отдельная инструкция: как отслеживать отправку сообщения в Telegram в Яндекс.Метрике.