В работе арбитражника существует проблема с дублями заявок от пользователей, обычно такие заявки улетают в треш и значительно портят статистику.
То есть пользователь оставляет заявку, попадает на страницу спасибо, затем переходит обратно и оставляет заявку повторно. Такие заявки нам не нужны и мы избавляемся от них.
🔥 Еще больше полезного контента в нашем Telegram канале 🔥
Одно из решений которое мы уже внедрили в наши связки:
Это “JavaScript” который мы располагаем прямо в “index” файле и вот что он делает:
- В начале скрипта определены сообщения на разных языках, которые могут быть выведены пользователю.
- Затем скрипт получает язык, на котором работает браузер пользователя.
- Следующий шаг — найти форму на странице и находящиеся в ней поля для ввода номера телефона.
- При отправке формы происходит выполнение кода, который проверяет, были ли ранее отправлены данные с таким же номером телефона.
- Если данные уже были отправлены и совпадают с введенными значениями, скрипт выводит сообщение на нужном языке (язык браузера пользователя). Например, если пользователь на английском, выводится сообщение «Data has already been submitted».
- Если данные не найдены или не совпадают с введенными значениями, скрипт сохраняет введенные данные в локальном хранилище браузера. Это позволяет запомнить информацию для будущих сравнений.
- В конце скрипт отправляет данные формы на сервер для обработки.
Таким образом, скрипт проверяет, были ли ранее отправлены данные с таким же именем и номером телефона, и выводит соответствующее сообщение пользователю. Если данные новые, они сохраняются для будущего использования.
Для применения этого решения, в своих промо необходимо сделать следующее :
Первая часть
- Открыть файл “index”
- Добавить код перед </body>
<script>
const messages = {
en: 'Data has already been submitted',
fr: 'Les données ont déjà été soumises',
es: 'Los datos ya han sido enviados',
de: 'Daten wurden bereits übermittelt',
ru: 'Данные уже отправлены',
uk: 'Дані вже відправлені',
it: 'I dati sono già stati inviati',
pt: 'Os dados já foram enviados',
ja: 'データは既に送信されています',
ko: '데이터가 이미 제출되었습니다'
};
const userLang = navigator.language.slice(0, 2); // Получаем язык браузера пользователя
const form = document.querySelector('form'); // Получаем форму
const phoneInput = form.querySelector('input[name="phone"]'); // Получаем поле для ввода номера телефона
form.addEventListener('submit', (event) => {
event.preventDefault(); // Отменяем стандартное поведение при отправке формы
const data = localStorage.getItem('formData'); // Получаем данные из локального хранилища
if (data) {
const { phone } = JSON.parse(data); // Извлекаем сохраненный номер телефона из данных
const formattedPhone = phone.replace(/[^0-9]/g, ''); // Удаляем все символы, кроме цифр
const inputPhone = phoneInput.value.replace(/[^0-9]/g, ''); // Удаляем все символы, кроме цифр
if (formattedPhone === inputPhone) {
// Если сохраненный номер телефона совпадает с введенным номером
alert(messages[userLang] || messages['en']); // Выводим сообщение на нужном языке
return; // Прерываем выполнение кода
}
}
const formData = { phone: phoneInput.value }; // Формируем объект с данными для сохранения
localStorage.setItem('formData', JSON.stringify(formData)); // Сохраняем данные в локальное хранилище
form.submit(); // Отправляем форму
});
</script>
В последствии чего если пользователь оставляет заявку с одним и тем же номером телефона больше 1 раза ему выйдет сообщение прям на главной странице на языке его браузера:
Также вы можете самостоятельно добавить языки которые вам нужны:
Если языка подходящего нет, сообщение будет выходить на английском.
Вторая часть
Второй пункт нужен для того, чтобы отсеять дубли в статистике рекламного кабинета Facebook — сделать так, чтобы при обновлении пользователем страницы Спасибо не показывался пиксель.
Для этого при первом визите юзера ему можно установить куки: «visitedThankYou» и затем проверять: если куки уже установлена — тогда не показывать пиксель.
Чтобы запилить подобный флоу, необходимо показывать пиксель на Спасибо при помощи JavaScript кода, т.е. не просто писать тег <img>, а создавать его вот так:
Прописывается перед закрывающимся </body>
<script>
// Проверяем, не установлена ли куки
if (!document.cookie.match(/visitedThankYou=/)) {
// куки нет, показываем пиксель
const imgElement = document.createElement("img");
imgElement.setAttribute("height", "1");
imgElement.setAttribute("width", "1");
imgElement.setAttribute("src", "https://www.facebook.com/tr?id=" + pxValue + "&ev=Lead&noscript=1");
document.body.appendChild(imgElement);
// Ставим куки, что пользователь уже посетил Спасибо
document.cookie = "visitedThankYou=true";
}
</script>
Не забудьте при использовании этого кода задать значение для pxValue, чтобы прокинуть id пикселя, например, если вы передаёте на Спасибо пиксель в метке px, то первой строкой скрипта добавьте:
const searchParams = new URLSearchParams(window.location.search);
const pxValue = searchParams.get("px");









