Webflow
Envoyez un Form Block Webflow vers Ikiform avec une action personnalisée, gardez les états de succès et d'erreur de Webflow avec un court script, et autorisez votre site de staging webflow.io.
Le Form Block de Webflow peut envoyer vers n'importe quelle URL. Faites pointer son action vers votre endpoint Ikiform : le formulaire garde la mise en page et les styles créés dans le Designer, tandis qu'Ikiform valide, filtre le spam, stocke, envoie les e-mails et les webhooks.
Ce que change une action personnalisée
- Webflow ne traite un formulaire que s'il en est la destination. Avec une action personnalisée, le navigateur envoie directement à Ikiform : la soumission n'apparaît donc pas dans les soumissions de formulaire de Webflow, et Webflow n'envoie aucun e-mail de notification.
- Les destinations propres à Webflow ne peuvent pas coexister avec une action personnalisée. Retirez-les sous Send to avant d'ajouter Ikiform.
- Les blocs de succès et d'erreur de Webflow (
.w-form-doneet.w-form-fail) et le réglage de redirection du formulaire cessent de fonctionner, car Webflow ne voit jamais le résultat. Les visiteurs arrivent sur la page de remerciement d'Ikiform ou sur votre URL Redirect after submit. L'étape 4 rétablit les blocs de Webflow.
Configurez le formulaire
Faites pointer le formulaire vers Ikiform
Sélectionnez le formulaire dans le Form Block et ouvrez le panneau Settings. Sous Send to, choisissez une action personnalisée, collez votre endpoint dans Action et réglez Method sur POST.
Action https://ikiform.com/f/frm_xxxxxxxxxxxxxxxxSi la méthode reste sur GET, le navigateur ouvre l'endpoint comme une page, qui répond
404 not_found. Ikiform n'accepte que des POST.Nommez les champs
Le réglage Name de chaque input devient le nom du champ dans Ikiform. Webflow le remplit à partir du libellé, ce qui donne des noms comme
Name,EmailetField 2. Renommez-les avec les ids que vous voulez voir, commename,emailetmessage.- Si vous définissez des champs sur le formulaire Ikiform, les noms doivent correspondre exactement à leurs ids. Les ids sont en snake_case minuscule, donc
Emailetemailsont deux champs différents. - Retirez tout élément reCAPTCHA du formulaire. Ikiform ne le vérifie pas, et sa valeur
g-recaptcha-responsearriverait comme un champ supplémentaire. Utilisez plutôt le contrôle anti-spam d'Ikiform.
- Si vous définissez des champs sur le formulaire Ikiform, les noms doivent correspondre exactement à leurs ids. Les ids sont en snake_case minuscule, donc
Ajoutez un honeypot
Ajoutez un Input au formulaire, réglez son Name sur
_gotchaet masquez-le avec Display: none dans le panneau Style. Dans Custom attributes, ajouteztabindexà-1etautocompleteàoffpour que le clavier et les gestionnaires de mots de passe l'ignorent. Avec un site plan payant, vous pouvez plutôt coller ceci dans un Code Embed à l'intérieur du formulaire :Code Embed <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden />Choisissez ce qui se passe après l'envoi
L'option la plus simple est une page de remerciement. Créez-en une dans Webflow, publiez-la et collez son URL complète dans Redirect after submit, dans les paramètres du formulaire Ikiform.
Gardez les blocs de succès et d'erreur de Webflow
Pour rester sur la page, envoyez avec
fetchet affichez vous-même les blocs de Webflow. Collez ceci dans Page settings > Custom code > Before </body> tag, ou dans le code de pied de page du site pour couvrir tous les formulaires. Le script affiche le message d'erreur d'Ikiform dans le bloc d'erreur et utilise le Waiting text du bouton pendant l'envoi.Before </body> tag <script> document.querySelectorAll('form[action^="https://ikiform.com/f/"]').forEach((form) => { const wrapper = form.closest(".w-form"); const done = wrapper?.querySelector(".w-form-done"); const fail = wrapper?.querySelector(".w-form-fail"); const button = form.querySelector('[type="submit"]'); form.addEventListener("submit", async (event) => { event.preventDefault(); const label = button?.value; if (button) { button.disabled = true; button.value = button.dataset.wait || label; } try { const response = await fetch(form.action, { method: "POST", headers: { Accept: "application/json" }, body: new FormData(form), }); const result = await response.json(); if (result.ok) { form.style.display = "none"; if (fail) fail.style.display = "none"; if (done) done.style.display = "block"; return; } const text = fail?.querySelector("div") ?? fail; if (text) text.textContent = result.error.message; if (fail) fail.style.display = "block"; } catch { if (fail) fail.style.display = "block"; } finally { if (button) { button.disabled = false; button.value = label; } } }); }); </script>Le code personnalisé et l'élément Code Embed nécessitent un site plan payant ou un Workspace plan, et aucun des deux ne s'exécute dans le Designer. Publiez pour les voir fonctionner.
Le script envoie avec fetch, donc un formulaire dont le contrôle anti-spam est réglé sur Ikiform répond 403 challenge_required au lieu d'afficher la page de vérification. Utilisez le script avec la vérification désactivée, ou passez-vous du script et laissez le navigateur envoyer normalement, ce qui exécute la vérification sans code supplémentaire.
Domaines autorisés
Si vous définissez des domaines autorisés, listez chaque adresse où le formulaire est publié. Les sous-domaines d'un domaine listé correspondent déjà.
| Où tourne le formulaire | À ajouter aux domaines autorisés |
|---|---|
| Votre domaine personnalisé | example.com, qui couvre aussi www.example.com |
| Staging Webflow | your-site.webflow.io |
| Le canevas du Designer | Rien. Les actions et le code personnalisés n'y tournent pas. |
- N'ajoutez jamais
webflow.ioseul. Tous les sites de cet hébergeur correspondraient, y compris ceux des autres.
Checklist de test
- Publiez sur votre domaine de staging
webflow.io. Les formulaires avec une action personnalisée n'envoient que depuis le site publié. - Envoyez le formulaire et ouvrez ses soumissions dans Ikiform. La nouvelle soumission doit apparaître parmi les reçues, pas dans le spam.
- Vérifiez que les noms de champs correspondent à ceux de l'étape 2, et que le honeypot n'apparaît pas : les noms commençant par
_ne sont jamais stockés. - Vérifiez que vous arrivez sur votre page de remerciement, ou que vous voyez le bloc de succès de Webflow si vous avez ajouté le script.
- Publiez sur votre domaine personnalisé et envoyez encore une fois depuis celui-ci.
Dépannage
| Ce que vous voyez | Pourquoi | Solution |
|---|---|---|
Page 404 not_found après l'envoi | Method est sur GET, donc le navigateur a ouvert l'endpoint comme un lien | Réglez Method sur POST et publiez à nouveau. |
| La page de remerciement d'Ikiform au lieu du message de succès de Webflow | Le bloc de succès de Webflow ne fonctionne que si Webflow traite le formulaire | Définissez Redirect after submit, ou ajoutez le script de l'étape 4. |
Les soumissions arrivent dans le filtre spam avec origin_mismatch | La page qui a envoyé ne fait pas partie des domaines autorisés du formulaire | Ajoutez l'hôte du tableau ci-dessus. Avec Reject, les mêmes envois reçoivent plutôt 403 origin_not_allowed. |
422 validation_failed signalant un champ inconnu | Un nom de champ comme Email ou g-recaptcha-response ne figure pas dans la définition des champs du formulaire | Renommez l'input avec l'id du champ, ou retirez l'élément reCAPTCHA. |
| Le script ne fait rien | Vous testez dans le Designer, le site n'a pas de plan payant, ou l'action ne commence pas par https://ikiform.com/f/ | Testez sur le site publié et vérifiez que l'Action ne contient pas d'espaces. |
Le bloc d'erreur affiche Complete the human check, then send the form again. | Le contrôle anti-spam est réglé sur Ikiform et le script envoie avec fetch | Désactivez la vérification pour ce formulaire, ou retirez le script. |
Voir aussi
- Créateurs de sitesL'intégration qui fonctionne dans n'importe quel créateur de sites.
- Formulaires HTMLRedirections, champs réservés et honeypot.
- Domaines autorisésComment les origines sont comparées, et ce qui se passe en cas de non-correspondance.
- ErreursChaque code d'erreur, avec sa cause et sa solution.