Форма опитування NPS
Запитайте, наскільки відвідувач готовий вас рекомендувати, від 0 до 10, і за бажанням коментар. Одна заявка, два кроки, якщо є JavaScript.
Сайт на Tilda? Вставте код у блок T123 (платний тариф) або підключіть вебхук без коду.
Що ви копіюєте
Цей шаблон питає, наскільки ймовірно, що відвідувач вас порекомендує, за шкалою від 0 до 10, а потім пропонує необов’язковий коментар.
Це опитування ваших відвідувачів. Це не оцінка Formgong, і цей сайт не публікує бал продукту.
З JavaScript коментар стоїть на другому кроці. Скрипт показує цей крок лише після вибору числа.
Без JavaScript невеликий стиль у noscript показує обидва кроки одразу. Відвідувач усе одно може надіслати одну форму.
POST один, наприкінці. Перший крок не надсилає часткову заявку.
Поля, які покаже Telegram
Оцінка — це група радіокнопок із назвою score. Telegram друкує score, а потім число від 0 до 10.
Поле коментаря називається comment. Пошта необов’язкова, з назвою email, щоб можна було відповісти, якщо адресу залишили.
Не додавайте другу групу з назвою score. Радіокнопки з однією назвою — це одна відповідь.
Пастку botcheck включено, вона порожня і поза екраном. Заповнену пастку вважають спамом і не доставляють.
Додатковий сніпет надсилає ті самі відповіді як JSON через fetch, після кроків. Йому все одно потрібен ключ доступу у формі.
Turnstile лишається в коментарі, доки ви не ввімкнете його і не вставите ключ сайту. YOUR_TURNSTILE_SITE_KEY — це заповнювач, не робочий ключ.
Чого цей шаблон не обіцяє
Шаблон не рахує індекс промоутерів, графік чи орієнтир. Числа ви читаєте у вхідних або в Telegram.
Він не оцінює ліди і не надсилає відповіді в модель. Число — це просто поле.
Безкоштовний план зберігає заявки 30 днів і дозволяє 300 на місяць. Telegram надходить одразу. На безкоштовному плані лист надходить на кожну заявку.
Зберігання в ЄС. Оператор — Formgong. Про продукт пишіть на support@formgong.com.
Якщо замість цього питання на два кроки потрібна довга галузева форма, візьміть галузеві шаблони на хабі.
Перегляд
Код форми
<form id="fg-nps" action="https://formgong.com/submit" method="POST" style="position:relative">
<input type="hidden" name="access_key" value="fk_your_access_key">
<input type="hidden" name="_lang" value="uk">
<fieldset data-step="1">
<legend>Наскільки ймовірно, що ви нас порекомендуєте?</legend>
<p><span>Малоймовірно</span> <span>Дуже ймовірно</span></p>
<label><input type="radio" name="score" value="0" required> 0</label>
<label><input type="radio" name="score" value="1" required> 1</label>
<label><input type="radio" name="score" value="2" required> 2</label>
<label><input type="radio" name="score" value="3" required> 3</label>
<label><input type="radio" name="score" value="4" required> 4</label>
<label><input type="radio" name="score" value="5" required> 5</label>
<label><input type="radio" name="score" value="6" required> 6</label>
<label><input type="radio" name="score" value="7" required> 7</label>
<label><input type="radio" name="score" value="8" required> 8</label>
<label><input type="radio" name="score" value="9" required> 9</label>
<label><input type="radio" name="score" value="10" required> 10</label>
<button type="button" data-next>Далі</button>
</fieldset>
<fieldset data-step="2" hidden>
<label>Що нам варто знати? <textarea name="comment"></textarea></label>
<label>Email <input type="email" name="email" autocomplete="email"></label>
<button type="button" data-back>Назад</button>
<button type="submit">Надіслати</button>
</fieldset>
<div aria-hidden="true" style="position:absolute;inset-inline-start:0;top:0;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)">
<label>Залиште це поле порожнім <input type="text" name="botcheck" tabindex="-1" autocomplete="off"></label>
</div>
<!--
Необов’язково. Увімкніть Turnstile для цієї форми, приберіть ці позначки коментаря і вставте ключ сайту.
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
<div class="cf-turnstile" data-sitekey="YOUR_TURNSTILE_SITE_KEY" data-language="uk"></div>
-->
</form>
<noscript><style>[data-step]{display:block}</style></noscript>
<script>
(function () {
var form = document.getElementById("fg-nps");
if (!form) return;
var steps = form.querySelectorAll("[data-step]");
function show(index) {
steps.forEach(function (step, i) { step.hidden = i !== index; });
}
var next = form.querySelector("[data-next]");
var back = form.querySelector("[data-back]");
if (next) next.addEventListener("click", function () {
var picked = form.querySelector('input[name="score"]:checked');
if (!picked) return;
show(1);
});
if (back) back.addEventListener("click", function () { show(0); });
})();
</script>Ті самі відповіді одним JSON-запитом fetch
<form id="fg-nps" action="https://formgong.com/submit" method="POST" style="position:relative">
<input type="hidden" name="access_key" value="fk_your_access_key">
<input type="hidden" name="_lang" value="uk">
<fieldset data-step="1">
<legend>Наскільки ймовірно, що ви нас порекомендуєте?</legend>
<p><span>Малоймовірно</span> <span>Дуже ймовірно</span></p>
<label><input type="radio" name="score" value="0" required> 0</label>
<label><input type="radio" name="score" value="1" required> 1</label>
<label><input type="radio" name="score" value="2" required> 2</label>
<label><input type="radio" name="score" value="3" required> 3</label>
<label><input type="radio" name="score" value="4" required> 4</label>
<label><input type="radio" name="score" value="5" required> 5</label>
<label><input type="radio" name="score" value="6" required> 6</label>
<label><input type="radio" name="score" value="7" required> 7</label>
<label><input type="radio" name="score" value="8" required> 8</label>
<label><input type="radio" name="score" value="9" required> 9</label>
<label><input type="radio" name="score" value="10" required> 10</label>
<button type="button" data-next>Далі</button>
</fieldset>
<fieldset data-step="2" hidden>
<label>Що нам варто знати? <textarea name="comment"></textarea></label>
<label>Email <input type="email" name="email" autocomplete="email"></label>
<button type="button" data-back>Назад</button>
<button type="submit">Надіслати</button>
</fieldset>
<div aria-hidden="true" style="position:absolute;inset-inline-start:0;top:0;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)">
<label>Залиште це поле порожнім <input type="text" name="botcheck" tabindex="-1" autocomplete="off"></label>
</div>
<!--
Необов’язково. Увімкніть Turnstile для цієї форми, приберіть ці позначки коментаря і вставте ключ сайту.
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
<div class="cf-turnstile" data-sitekey="YOUR_TURNSTILE_SITE_KEY" data-language="uk"></div>
-->
</form>
<noscript><style>[data-step]{display:block}</style></noscript>
<script>
(function () {
var form = document.getElementById("fg-nps");
if (!form) return;
var steps = form.querySelectorAll("[data-step]");
function show(index) {
steps.forEach(function (step, i) { step.hidden = i !== index; });
}
var next = form.querySelector("[data-next]");
var back = form.querySelector("[data-back]");
if (next) next.addEventListener("click", function () {
var picked = form.querySelector('input[name="score"]:checked');
if (!picked) return;
show(1);
});
if (back) back.addEventListener("click", function () { show(0); });
})();
</script>
<script>
(function () {
var form = document.getElementById("fg-nps");
if (!form) return;
var status = document.createElement("p");
status.setAttribute("role", "status");
form.appendChild(status);
form.addEventListener("submit", function (event) {
event.preventDefault();
var data = Object.fromEntries(new FormData(form));
fetch("https://formgong.com/submit", {
method: "POST",
headers: { "Content-Type": "application/json", Accept: "application/json" },
body: JSON.stringify(data)
}).then(function (res) { return res.json(); }).then(function (result) {
status.textContent = result && result.success ? (result.message || "Надіслано. Дякуємо!") : ((result && result.message) || "Не вдалося надіслати. Спробуйте ще раз.");
if (result && result.success) form.reset();
}).catch(function () {
status.textContent = "Не вдалося надіслати. Спробуйте ще раз.";
});
});
})();
</script>Питання та відповіді
Чи 0 — це низький край?
Так. Радіокнопки йдуть від 0 до 10. Підписи кажуть, який край низький, а який високий. Збережене значення — це число.
Чи можна зробити коментар обов’язковим?
Можна додати атрибут required на textarea. У цьому шаблоні він необов’язковий, щоб можна було надіслати саме число.
Чи перший крок щось зберігає?
Ні. Formgong отримує одну заявку, коли форму надсилають. Перехід до коментаря нічого не відправляє.
Чому пошта необов’язкова?
Дехто залишить число і не залишить адресу. Якщо потрібен шлях для відповіді, напишіть це в підписі і позначте поле як required.