Formulaire d’enquête NPS
Demandez la probabilité d’une recommandation, de 0 à 10, puis un commentaire facultatif. Un envoi, deux étapes si JavaScript tourne.
Vous utilisez Tilda ? Collez le code dans un bloc T123 (offre payante) ou utilisez le webhook sans code.
Ce que vous copiez
Ce modèle demande quelle est la probabilité qu’un visiteur vous recommande, sur une échelle de 0 à 10, puis propose un commentaire facultatif.
C’est une enquête auprès de vos visiteurs. Ce n’est pas une note de Formgong, et ce site ne publie pas de score pour le produit.
Avec JavaScript, le commentaire est sur une seconde étape. Le script ne montre cette étape qu’après le choix d’un score.
Sans JavaScript, un petit style noscript montre les deux étapes en même temps. Le visiteur peut tout de même envoyer un seul formulaire.
Il y a un seul POST, à la fin. La première étape n’envoie pas une soumission partielle.
Champs que Telegram montrera
Le score est un groupe de boutons radio nommé score. Telegram imprime score, puis le nombre, de 0 à 10.
Le champ de commentaire se nomme comment. L’e-mail est facultatif, nommé email, afin que vous puissiez répondre lorsque quelqu’un laisse une adresse.
N’ajoutez pas un second groupe nommé score. Des boutons radio du même nom sont une seule réponse.
Le honeypot botcheck est inclus, vide et hors de l’écran. Un honeypot rempli est du spam et n’est pas livré.
L’extrait supplémentaire envoie les mêmes réponses en JSON avec fetch, après les étapes. Il a toujours besoin de la clé d’accès dans le formulaire.
Turnstile reste commenté jusqu’à ce que vous l’activiez et colliez une clé de site. YOUR_TURNSTILE_SITE_KEY est un emplacement réservé, pas une clé qui fonctionne.
Ce que ceci n’affirme pas
Le modèle ne calcule pas un indice de promoteurs, un graphique ou un repère. Vous lisez les nombres dans la boîte de réception ou dans Telegram.
Il ne note pas les prospects, et il n’envoie pas les réponses à un modèle de calcul. Le nombre est seulement un champ.
Le gratuit conserve les soumissions pendant 30 jours et en autorise 300 par mois. Telegram est immédiat. Sur la formule gratuite, chaque soumission arrive aussi par e-mail.
Le stockage est dans l’UE. Formgong est l’opérateur. Écrivez à support@formgong.com au sujet du produit.
S’il vous faut un long formulaire de métier au lieu de cette question en deux étapes, utilisez les modèles de métier du hub.
Aperçu
Code du formulaire
<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="fr">
<fieldset data-step="1">
<legend>Quelle est la probabilité que vous nous recommandiez ?</legend>
<p><span>Peu probable</span> <span>Très probable</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>Suivant</button>
</fieldset>
<fieldset data-step="2" hidden>
<label>Que devons-nous savoir ? <textarea name="comment"></textarea></label>
<label>E-mail <input type="email" name="email" autocomplete="email"></label>
<button type="button" data-back>Retour</button>
<button type="submit">Envoyer</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>Laissez ce champ vide <input type="text" name="botcheck" tabindex="-1" autocomplete="off"></label>
</div>
<!--
Facultatif. Activez Turnstile pour ce formulaire, retirez ces marques de commentaire et collez la clé du site.
<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="fr"></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>Les mêmes réponses en un fetch JSON
<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="fr">
<fieldset data-step="1">
<legend>Quelle est la probabilité que vous nous recommandiez ?</legend>
<p><span>Peu probable</span> <span>Très probable</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>Suivant</button>
</fieldset>
<fieldset data-step="2" hidden>
<label>Que devons-nous savoir ? <textarea name="comment"></textarea></label>
<label>E-mail <input type="email" name="email" autocomplete="email"></label>
<button type="button" data-back>Retour</button>
<button type="submit">Envoyer</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>Laissez ce champ vide <input type="text" name="botcheck" tabindex="-1" autocomplete="off"></label>
</div>
<!--
Facultatif. Activez Turnstile pour ce formulaire, retirez ces marques de commentaire et collez la clé du site.
<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="fr"></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 || "Envoyé. Merci !") : ((result && result.message) || "Échec de l’envoi. Veuillez réessayer.");
if (result && result.success) form.reset();
}).catch(function () {
status.textContent = "Échec de l’envoi. Veuillez réessayer.";
});
});
})();
</script>Questions et réponses
Est-ce que 0 est l’extrémité basse ?
Oui. Les boutons radio vont de 0 à 10. Les libellés disent quelle extrémité est basse et laquelle est haute. La valeur stockée est le nombre.
Puis-je rendre le commentaire obligatoire ?
Vous pouvez ajouter l’attribut required sur le textarea. Ce modèle le laisse facultatif afin qu’un score seul puisse être envoyé.
La première étape enregistre-t-elle quelque chose ?
Non. Formgong reçoit une soumission lorsque le formulaire est envoyé. Passer au commentaire n’envoie rien.
Pourquoi l’e-mail est-il facultatif ?
Certaines personnes partageront un score et pas d’adresse. Si vous avez besoin d’un chemin de réponse, dites-le dans le libellé et marquez le champ required.