Blog
Comment ajouter un formulaire de contact à Cloudflare Pages
· 4 min de lecture
Cloudflare Pages est un hébergeur statique rapide et généreux - vous poussez un dépôt, vous obtenez un déploiement mondial, terminé. Ce qu'il n'a pas, en revanche, c'est un équivalent de Netlify Forms : aucun service intégré ne scanne votre HTML à la recherche d'une balise <form> pour commencer à collecter les soumissions. Déployez un formulaire de contact HTML classique tel quel sur Cloudflare Pages, et le POST ne va nulle part. Voici pourquoi, et les deux façons d'y remédier.
Pourquoi Cloudflare Pages n'a pas de produit de formulaires natif
Cloudflare Pages est un hébergeur de fichiers statiques doté en option d'une couche Functions pour les routes dynamiques - ce n'est pas une plateforme de gestion de formulaires. La fonctionnalité de formulaires de Netlify fonctionne en analysant votre build au moment du déploiement et en provisionnant un backend caché pour chaque formulaire trouvé ; Cloudflare Pages ne fait aucune analyse de ce type. Vos artefacts de build ne sont que des fichiers sur un CDN. Si un formulaire a besoin d'un endroit où envoyer des données, c'est à vous de le construire ou de l'emprunter. Ce n'est pas une lacune que Cloudflare comblera probablement un jour - Pages est délibérément limité aux fichiers statiques plus une fine couche serverless, pas à un pipeline d'analyse de formulaires.
Option 1 : écrire votre propre Pages Function
Cloudflare Pages prend en charge les Functions - de petits gestionnaires de type Workers qui résident dans un répertoire /functions et s'exécutent en périphérie chez Cloudflare. Vous pourriez ajouter un functions/api/contact.ts qui lit le corps du POST, le valide, filtre le spam, envoie un e-mail (via l'API d'un fournisseur, puisque les Workers ne peuvent pas établir de connexions SMTP brutes), et écrit peut-être dans KV ou D1 pour le stockage. Cela fonctionne, et tout reste dans un seul projet Cloudflare. Mais c'est désormais vous qui maintenez la validation, le filtrage anti-spam, le stockage et l'envoi d'e-mails - exactement le backend qu'un hébergeur statique était censé vous éviter d'écrire.
Option 2 : pointer le formulaire vers un backend hébergé (recommandé)
La voie la plus rapide consiste à envoyer le POST à un service conçu exactement pour cela. Gardez votre balisage, ajoutez un attribut :
<form action="https://formhook.app/f/YOUR_API_KEY" method="POST">
<input type="text" name="name" required />
<input type="email" name="email" required />
<textarea name="message" required></textarea>
<button type="submit">Send</button>
</form>C'est toute l'intégration. Aucune Function, aucun Worker, aucune clé d'API e-mail à gérer. Les soumissions apparaissent dans un tableau de bord et peuvent déclencher une notification push - y compris sur iOS, une fois le site ajouté à l'écran d'accueil. La protection anti-spam est activée par défaut : un champ honeypot et une limitation de débit interceptent la majeure partie avant qu'elle ne vous atteigne, et vous pouvez ajouter Cloudflare Turnstile - le CAPTCHA respectueux de la vie privée de Cloudflare lui-même, un choix cohérent pour un formulaire hébergé sur un site Cloudflare Pages - pour tout ce qui serait plus fortement ciblé. Les soumissions et les fichiers téléversés sont stockés sur une infrastructure européenne. Rien de tout cela ne dépend de la façon dont le reste du site est construit : Astro, HTML classique, un export statique Next.js, Hugo, quel que soit le générateur du balisage, la balise de formulaire reste la même et le déploiement ne change pas.
Obtenir votre endpoint
- Inscrivez-vous et créez un formulaire dans le tableau de bord - aucune carte requise.
- Copiez l'URL unique du formulaire (elle ressemble à
https://formhook.app/f/fh_xxxxxxxx). - Collez-la dans l'attribut
actionde votre<form>existant. - Committez et déployez comme d'habitude.
Le niveau gratuit couvre 250 soumissions par mois, largement suffisant pour la plupart des formulaires de contact. Consultez la page tarifs pour découvrir ce qu'offre l'offre Pro si vous avez besoin de téléversements de fichiers ou d'un domaine d'envoi vérifié plus tard.
Mettez en ligne un formulaire fonctionnel en une ligne
Hébergé dans l'UE, soumissions conservées indéfiniment, notifications push sur tous les niveaux.
Commencer gratuitementSans carte bancaire · consultez la documentation
Continuer la lecture
- Alternative à Netlify Forms : un backend de formulaires qui fonctionne partoutNetlify Forms ne fonctionne que si votre site est construit et déployé sur Netlify. Voici ce que cela exige, pourquoi cela verrouille vos formulaires à votre hébergeur, et comment un backend de formulaires indépendant de l'hébergeur évite le problème.
- Comment ajouter un formulaire de contact à GitHub PagesGitHub Pages ne peut pas exécuter de code serveur, mais un formulaire de contact fonctionnel reste possible. Trois approches comparées en une minute.
- Formulaires de contact serverless : ce que « serverless » veut vraiment dire ici« Serverless » désigne deux configurations différentes pour un formulaire de contact - une fonction que vous écrivez, ou un backend que vous n'écrivez jamais. Voici la vraie distinction.