Страница «Спасибо за заказ» для лендинга: шаблон на 25 языков
Готовая страница «Спасибо за заказ» для лендинга: 25 языков без библиотек, имя и телефон из заявки, noindex и событие Lead в пиксель Facebook без дублей…

Страница «Спасибо за заказ» нужна, чтобы клиент понял: заявка дошла, скоро позвонят, телефон надо держать рядом. Ниже готовый шаблон для лендингов: один HTML-файл без внешних библиотек, 25 языков, показ имени и телефона из заявки, закрытие от индексации и событие Lead в пиксель Facebook без дублей.
Это обновлённая версия статьи 2025 года. Старая страница переводила тексты на лету через бесплатный API MyMemory и у англоязычных посетителей показывала вместо текста «PLEASE SELECT TWO DISTINCT LANGUAGES». Что ещё было не так, разобрано в конце.
- Что должно быть на странице «Спасибо за заказ»
- Как устроен шаблон
- Шаг 1. Скрипт для лендинга
- Шаг 2. Редирект из api.php
- Шаг 3. Файл success.html
- Как выбирается язык
- Имя и телефон: почему не в адресе
- Пиксель Facebook на странице спасибо
- Что было не так со старой версией
- Частые вопросы
- Что написать на странице «Спасибо за заказ»?
- Нужно ли закрывать страницу благодарности от индексации?
- Как подключить thank you page к лендингу в Keitaro?
- Почему страница открывается не на языке лендинга?
- Сработает ли пиксель дважды, если клиент обновит страницу?
Что должно быть на странице «Спасибо за заказ»
- Подтверждение. Короткий заголовок: заказ принят.
- Что будет дальше. Для офферов с подтверждением по телефону это главное: менеджер скоро позвонит, телефон нужно держать рядом.
- Данные из заявки. Имя и номер, которые ушли в партнёрку. Клиент видит опечатку в номере и может отправить форму заново, пока не ушёл со страницы.
- Кнопка назад к форме. Возвращает на лендинг тем же путём, которым клиент пришёл.
- Язык лендинга. Если оффер на испанском, «спасибо» тоже на испанском, даже когда браузер у клиента английский.
- Запрет индексации. Тег
<meta name="robots" content="noindex">: по справке Google он закрывает страницу от всех поисковиков, которые поддерживают это правило. - Событие конверсии. Lead в пиксель, один раз на заявку.

Как устроен шаблон
- Лендинг при отправке формы сохраняет в
sessionStorageимя, телефон и язык страницы, а при открытии ID пикселя и subid клика из Keitaro. api.phpотправляет лид в партнёрку и перенаправляет клиента наsuccess.html.success.htmlвыбирает язык, показывает имя и телефон и один раз отправляет Lead в пиксель.
sessionStorage живёт в пределах вкладки и домена, поэтому лендинг и страница благодарности должны быть на одном домене. Если домены разные, не передавайте имя и телефон в открытой ссылке: используйте серверную сессию или одноразовый идентификатор с получением данных на сервере. Поддержка старого URL-варианта в шаблоне не делает его приватным.
Шаг 1. Скрипт для лендинга
Вставьте в <head> лендинга:
<script>
(function () {
try {
var p = new URLSearchParams(location.search);
if (p.get('pxl')) sessionStorage.setItem('pxl', p.get('pxl'));
var subid = '{subid}'; // Keitaro подставит subid клика
if (subid.charAt(0) !== '{') sessionStorage.setItem('external_id', subid);
} catch (e) {}
})();
document.addEventListener('submit', function (e) {
var form = e.target;
function val(name) {
var el = form.querySelector('[name="' + name + '"]');
return el ? el.value : '';
}
try {
sessionStorage.setItem('lead_name', val('name'));
sessionStorage.setItem('lead_phone', val('phone'));
sessionStorage.setItem('lead_lang', document.documentElement.lang);
} catch (err) {}
});
</script>{subid} Keitaro заменит на ID клика: плейсхолдеры подставляются в HTML локального лендинга, сам трекер в документации так же передаёт {subid} через скрытое поле формы. Если открыть лендинг не через трекер, строка останется {subid}, и скрипт её не сохранит. ID пикселя берётся из параметра pxl в адресе, как в статье про пиксель Facebook на sessionStorage.
Если на лендинге стоит маска телефона с кодом страны, она срабатывает раньше этого скрипта, и на страницу благодарности попадает номер в формате +34612345678. Мы проверили связку в браузере.
Шаг 2. Редирект из api.php
После успешной отправки лида в партнёрку достаточно одной строки редиректа:
<?php
// api.php: лид успешно отправлен в партнёрку
header('Location: success.html');
exit;Если в заявке нашёлся дубль или партнёрка вернула ошибку, ведите клиента на мультиязычную страницу ошибки, а не сюда: Lead в пиксель с неё не уходит.
Шаг 3. Файл success.html
Положите файл в папку лендинга рядом с api.php. Внешних скриптов, шрифтов и картинок в нём нет: страница грузится одним запросом, не считая пикселя.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="robots" content="noindex, nofollow">
<title>Thank you for your order</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: 16px;
background: #f0f0f0;
font-family: -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
color: #2c3e50;
}
.card {
width: 100%;
max-width: 500px;
padding: 32px 24px;
background: #fff;
border-radius: 20px;
box-shadow: 0 8px 20px rgba(0, 0, 0, .15);
text-align: center;
}
h1 { margin: 0 0 16px; font-size: 26px; color: #27ae60; }
p { margin: 0 0 16px; font-size: 17px; line-height: 1.5; }
.data { margin: 20px 0; padding: 0; list-style: none; text-align: start; }
.data li { margin-bottom: 10px; padding: 14px; background: #f7f9fa; border-radius: 10px; font-size: 17px; }
.hint { font-size: 15px; color: #555; }
.button {
display: inline-block;
padding: 14px 28px;
background: #2980b9;
color: #fff;
border-radius: 8px;
text-decoration: none;
}
.button:hover { background: #1e6e99; }
</style>
</head>
<body>
<div class="card">
<h1 data-i18n="h1">Thank you! Your order has been received</h1>
<p data-i18n="text">Our manager will call you shortly to confirm the order. Please keep your phone nearby.</p>
<ul class="data" id="data" hidden>
<li><b data-i18n="name">Name</b>: <span id="name"></span></li>
<li><b data-i18n="phone">Phone</b>: <span id="phone" dir="ltr"></span></li>
</ul>
<p class="hint" id="hint" data-i18n="check" hidden>Made a mistake in your details? Go back and submit the form again.</p>
<a class="button" id="back" href="./" data-i18n="back">Back to the form</a>
</div>
<script>
var I18N = {
en: { title: 'Thank you for your order', h1: 'Thank you! Your order has been received',
text: 'Our manager will call you shortly to confirm the order. Please keep your phone nearby.',
name: 'Name', phone: 'Phone', check: 'Made a mistake in your details? Go back and submit the form again.',
back: 'Back to the form' },
ru: { title: 'Спасибо за заказ', h1: 'Спасибо! Ваш заказ принят',
text: 'Наш менеджер скоро позвонит вам, чтобы подтвердить заказ. Пожалуйста, держите телефон рядом.',
name: 'Имя', phone: 'Телефон', check: 'Ошиблись в данных? Вернитесь назад и отправьте форму ещё раз.',
back: 'Вернуться к форме' },
es: { title: 'Gracias por su pedido', h1: '¡Gracias! Hemos recibido su pedido',
text: 'Nuestro asesor le llamará en breve para confirmar el pedido. Por favor, tenga el teléfono a mano.',
name: 'Nombre', phone: 'Teléfono', check: '¿Hay un error en sus datos? Vuelva atrás y envíe el formulario de nuevo.',
back: 'Volver al formulario' },
pt: { title: 'Obrigado pelo seu pedido', h1: 'Obrigado! Recebemos o seu pedido',
text: 'Em breve entraremos em contato por telefone para confirmar o pedido. Mantenha o telefone por perto.',
name: 'Nome', phone: 'Telefone', check: 'Errou algum dado? Volte e envie o formulário novamente.',
back: 'Voltar ao formulário' },
fr: { title: 'Merci pour votre commande', h1: 'Merci ! Votre commande a bien été reçue',
text: 'Notre conseiller vous appellera bientôt pour confirmer la commande. Gardez votre téléphone à portée de main.',
name: 'Nom', phone: 'Téléphone', check: 'Une erreur dans vos coordonnées ? Revenez en arrière et renvoyez le formulaire.',
back: 'Retour au formulaire' },
de: { title: 'Vielen Dank für Ihre Bestellung', h1: 'Vielen Dank! Ihre Bestellung ist eingegangen',
text: 'Unser Berater ruft Sie in Kürze an, um die Bestellung zu bestätigen. Bitte halten Sie Ihr Telefon bereit.',
name: 'Name', phone: 'Telefon', check: 'Fehler in Ihren Angaben? Gehen Sie zurück und senden Sie das Formular erneut.',
back: 'Zurück zum Formular' },
it: { title: 'Grazie per il tuo ordine', h1: 'Grazie! Abbiamo ricevuto il tuo ordine',
text: "Un nostro operatore ti chiamerà a breve per confermare l'ordine. Tieni il telefono a portata di mano.",
name: 'Nome', phone: 'Telefono', check: 'Hai inserito dati errati? Torna indietro e invia di nuovo il modulo.',
back: 'Torna al modulo' },
pl: { title: 'Dziękujemy za zamówienie', h1: 'Dziękujemy! Twoje zamówienie zostało przyjęte',
text: 'Nasz konsultant wkrótce zadzwoni, aby potwierdzić zamówienie. Prosimy mieć telefon pod ręką.',
name: 'Imię', phone: 'Telefon', check: 'Pomyłka w danych? Wróć i wyślij formularz ponownie.',
back: 'Wróć do formularza' },
ro: { title: 'Vă mulțumim pentru comandă', h1: 'Vă mulțumim! Comanda dumneavoastră a fost primită',
text: 'Un consultant vă va suna în curând pentru a confirma comanda. Vă rugăm să țineți telefonul aproape.',
name: 'Nume', phone: 'Telefon', check: 'Ați greșit datele? Reveniți și trimiteți formularul din nou.',
back: 'Înapoi la formular' },
cs: { title: 'Děkujeme za objednávku', h1: 'Děkujeme! Vaše objednávka byla přijata',
text: 'Náš operátor vám brzy zavolá, aby objednávku potvrdil. Mějte prosím telefon u sebe.',
name: 'Jméno', phone: 'Telefon', check: 'Spletli jste se v údajích? Vraťte se zpět a odešlete formulář znovu.',
back: 'Zpět na formulář' },
hu: { title: 'Köszönjük a rendelését', h1: 'Köszönjük! Rendelését megkaptuk',
text: 'Munkatársunk hamarosan felhívja, hogy megerősítse a rendelést. Kérjük, tartsa kéznél a telefonját.',
name: 'Név', phone: 'Telefon', check: 'Elírta az adatait? Lépjen vissza, és küldje el újra az űrlapot.',
back: 'Vissza az űrlaphoz' },
bg: { title: 'Благодарим ви за поръчката', h1: 'Благодарим ви! Поръчката ви е приета',
text: 'Наш консултант ще ви се обади скоро, за да потвърди поръчката. Моля, дръжте телефона си наблизо.',
name: 'Име', phone: 'Телефон', check: 'Грешка в данните? Върнете се назад и изпратете формуляра отново.',
back: 'Обратно към формуляра' },
el: { title: 'Ευχαριστούμε για την παραγγελία σας', h1: 'Ευχαριστούμε! Η παραγγελία σας ελήφθη',
text: 'Ένας σύμβουλός μας θα σας καλέσει σύντομα για να επιβεβαιώσει την παραγγελία. Παρακαλούμε κρατήστε το τηλέφωνό σας κοντά σας.',
name: 'Όνομα', phone: 'Τηλέφωνο', check: 'Κάνατε λάθος στα στοιχεία σας; Επιστρέψτε και στείλτε ξανά τη φόρμα.',
back: 'Επιστροφή στη φόρμα' },
et: { title: 'Täname tellimuse eest', h1: 'Aitäh! Teie tellimus on vastu võetud',
text: 'Meie konsultant helistab teile peagi, et tellimus kinnitada. Palun hoidke telefon käepärast.',
name: 'Nimi', phone: 'Telefon', check: 'Kas andmetes on viga? Minge tagasi ja saatke vorm uuesti.',
back: 'Tagasi vormi juurde' },
lv: { title: 'Paldies par pasūtījumu', h1: 'Paldies! Jūsu pasūtījums ir saņemts',
text: 'Mūsu konsultants drīz jums piezvanīs, lai apstiprinātu pasūtījumu. Lūdzu, turiet tālruni tuvumā.',
name: 'Vārds', phone: 'Tālrunis', check: 'Kļūda datos? Atgriezieties un nosūtiet veidlapu vēlreiz.',
back: 'Atpakaļ uz veidlapu' },
lt: { title: 'Ačiū už užsakymą', h1: 'Ačiū! Jūsų užsakymas gautas',
text: 'Mūsų konsultantas netrukus paskambins, kad patvirtintų užsakymą. Prašome laikyti telefoną šalia.',
name: 'Vardas', phone: 'Telefonas', check: 'Suklydote duomenyse? Grįžkite atgal ir išsiųskite formą dar kartą.',
back: 'Grįžti į formą' },
tr: { title: 'Siparişiniz için teşekkürler', h1: 'Teşekkürler! Siparişiniz alındı',
text: 'Temsilcimiz siparişi onaylamak için kısa süre içinde sizi arayacak. Lütfen telefonunuzu yanınızda bulundurun.',
name: 'Ad', phone: 'Telefon', check: 'Bilgilerinizde hata mı var? Geri dönüp formu tekrar gönderin.',
back: 'Forma geri dön' },
ar: { title: 'شكرًا لطلبك', h1: 'شكرًا لك! تم استلام طلبك',
text: 'سيتصل بك أحد ممثلينا قريبًا لتأكيد الطلب. يرجى إبقاء هاتفك بالقرب منك.',
name: 'الاسم', phone: 'الهاتف', check: 'هل أخطأت في بياناتك؟ ارجع وأرسل النموذج مرة أخرى.',
back: 'العودة إلى النموذج' },
hi: { title: 'आपके ऑर्डर के लिए धन्यवाद', h1: 'धन्यवाद! आपका ऑर्डर मिल गया है',
text: 'ऑर्डर की पुष्टि के लिए हमारा प्रतिनिधि जल्द ही आपको कॉल करेगा। कृपया अपना फ़ोन पास रखें।',
name: 'नाम', phone: 'फ़ोन', check: 'क्या आपकी जानकारी में कोई गलती है? वापस जाएँ और फ़ॉर्म दोबारा भेजें।',
back: 'फ़ॉर्म पर वापस जाएँ' },
id: { title: 'Terima kasih atas pesanan Anda', h1: 'Terima kasih! Pesanan Anda sudah kami terima',
text: 'Petugas kami akan segera menelepon Anda untuk mengonfirmasi pesanan. Mohon siapkan ponsel Anda.',
name: 'Nama', phone: 'Telepon', check: 'Ada kesalahan pada data Anda? Kembali dan kirim formulir sekali lagi.',
back: 'Kembali ke formulir' },
vi: { title: 'Cảm ơn bạn đã đặt hàng', h1: 'Cảm ơn bạn! Đơn hàng của bạn đã được tiếp nhận',
text: 'Nhân viên của chúng tôi sẽ sớm gọi cho bạn để xác nhận đơn hàng. Vui lòng để điện thoại bên mình.',
name: 'Họ tên', phone: 'Điện thoại', check: 'Bạn nhập sai thông tin? Hãy quay lại và gửi lại biểu mẫu.',
back: 'Quay lại biểu mẫu' },
kk: { title: 'Тапсырысыңыз үшін рахмет', h1: 'Рахмет! Тапсырысыңыз қабылданды',
text: 'Тапсырысты растау үшін менеджеріміз жақын арада сізге қоңырау шалады. Телефоныңызды жаныңызда ұстаңыз.',
name: 'Аты', phone: 'Телефон', check: 'Деректерде қате бар ма? Артқа оралып, форманы қайта жіберіңіз.',
back: 'Формаға оралу' },
uz: { title: 'Buyurtmangiz uchun rahmat', h1: 'Rahmat! Buyurtmangiz qabul qilindi',
text: "Buyurtmani tasdiqlash uchun menejerimiz tez orada sizga qo'ng'iroq qiladi. Iltimos, telefoningizni yaqin joyda saqlang.",
name: 'Ism', phone: 'Telefon', check: "Ma'lumotlarda xato bormi? Orqaga qayting va formani qayta yuboring.",
back: 'Formaga qaytish' },
az: { title: 'Sifarişiniz üçün təşəkkür edirik', h1: 'Təşəkkür edirik! Sifarişiniz qəbul edildi',
text: 'Sifarişi təsdiqləmək üçün menecerimiz tezliklə sizə zəng edəcək. Zəhmət olmasa, telefonunuzu yaxında saxlayın.',
name: 'Ad', phone: 'Telefon', check: 'Məlumatlarda səhv var? Geri qayıdın və formanı yenidən göndərin.',
back: 'Formaya qayıt' },
ka: { title: 'გმადლობთ შეკვეთისთვის', h1: 'გმადლობთ! თქვენი შეკვეთა მიღებულია',
text: 'შეკვეთის დასადასტურებლად ჩვენი მენეჯერი მალე დაგირეკავთ. გთხოვთ, ტელეფონი ახლოს იქონიოთ.',
name: 'სახელი', phone: 'ტელეფონი', check: 'მონაცემებში შეცდომაა? დაბრუნდით უკან და ფორმა ხელახლა გააგზავნეთ.',
back: 'ფორმაზე დაბრუნება' }
};
var DEFAULT_LANG = 'en';
var RTL = ['ar', 'he', 'fa', 'ur'];
function store(key) {
try { return sessionStorage.getItem(key) || ''; } catch (e) { return ''; }
}
function pickLang(params) {
var list = [params.get('lang'), store('lead_lang')].concat(navigator.languages || [navigator.language]);
for (var i = 0; i < list.length; i++) {
var code = String(list[i] || '').slice(0, 2).toLowerCase();
if (I18N) return code;
}
return DEFAULT_LANG;
}
var params = new URLSearchParams(location.search);
var lang = pickLang(params);
var t = I18N[lang];
document.documentElement.lang = lang;
document.documentElement.dir = RTL.indexOf(lang) > -1 ? 'rtl' : 'ltr';
document.title = t.title;
document.querySelectorAll('[data-i18n]').forEach(function (el) {
el.textContent = t[el.getAttribute('data-i18n')];
});
// имя и телефон: из адреса (старая схема) или из sessionStorage
var name = params.get('name') || store('lead_name');
var phone = params.get('phone') || store('lead_phone');
if (name || phone) {
document.getElementById('name').textContent = name;
document.getElementById('phone').textContent = phone;
document.getElementById('data').hidden = false;
document.getElementById('hint').hidden = false;
}
// убираем личные данные из адресной строки и истории
if (params.has('name') || params.has('phone')) {
params.delete('name');
params.delete('phone');
var rest = params.toString();
history.replaceState(null, '', location.pathname + (rest ? '?' + rest : ''));
}
// назад к форме: если пришли с лендинга, возвращаемся по истории, иначе по ссылке
document.getElementById('back').addEventListener('click', function (e) {
if (document.referrer && history.length > 1) {
e.preventDefault();
history.back();
}
});
// Facebook Pixel: событие Lead один раз на заявку
(function () {
var pixelId = store('pxl');
var eventId = store('external_id');
if (!pixelId || (eventId && store('pxl_sent') === eventId)) return;
var url = 'https://www.facebook.com/tr?id=' + encodeURIComponent(pixelId) + '&ev=Lead&noscript=1';
if (eventId) url += '&eid=' + encodeURIComponent(eventId);
new Image(1, 1).src = url;
try { sessionStorage.setItem('pxl_sent', eventId); } catch (e) {}
})();
</script>
</body>
</html>Как выбирается язык
Скрипт проверяет источники по порядку и берёт первый язык, для которого есть перевод:
| Источник | Пример | Когда пригодится |
|---|---|---|
Параметр lang в адресе | success.html?lang=es | Язык задаёт api.php или лендинг на другом домене |
| Язык лендинга | <html lang="es"> на лендинге | Основной вариант, работает со скриптом из шага 1 |
| Языки браузера | navigator.languages | Если лендинг не указал язык |
| Язык по умолчанию | DEFAULT_LANG = 'en' | Если ничего не подошло |
navigator.languages по описанию MDN возвращает языки пользователя в порядке предпочтения. Скрипт берёт из каждого тега две первые буквы, поэтому pt-BR и pt-PT получат один португальский текст. Для арабского выставляется dir="rtl", иначе арабский текст выводится слева направо и знаки препинания встают не на своё место.
В шаблоне 25 языков: английский, русский, испанский, португальский, французский, немецкий, итальянский, польский, румынский, чешский, венгерский, болгарский, греческий, эстонский, латышский, литовский, турецкий, арабский, хинди, индонезийский, вьетнамский, казахский, узбекский, азербайджанский и грузинский. Чтобы добавить язык, скопируйте любой блок в объекте I18N, поменяйте двухбуквенный код и переведите семь строк. Тексты мы переводили сами, перед запуском на новое ГЕО покажите их носителю языка. Про перевод самого лендинга есть отдельная статья: локализация лендингов под ГЕО.
Имя и телефон: почему не в адресе
Старая версия получала имя и телефон параметрами ?name=…&phone=…. Такой адрес остаётся в истории браузера и в логах сервера. Новый шаблон берёт данные из sessionStorage, а если они всё же пришли в адресе, показывает их и сразу убирает из адресной строки через history.replaceState. Остальные параметры, например lang и UTM-метки, остаются.
Значения выводятся через textContent, поэтому HTML в параметрах не выполнится: строку <img src=x onerror=alert(1)> страница покажет как текст.
Пиксель Facebook на странице спасибо
Не ставьте этот блок одновременно с другим кодом, который уже отправляет Lead со страницы благодарности. Пример не содержит управления согласием посетителя и подтверждения доставки события Meta. При недоступном хранилище или отсутствующем ID защита от повторов ограничена.
Событие Lead отправляется картинкой-пикселем. ID события передаётся в параметре eid: так он называется в инструкции Meta по дедупликации для пикселя в теге img. По той же инструкции событие из браузера и из Conversions API считаются дублями, если совпадают имя события и ID. В качестве ID шаблон берёт subid клика из Keitaro. Серверная часть описана в статье Keitaro и Facebook Conversions API.
Чтобы обновление страницы не давало второй Lead, шаблон запоминает отправленный ID в sessionStorage и при повторном открытии событие не шлёт. Если пикселя в sessionStorage нет, блок просто ничего не делает.
Что было не так со старой версией
Старый код из статьи 2025 года мы запустили в headless Chromium с языками браузера en-US, de-DE и ru-RU. Вот что нашли и как это исправлено:
| Проблема | Что было | Как сейчас |
|---|---|---|
| Английский браузер | Страница запрашивала у MyMemory перевод с английского на английский и получала ответ «PLEASE SELECT TWO DISTINCT LANGUAGES». Он попадал в заголовок, текст и кнопку | Переводы лежат в файле, внешних запросов нет |
| Скорость | Шесть запросов к MyMemory на каждый показ, страница скрыта, пока не придут ответы | Тексты подставляются сразу |
| Библиотеки | i18next, jQuery и jquery-i18next ради шести строк | Обычный JavaScript |
| Ссылка в тексте | После перевода ссылка «Back to Home» внутри абзаца пропадала | Ссылки в переводимых строках нет, кнопка отдельная |
| Ошибка в консоли | Скрипт пикселя в <head> вызывал document.body.appendChild до появления body: «Cannot read properties of null» | Пиксель создаётся через new Image() без вставки в страницу |
| ID события | Параметр event_id в ссылке пикселя | eid, как в документации Meta |
| Повторный Lead | Каждое обновление страницы отправляло событие | Одно событие на ID |
| Индексация | Тега noindex не было | Есть |

Новый шаблон прошёл 27 проверок в том же браузере: выбор языка для семи локалей, приоритет ?lang, очистка адреса, вывод данных как текста, полный путь лендинг, api.php, success.html с маской телефона, одно событие Lead с eid и возврат на лендинг по кнопке.
Частые вопросы
Что написать на странице «Спасибо за заказ»?
Что заказ принят, что будет дальше и что для этого нужно от клиента. Для офферов с подтверждением по телефону это звонок менеджера и просьба держать телефон рядом. Покажите имя и номер из заявки, чтобы клиент успел исправить опечатку.
Нужно ли закрывать страницу благодарности от индексации?
Да. Без заявки страница посетителю ничего не даёт, а в выдаче она только собирает случайные визиты. Тег noindex в шаблоне уже стоит.
Как подключить thank you page к лендингу в Keitaro?
Положите success.html в архив лендинга рядом с api.php, добавьте на лендинг скрипт из шага 1, а в api.php после отправки лида сделайте редирект на success.html.
Почему страница открывается не на языке лендинга?
Проверьте атрибут lang у тега <html> на лендинге и то, что скрипт из шага 1 стоит на странице. Если лендинг на другом домене, передайте язык в адресе: success.html?lang=es.
Сработает ли пиксель дважды, если клиент обновит страницу?
Нет. Шаблон запоминает ID отправленного события и повторно его не шлёт. Если subid не сохранился, защиты от повтора нет, поэтому проверьте, что лендинг открывается через кампанию Keitaro.



