Вставляете данный код в HEAD или в GTM, проводите базовую настройку заменяя "kirill.vech@gmail.com" на свою почту, вместо RSY@mail.ru пишите ту почта которая будет подставляться если человек перешел с РСЯ, а для поискового трафика заменяете SEARCH@mail.ru.
В скрипте сделана дополнительная возможность отправки целей в Яндекс Метрику по количеству совершенных подменов почт по источникам SEARCH и CONTEXT.
Чтобы сработала подмена почты требуется в utm_campaign дописать после номера кампании _context или _search, либо вы можете сделать компановку UTM-метки следующим образом: utm_campaign={campaign_id}_{source_type}. Вместо source_type у вас будет подставляться автоматически _context или _search, а вместо campaign_id - ID рекламной кампании.
Чтобы отправлять цели в Яндекс Метрику требуется заменить в коде 'YANDEX_ID_METRIKA' на ID вашего счетчика и создать JS-цели со следующими параметрами: 'goal_rsy_reached' и 'goal_search_reached'. Если значение остаётся "YANDEX_ID_METRIKA" по умолчанию, то цели в Яндекс Метрику отправляться не будут.
В коде дополнительная настройка "emailCookieExpirationDays" отвечает за количество дней на которые сохраняется за пользователем почта с последнего захода на сайт и если в ссылке присутствовал _search или _context. Если выставите 0, то куки сохранятся не будут.
<script>
// Настройки для почты
var originalEmail = 'kirill.vech@gmail.com'; // Почта, которую нужно заменить
var emailForContext = 'mail1@mail.ru'; // Почта для utm_campaign с _context
var emailForSearch = 'mail2@mail.ru'; // Почта для utm_campaign с _search
// Настройки для Яндекс.Метрики
var yandexMetrikaId = 'YOUR_METRIKA_ID'; // ID вашей Яндекс.Метрики
var goalContext = 'goal_context_reached'; // Название цели для _context
var goalSearch = 'goal_search_reached'; // Название цели для _search
// Настройки для cookies
var emailCookieExpirationDays = 21; // Количество дней, на которые запоминается почта (если 0, куки не сохраняются)
// Функция для получения значения параметра UTM из URL
function getUTMParameter(name) {
var urlParams = new URLSearchParams(window.location.search);
return urlParams.get(name);
}
// Функция для записи cookie (если days = 0, cookie не сохраняется)
function setCookie(name, value, days) {
if (days > 0) { // Куки сохраняются только если значение больше 0
var expires = "";
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
document.cookie = name + "=" + (value || "") + expires + "; path=/";
} else {
console.log('Cookies не сохраняются, так как установлен срок действия 0 дней.');
}
}
// Функция для удаления cookie
function deleteCookie(name) {
document.cookie = name + "=; Max-Age=-99999999; path=/";
}
// Функция для чтения cookie
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) === ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
// Функция для замены текста в ссылках и текстовых узлах на странице
function replaceEmail(newEmail) {
// Заменяем email в ссылках
var emailElements = document.querySelectorAll('a[href^="mailto:' + originalEmail + '"]');
emailElements.forEach(function(element) {
element.setAttribute('href', 'mailto:' + newEmail);
element.textContent = newEmail;
});
// Заменяем email в текстовых узлах
var bodyText = document.body.innerHTML;
var emailRegex = new RegExp(originalEmail, 'g');
document.body.innerHTML = bodyText.replace(emailRegex, newEmail);
}
// Функция для отправки цели в Яндекс.Метрику
function sendGoalToYandexMetrika(goalName) {
if (yandexMetrikaId !== 'YOUR_METRIKA_ID') { // Проверяем, что ID метрики не является значением по умолчанию
if (typeof ym !== 'undefined' && ym) {
ym(yandexMetrikaId, 'reachGoal', goalName);
console.log('Цель отправлена в Яндекс.Метрику:', goalName);
} else {
console.error('Яндекс.Метрика не инициализирована.');
}
} else {
console.log('ID Яндекс.Метрики не настроен, цель не отправляется.');
}
}
// Проверка UTM метки, замена почты, запись почты в cookie и отправка целей в Метрику
document.addEventListener('DOMContentLoaded', function() {
var utmCampaign = getUTMParameter('utm_campaign');
var emailToUse = getCookie('user_email'); // Читаем сохранённый email из cookies
if (utmCampaign) {
if (utmCampaign.includes('_context')) {
emailToUse = emailForContext; // Устанавливаем email для _context
replaceEmail(emailToUse);
sendGoalToYandexMetrika(goalContext);
setCookie('user_email', emailToUse, emailCookieExpirationDays); // Сохраняем email в cookie, если указаны дни
} else if (utmCampaign.includes('_search')) {
emailToUse = emailForSearch; // Устанавливаем email для _search
replaceEmail(emailToUse);
sendGoalToYandexMetrika(goalSearch);
setCookie('user_email', emailToUse, emailCookieExpirationDays); // Сохраняем email в cookie, если указаны дни
}
} else if (emailToUse) {
// Если UTM меток нет, но в cookies уже есть сохранённый email, используем его
replaceEmail(emailToUse);
} else {
// Если cookie истекло, удаляем его
deleteCookie('user_email');
}
});
</script>
ТЕЛЕГРАМ-КАНАЛ
ПОМОГАЮЩИЙ МАРКЕТОЛОГ
Делюсь фишками маркетинга, о которых не прочитаешь в интернетах.
Показываю на примерах,
как привожу клиентов
себе и своим клиентам!
Нас уже
ПОМОГАЮЩИЙ МАРКЕТОЛОГ
1733
Полезное
Портфолио