Сервисы
Полезное
Портфолио
Блог
Вставляете данный код в HEAD или в GTM и ко всем ссылкам wa.me и api.whatsapp.com будет добавляться сообщение: № обращения (случайные символы с учетом первых запрограммированных Вами). Скрипт протестировал на Tilda в GTM - работает.
<script>
(function() {
// Настройки для генерации первых символов
// Карта соответствия для utm_campaing (ID кампаний)
var campaignMapping = {
'777': 'QR', // Кампания с ID 777 -> первые символы QR
'123': 'QZ' // Кампания с ID 123 -> первые символы QZ
// Добавляйте новые кампании по аналогии
};
// Карта соответствия для utm_source (источников трафика)
var sourceMapping = {
'yandex': 'YD', // Источник Yandex -> первые символы YD
'google': 'GL' // Источник Google -> первые символы GL
// Добавляйте новые источники по аналогии
};
// Карта соответствия для рефереров (поисковых сетей)
var searchEngineMapping = {
'yandex': 'YS', // Переход из поисковой системы Яндекс -> первые символы YS
'google': 'GS' // Переход из поисковой системы Google -> первые символы GS
// Добавляйте новые рефереры по аналогии
};
// Дефолтный префикс, если ничего не найдено
var defaultPrefix = 'XX';
// Функция для генерации случайного текста с указанным префиксом
function generateRandomText(prefix) {
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; // Большие и маленькие буквы, цифры
var randomPart = '';
for (var i = 0; i < 6; i++) {
randomPart += characters.charAt(Math.floor(Math.random() * characters.length));
}
return prefix + randomPart;
}
// Функция для извлечения параметров из URL
function getURLParams() {
var query = window.location.search.substring(1);
var params = {};
var pairs = query.split('&');
for (var i = 0; i < pairs.length; i++) {
var pair = pairs[i].split('=');
params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');
}
return params;
}
// Функция для определения поисковой сети из реферера
function getSearchEngine(referrer) {
if (referrer.indexOf('yandex') > -1) {
return 'yandex';
} else if (referrer.indexOf('google') > -1) {
return 'google';
}
return null;
}
// Логика обработки ссылок WhatsApp
var urlParams = getURLParams(); // Получаем параметры текущего URL
var referrer = document.referrer.toLowerCase(); // Определяем реферер (страница, с которой пришёл пользователь)
var searchEngine = getSearchEngine(referrer); // Определяем, был ли переход из поисковой сети
// Логика определения префикса
var prefix = defaultPrefix; // Начинаем с дефолтного префикса
if (urlParams['utm_campaing'] && campaignMapping[urlParams['utm_campaing']]) {
prefix = campaignMapping[urlParams['utm_campaing']]; // Приоритет для utm_campaing
} else if (urlParams['utm_source'] && sourceMapping[urlParams['utm_source']]) {
prefix = sourceMapping[urlParams['utm_source']]; // Затем проверяем utm_source
} else if (searchEngine && searchEngineMapping[searchEngine]) {
prefix = searchEngineMapping[searchEngine]; // И только потом проверяем реферер
}
// Обновляем ссылки WhatsApp
var links = document.querySelectorAll('a[href*="wa.me"], a[href*="api.whatsapp.com"]');
for (var i = 0; i < links.length; i++) {
var link = links[i];
var linkUrl = (function(href) {
var a = document.createElement('a');
a.href = href;
return {
searchParams: (function(search) {
var params = {};
var pairs = search.replace(/^\?/, '').split('&');
for (var j = 0; j < pairs.length; j++) {
var pair = pairs[j].split('=');
params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');
}
return params;
})(a.search),
setSearchParam: function(key, value) {
this.searchParams[key] = value;
a.search = Object.keys(this.searchParams)
.map(function(k) {
return encodeURIComponent(k) + '=' + encodeURIComponent(this.searchParams[k]);
}, this)
.join('&');
},
toString: function() {
return a.href;
}
};
})(link.href);
var textParam = linkUrl.searchParams['text'];
// Генерируем новый текст
var randomText = generateRandomText(prefix);
var updatedText = textParam
? textParam + ' № обращения: ' + randomText
: '№ обращения: ' + randomText;
// Обновляем параметр text
linkUrl.setSearchParam('text', updatedText);
// Обновляем href ссылки
link.href = linkUrl.toString();
}
})();
</script>
Сервисы
Полезное
Портфолио
Портфолио