Customer survey form
A short survey with multiple-choice questions and one open question.
Using Tilda? Paste into a T123 block (paid plan) or use the no-code webhook.
What this form is for
A survey gets more answers when it fits on one screen. This one has four questions: three you can count and one open question that tells you something new.
Multiple-choice answers are easy to compare. The open question at the end is where customers tell you what to build or fix next.
The fields that matter
- How did you hear about us?
- Shows which channels bring the customers who stay.
- How often do you use it?
- Separates daily users from people who tried it once.
- Overall satisfaction
- Four steps, from very satisfied to dissatisfied. Track it over time.
- What is missing for you?
- The open question. It often gives you the next feature or service.
Preview
Form code
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Customer survey form</title>
<style>
body { font-family: "Segoe UI", sans-serif; color: #12263a; margin: 0; background: #fff; }
main { max-width: 640px; margin: 0 auto; padding: 32px 20px 64px; }
h1 { font-size: 28px; font-weight: 650; letter-spacing: -0.02em; line-height: 1.2; }
h2 { font-size: 18px; margin: 18px 0 0; }
p { line-height: 1.5; }
form { display: grid; gap: 14px; position: relative; }
.field { display: grid; gap: 6px; }
label span, .check span { font-size: 14px; }
input, select, textarea { font: inherit; color: inherit; padding: 10px 12px; border: 1px solid #b4bdce; border-radius: 8px; width: 100%; box-sizing: border-box; background: #fff; }
textarea { min-height: 96px; }
.check { display: flex; gap: 8px; align-items: flex-start; }
.check input { width: auto; margin-top: 4px; }
button { background: #3c4ad8; color: #fff; border: 0; border-radius: 8px; padding: 12px 18px; font: inherit; cursor: pointer; }
.note { background: #fff6eb; padding: 12px 14px; border-radius: 8px; }
form [data-show-if] { display: none; }
</style>
</head>
<body>
<main>
<h1 data-i18n="title">Customer survey form</h1>
<p data-i18n="lede">A short survey with multiple-choice questions and one open question.</p>
<form id="fg-form" action="https://formgong.com/submit" method="POST" enctype="multipart/form-data" data-sitekey="" data-lang="en">
<input type="hidden" name="access_key" value="fk_your_access_key">
<input type="hidden" name="_lang" value="en">
<div aria-hidden="true" style="position:absolute;inset-inline-start:0;top:0;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)"><label>Leave this field empty<input name="botcheck" tabindex="-1" autocomplete="off"></label></div>
<section><h2 data-i18n="section.about">About you</h2>
<div class="field"><label for="fg-source"><span data-i18n="source">How did you hear about us?</span></label><select id="fg-source" name="source" required><option value="">—</option><option value="search" data-i18n="source.search">Search engine</option><option value="social" data-i18n="source.social">Social media</option><option value="friend" data-i18n="source.friend">A friend</option><option value="ad" data-i18n="source.ad">An ad</option><option value="other" data-i18n="source.other">Other</option></select></div></section>
<section><h2 data-i18n="section.questions">Questions</h2>
<div class="field"><label for="fg-frequency"><span data-i18n="frequency">How often do you use our product or service?</span></label><select id="fg-frequency" name="frequency" required><option value="">—</option><option value="daily" data-i18n="frequency.daily">Every day</option><option value="weekly" data-i18n="frequency.weekly">Every week</option><option value="monthly" data-i18n="frequency.monthly">Every month</option><option value="rarely" data-i18n="frequency.rarely">Rarely</option></select></div>
<div class="field"><label for="fg-satisfaction"><span data-i18n="satisfaction">How satisfied are you overall?</span></label><select id="fg-satisfaction" name="satisfaction" required><option value="">—</option><option value="very_satisfied" data-i18n="satisfaction.very_satisfied">Very satisfied</option><option value="satisfied" data-i18n="satisfaction.satisfied">Satisfied</option><option value="neutral" data-i18n="satisfaction.neutral">Neutral</option><option value="dissatisfied" data-i18n="satisfaction.dissatisfied">Dissatisfied</option></select></div>
<div class="field"><label for="fg-missing"><span data-i18n="missing">What is missing for you?</span></label><textarea id="fg-missing" name="missing" maxlength="1000"></textarea></div>
<div class="field"><label for="fg-email"><span data-i18n="email">Email</span></label><input id="fg-email" name="email" type="email" maxlength="120" autocomplete="email"></div></section>
<!-- Set data-sitekey on this form to YOUR_TURNSTILE_SITE_KEY. Required for attachments. -->
<div data-turnstile></div>
<button type="submit" data-i18n="submit">Send</button>
<p data-status role="status"></p>
</form>
</main>
<script type="application/json" id="fg-labels">{"uk":{"title":"Форма опитування клієнтів","lede":"Коротке опитування з варіантами відповідей і одним відкритим питанням.","submit":"Надіслати","thanks":"Надіслано. Дякуємо.","file_too_big":"До 3 файлів, по 5 MiB, разом до 10 MiB.","error":"Не вдалося надіслати. Спробуйте ще раз.","section.about":"Про вас","source":"Як ви про нас дізналися?","source.search":"Пошуковик","source.social":"Соцмережі","source.friend":"Від знайомого","source.ad":"Реклама","source.other":"Інше","section.questions":"Питання","frequency":"Як часто ви користуєтеся нашим продуктом чи послугою?","frequency.daily":"Щодня","frequency.weekly":"Щотижня","frequency.monthly":"Щомісяця","frequency.rarely":"Рідко","satisfaction":"Наскільки ви задоволені загалом?","satisfaction.very_satisfied":"Дуже задоволений","satisfaction.satisfied":"Задоволений","satisfaction.neutral":"Нейтрально","satisfaction.dissatisfied":"Незадоволений","missing":"Чого вам бракує?","email":"Електронна пошта"},"en":{"title":"Customer survey form","lede":"A short survey with multiple-choice questions and one open question.","submit":"Send","thanks":"Sent. Thank you.","file_too_big":"Up to 3 files, 5 MiB each and 10 MiB combined.","error":"Could not send. Please try again.","section.about":"About you","source":"How did you hear about us?","source.search":"Search engine","source.social":"Social media","source.friend":"A friend","source.ad":"An ad","source.other":"Other","section.questions":"Questions","frequency":"How often do you use our product or service?","frequency.daily":"Every day","frequency.weekly":"Every week","frequency.monthly":"Every month","frequency.rarely":"Rarely","satisfaction":"How satisfied are you overall?","satisfaction.very_satisfied":"Very satisfied","satisfaction.satisfied":"Satisfied","satisfaction.neutral":"Neutral","satisfaction.dissatisfied":"Dissatisfied","missing":"What is missing for you?","email":"Email"},"pl":{"title":"Formularz ankiety dla klientów","lede":"Krótka ankieta z pytaniami jednokrotnego wyboru i jednym pytaniem otwartym.","submit":"Wyślij","thanks":"Wysłano. Dziękujemy.","file_too_big":"Do 3 plików, po 5 MiB, łącznie 10 MiB.","error":"Nie udało się wysłać. Spróbuj ponownie.","section.about":"O Tobie","source":"Skąd o nas wiesz?","source.search":"Wyszukiwarka","source.social":"Media społecznościowe","source.friend":"Od znajomego","source.ad":"Reklama","source.other":"Inne","section.questions":"Pytania","frequency":"Jak często korzystasz z naszego produktu lub usługi?","frequency.daily":"Codziennie","frequency.weekly":"Co tydzień","frequency.monthly":"Co miesiąc","frequency.rarely":"Rzadko","satisfaction":"Jak oceniasz swoje ogólne zadowolenie?","satisfaction.very_satisfied":"Bardzo zadowolony","satisfaction.satisfied":"Zadowolony","satisfaction.neutral":"Ani tak, ani nie","satisfaction.dissatisfied":"Niezadowolony","missing":"Czego Ci brakuje?","email":"E-mail"},"tr":{"title":"Müşteri anketi formu","lede":"Çoktan seçmeli sorular ve bir açık uçlu soru içeren kısa bir anket.","submit":"Gönder","thanks":"Gönderildi. Teşekkürler.","file_too_big":"En fazla 3 dosya, dosya başına 5 MiB, toplam 10 MiB.","error":"Gönderilemedi. Lütfen tekrar deneyin.","section.about":"Hakkınızda","source":"Bizi nereden duydunuz?","source.search":"Arama motoru","source.social":"Sosyal medya","source.friend":"Bir arkadaşımdan","source.ad":"Bir reklam","source.other":"Diğer","section.questions":"Sorular","frequency":"Ürünümüzü veya hizmetimizi ne sıklıkla kullanıyorsunuz?","frequency.daily":"Her gün","frequency.weekly":"Her hafta","frequency.monthly":"Her ay","frequency.rarely":"Nadiren","satisfaction":"Genel olarak ne kadar memnunsunuz?","satisfaction.very_satisfied":"Çok memnunum","satisfaction.satisfied":"Memnunum","satisfaction.neutral":"Kararsızım","satisfaction.dissatisfied":"Memnun değilim","missing":"Size ne eksik geliyor?","email":"E-posta"},"ar":{"title":"نموذج استطلاع العملاء","lede":"استطلاع قصير بأسئلة اختيار من متعدد وسؤال مفتوح واحد.","submit":"إرسال","thanks":"تم الإرسال. شكرًا لك.","file_too_big":"حتى 3 ملفات، 5 MiB لكل ملف و10 MiB إجمالًا.","error":"تعذّر الإرسال. يُرجى المحاولة مرة أخرى.","section.about":"عنك","source":"كيف عرفت عنا؟","source.search":"محرك بحث","source.social":"وسائل التواصل الاجتماعي","source.friend":"صديق","source.ad":"إعلان","source.other":"أخرى","section.questions":"الأسئلة","frequency":"كم مرة تستخدم منتجنا أو خدمتنا؟","frequency.daily":"كل يوم","frequency.weekly":"كل أسبوع","frequency.monthly":"كل شهر","frequency.rarely":"نادرًا","satisfaction":"ما مدى رضاك بشكل عام؟","satisfaction.very_satisfied":"راضٍ جدًا","satisfaction.satisfied":"راضٍ","satisfaction.neutral":"محايد","satisfaction.dissatisfied":"غير راضٍ","missing":"ما الذي ينقصك؟","email":"البريد الإلكتروني"},"he":{"title":"טופס סקר לקוחות","lede":"סקר קצר עם שאלות סגורות ושאלה פתוחה אחת.","submit":"שליחה","thanks":"נשלח. תודה.","file_too_big":"עד 3 קבצים, 5 MiB לכל קובץ ו-10 MiB בסך הכול.","error":"השליחה נכשלה. נסו שוב.","section.about":"עליכם","source":"איך שמעתם עלינו?","source.search":"מנוע חיפוש","source.social":"רשתות חברתיות","source.friend":"חבר","source.ad":"פרסומת","source.other":"אחר","section.questions":"שאלות","frequency":"באיזו תדירות אתם משתמשים במוצר או בשירות שלנו?","frequency.daily":"כל יום","frequency.weekly":"כל שבוע","frequency.monthly":"כל חודש","frequency.rarely":"לעיתים רחוקות","satisfaction":"עד כמה אתם מרוצים באופן כללי?","satisfaction.very_satisfied":"מרוצה מאוד","satisfaction.satisfied":"מרוצה","satisfaction.neutral":"ניטרלי","satisfaction.dissatisfied":"לא מרוצה","missing":"מה חסר לכם?","email":"אימייל"},"es":{"title":"Formulario de encuesta para clientes","lede":"Una encuesta breve con preguntas de opción múltiple y una pregunta abierta.","submit":"Enviar","thanks":"Enviado. Gracias.","file_too_big":"Hasta 3 archivos, 5 MiB cada uno y 10 MiB en total.","error":"No se pudo enviar. Inténtalo de nuevo.","section.about":"Sobre ti","source":"¿Cómo nos conociste?","source.search":"Buscador","source.social":"Redes sociales","source.friend":"Un amigo","source.ad":"Un anuncio","source.other":"Otro","section.questions":"Preguntas","frequency":"¿Con qué frecuencia usas nuestro producto o servicio?","frequency.daily":"Todos los días","frequency.weekly":"Cada semana","frequency.monthly":"Cada mes","frequency.rarely":"Rara vez","satisfaction":"¿Qué tan satisfecho estás en general?","satisfaction.very_satisfied":"Muy satisfecho","satisfaction.satisfied":"Satisfecho","satisfaction.neutral":"Neutral","satisfaction.dissatisfied":"Insatisfecho","missing":"¿Qué echas en falta?","email":"Correo electrónico"},"fr":{"title":"Formulaire d’enquête client","lede":"Une enquête courte avec des questions à choix et une question ouverte.","submit":"Envoyer","thanks":"Envoyé. Merci.","file_too_big":"Jusqu’à 3 fichiers, 5 Mio chacun et 10 Mio au total.","error":"Envoi impossible. Veuillez réessayer.","section.about":"Vous","source":"Comment nous avez-vous connus ?","source.search":"Moteur de recherche","source.social":"Réseaux sociaux","source.friend":"Un ami","source.ad":"Une publicité","source.other":"Autre","section.questions":"Questions","frequency":"À quelle fréquence utilisez-vous notre produit ou service ?","frequency.daily":"Tous les jours","frequency.weekly":"Chaque semaine","frequency.monthly":"Chaque mois","frequency.rarely":"Rarement","satisfaction":"Dans l’ensemble, quel est votre niveau de satisfaction ?","satisfaction.very_satisfied":"Très satisfait","satisfaction.satisfied":"Satisfait","satisfaction.neutral":"Neutre","satisfaction.dissatisfied":"Insatisfait","missing":"Que vous manque-t-il ?","email":"E-mail"},"pt":{"title":"Formulário de inquérito a clientes","lede":"Um inquérito curto com perguntas de escolha múltipla e uma pergunta aberta.","submit":"Enviar","thanks":"Enviado. Obrigado.","file_too_big":"Até 3 ficheiros, 5 MiB cada e 10 MiB no total.","error":"Não foi possível enviar. Tente novamente.","section.about":"Sobre si","source":"Como nos conheceu?","source.search":"Motor de busca","source.social":"Redes sociais","source.friend":"Um amigo","source.ad":"Um anúncio","source.other":"Outro","section.questions":"Perguntas","frequency":"Com que frequência usa o nosso produto ou serviço?","frequency.daily":"Todos os dias","frequency.weekly":"Todas as semanas","frequency.monthly":"Todos os meses","frequency.rarely":"Raramente","satisfaction":"De um modo geral, qual é o seu grau de satisfação?","satisfaction.very_satisfied":"Muito satisfeito","satisfaction.satisfied":"Satisfeito","satisfaction.neutral":"Neutro","satisfaction.dissatisfied":"Insatisfeito","missing":"O que lhe falta?","email":"Email"},"hi":{"title":"ग्राहक सर्वे फ़ॉर्म","lede":"कुछ बहुविकल्पी सवालों और एक खुले सवाल वाला छोटा सर्वे।","submit":"भेजें","thanks":"भेज दिया गया। धन्यवाद।","file_too_big":"अधिकतम 3 फ़ाइलें, हर फ़ाइल 5 MiB तक और कुल 10 MiB।","error":"भेजा नहीं जा सका। कृपया फिर से कोशिश करें।","section.about":"आपके बारे में","source":"आपको हमारे बारे में कैसे पता चला?","source.search":"सर्च इंजन","source.social":"सोशल मीडिया","source.friend":"किसी दोस्त से","source.ad":"एक विज्ञापन","source.other":"अन्य","section.questions":"सवाल","frequency":"आप हमारे प्रोडक्ट या सेवा का कितनी बार इस्तेमाल करते हैं?","frequency.daily":"हर दिन","frequency.weekly":"हर हफ़्ते","frequency.monthly":"हर महीने","frequency.rarely":"कभी-कभार","satisfaction":"कुल मिलाकर आप कितने संतुष्ट हैं?","satisfaction.very_satisfied":"बहुत संतुष्ट","satisfaction.satisfied":"संतुष्ट","satisfaction.neutral":"न संतुष्ट, न असंतुष्ट","satisfaction.dissatisfied":"असंतुष्ट","missing":"आपको क्या कमी लगती है?","email":"ईमेल"},"ja":{"title":"顧客アンケートフォーム","lede":"選択式の質問と自由回答1問の短いアンケートです。","submit":"送信","thanks":"送信しました。ありがとうございます。","file_too_big":"ファイルは3つまで、1つ5 MiB、合計10 MiBまでです。","error":"送信できませんでした。もう一度お試しください。","section.about":"あなたについて","source":"当社を何で知りましたか?","source.search":"検索エンジン","source.social":"SNS","source.friend":"知人の紹介","source.ad":"広告","source.other":"その他","section.questions":"質問","frequency":"当社の製品・サービスをどのくらいの頻度で利用していますか?","frequency.daily":"毎日","frequency.weekly":"毎週","frequency.monthly":"毎月","frequency.rarely":"たまに","satisfaction":"総合的にどのくらい満足していますか?","satisfaction.very_satisfied":"とても満足","satisfaction.satisfied":"満足","satisfaction.neutral":"どちらでもない","satisfaction.dissatisfied":"不満","missing":"足りないと感じることは何ですか?","email":"メールアドレス"},"de":{"title":"Formular für Kundenumfragen","lede":"Eine kurze Umfrage mit Auswahlfragen und einer offenen Frage.","submit":"Senden","thanks":"Gesendet. Vielen Dank.","file_too_big":"Bis zu 3 Dateien, je 5 MiB und insgesamt 10 MiB.","error":"Senden fehlgeschlagen. Bitte versuchen Sie es erneut.","section.about":"Über Sie","source":"Wie haben Sie von uns erfahren?","source.search":"Suchmaschine","source.social":"Soziale Medien","source.friend":"Ein Bekannter","source.ad":"Eine Anzeige","source.other":"Sonstiges","section.questions":"Fragen","frequency":"Wie oft nutzen Sie unser Produkt oder unseren Service?","frequency.daily":"Täglich","frequency.weekly":"Wöchentlich","frequency.monthly":"Monatlich","frequency.rarely":"Selten","satisfaction":"Wie zufrieden sind Sie insgesamt?","satisfaction.very_satisfied":"Sehr zufrieden","satisfaction.satisfied":"Zufrieden","satisfaction.neutral":"Neutral","satisfaction.dissatisfied":"Unzufrieden","missing":"Was fehlt Ihnen?","email":"E-Mail"}}</script>
<script>
function mountCaptcha(node, siteKey) {
if (!node || !siteKey) return () => {};
let disposed = false;
let widget;
function render() {
if (disposed || !window.turnstile) return;
window.turnstile.ready(() => {
if (disposed) return;
widget = window.turnstile.render(node, { sitekey: siteKey, language: node.dataset.language || document.documentElement.lang || "auto" });
node.dataset.widgetId = widget;
});
}
if (window.turnstile) render();
else {
let script = document.querySelector('script[src^="https://challenges.cloudflare.com/turnstile/v0/api.js"]');
if (!script) {
script = document.createElement("script");
script.src = "https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit";
script.async = true;
document.head.appendChild(script);
}
script.addEventListener("load", render, { once: true });
}
return () => { disposed = true; if (widget !== undefined) window.turnstile?.remove(widget); };
}
function resetCaptcha(form) {
const widget = form.querySelector("[data-turnstile]")?.dataset.widgetId;
if (widget !== undefined) window.turnstile?.reset(widget);
}
(function () {
var MAX = 5242880;
var form = document.getElementById("fg-form");
var packNode = document.getElementById("fg-labels");
if (!form || !packNode) return;
var pack = JSON.parse(packNode.textContent);
function code() {
var q = new URLSearchParams(location.search).get("lang") || "";
// ?lang= preview override, then the form language chosen when copying, then the page and browser.
var raw = (q || form.getAttribute("data-lang") || document.documentElement.lang || (navigator.language || "en")).slice(0, 2).toLowerCase();
return pack[raw] ? raw : "en";
}
function apply() {
var dict = pack[code()];
document.querySelectorAll("[data-i18n]").forEach(function (node) {
var key = node.getAttribute("data-i18n");
if (key && typeof dict[key] === "string") node.textContent = dict[key];
});
}
apply();
// CSS hides a conditional field; a hidden field still sends what was typed in it. Switched off, it does not.
function syncShown() {
form.querySelectorAll("[data-show-if]").forEach(function (row) {
var watch = form.elements[row.getAttribute("data-show-if")];
var off = !watch || watch.value !== row.getAttribute("data-show-equals");
row.querySelectorAll("input, select, textarea").forEach(function (control) { control.disabled = off; });
});
}
form.addEventListener("change", syncShown);
syncShown();
var status = form.querySelector("[data-status]");
form.addEventListener("submit", function (event) {
event.preventDefault();
var dict = pack[code()];
var body = new FormData(form);
var files = Array.from(body.values()).filter(function (value) { return value instanceof File && value.size; });
if (files.length > 3 || files.some(function (file) { return file.size > MAX; }) || files.reduce(function (sum,file) { return sum + file.size; },0) > 10 * 1024 * 1024) {
if (status) status.textContent = dict.file_too_big;
return;
}
var button = form.querySelector("button[type=submit]");
if (button) button.disabled = true;
fetch(form.action, { method: "POST", headers: { Accept: "application/json" }, body: body })
.then(function (response) { return response.json(); }).then(function (result) {
if (status) status.textContent = result && result.success ? dict.thanks : ((result && result.message) || dict.error);
}).catch(function () { if (status) status.textContent = dict.error; })
.finally(function () { if (button) button.disabled = false; resetCaptcha(form); });
});
mountCaptcha(form.querySelector("[data-turnstile]"), form.dataset.sitekey);
})();
</script>
</body>
</html>
Code for other frameworks
How to get more requests
- Say how long it takes, for example “4 questions, one minute”.
- Send the survey to people who have used your service at least once.
- Change one question at a time, or you cannot compare results.
Answer every request
Every answer arrives in your email or Telegram and stays in the inbox. Export a CSV for a spreadsheet, or send each answer to Google Sheets. With the optional analytics script, Formgong counts how many people chose each option.
Questions and answers
Can I add more questions?
Yes. The template is plain HTML; add more select or textarea fields with their own name. Keep the survey short to keep answers coming.
Is the survey anonymous?
The email field is optional. Without it, Formgong stores the answers, the time, the page and the browser, and only a hash of the IP address.
Can I send the answers to Google Sheets?
Yes. Connect a Google Sheet in the form settings and each answer becomes a row. Custom columns are available on every plan.