intégrations · framework

Un formulaire Gatsby qui déménage avec vous.

Gatsby produit des fichiers statiques : le formulaire doit donc appeler ailleurs. Gatsby Functions le lie à un runtime, l’option native le lie à l’hébergeur. La fermeture de Gatsby Cloud a montré quelles parties étaient portables : les formulaires l’étaient rarement.

Un formulaire vers mailcontact n’a pas cette dépendance. C’est du HTML dans un composant React avec action : il survit aux migrations d’hébergement, changements Gatsby et réécritures complètes.

configuration recommandée

Utilisez le script MailContact avec votre design.

Ajoutez ce HTML à votre site, ou utilisez le générateur de formulaires. Remplacez le lien du formulaire par le vôtre. Le script hébergé injecte le contrôle caché, gère l’envoi et la vérification automatique, et conserve le brouillon en cas d’erreur. Vous contrôlez le HTML et le CSS. Les formulaires Free affichent un lien visible « Traité par mailcontact.app » ; Pro et Plus ne l’affichent pas. Les messages de retour suivent la langue du navigateur ; définissez data-mailcontact-language="fr" sur le formulaire pour imposer le français.

contact.html
<form action="https://mailcontact.app/api/forms/your-form-id" method="POST" data-mailcontact-form lang="fr" data-mailcontact-language="fr">
  <input type="hidden" name="_language" value="fr" />
  <fieldset>
    <legend>Contactez-nous</legend>
    <label>
      Nom (facultatif)
      <input name="name" type="text" autocomplete="name" maxlength="200" />
    </label>
    <label>
      Email
      <input name="email" type="email" autocomplete="email" maxlength="320" required />
    </label>
    <label>
      Message
      <textarea name="message" rows="5" maxlength="5000" required></textarea>
    </label>
    <noscript>
    <div aria-hidden="true" style="position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden;">
      <label>Site web
        <input name="company_website" type="text" tabindex="-1" autocomplete="off" />
      </label>
    </div>
    </noscript>
    <button type="submit">Envoyer le message</button>
  </fieldset>
  <p data-contact-status role="status" aria-live="polite" aria-atomic="true"></p>
</form>
<script defer src="https://mailcontact.app/forms/v1.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

Pour un composant doté de son propre gestionnaire d’envoi, chargez le même script et utilisez MailContact.prepare(form) et MailContact.send() au lieu du marqueur automatique. Voir la référence des interfaces personnalisées pour le chargement, les messages de retour et l’attribution Free.

l’extrait

Alternative : une intégration directe pour Gatsby.

Cet exemple appelle directement l’API. Gardez le champ requis company_website champ présent et vide. Les envois natifs ouvrent du JSON en cas de succès ou une page de vérification si nécessaire. Les scripts personnalisés sans vérification envoient les messages suspects dans les spams pour examen ; les spams manifestes y sont aussi retenus sans notification ni consommation du quota. Un succès confirme la réception, y compris pour examen, ou l’abandon silencieux d’un contrôle rempli. Voir protection antispam pour le comportement complet.

src/pages/contact.js
import * as React from "react";

// No src/api/ function. No host form feature. Nothing to migrate later.
export default function ContactPage() {
  const [sent, setSent] = React.useState(false);

  async function submit(event) {
    event.preventDefault();
    await fetch("https://mailcontact.app/api/forms/your-form-id", {
      method: "POST",
      body: new FormData(event.target),
    });
    setSent(true);
  }

  if (sent) return <p>Thanks. We'll be in touch.</p>;

  return (
    <form onSubmit={submit}>
      <input name="name" placeholder="Your name" required />
      <input name="email" type="email" placeholder="[email protected]" required />
      <textarea name="message" placeholder="What's on your mind?" required />
      <input name="company_website" type="text" tabIndex={-1} autoComplete="off"
        style={{ position: "absolute", left: "-10000px" }} aria-hidden="true" />

      <button>Send</button>
    </form>
  );
}

fonctionnement

Trois étapes, du début à la fin.

01

Créer une boîte

Une boîte par projet, avec formulaire et adresse prêts avant la première compilation.

02

Ajoutez la page

Placez-le dans src/pages/contact.js et remplacez l’identifiant. Aucun plugin gatsby-config, variable d’environnement ou commande à ajouter.

03

Recevoir des alertes

Ajoutez Discord, Slack, email ou webhook pour être averti des messages livrés.

pourquoi mailcontact

Conçu pour fonctionner avec Gatsby.

Aucun plugin dans gatsby-config

Les plugins de formulaires peuvent casser aux mises à jour majeures et être abandonnés avant le site. Ici, rien à rendre compatible avec une future version Gatsby.

Indépendant de l’hébergeur par conception

Netlify Forms exige Netlify, Gatsby Function un hébergeur compatible. Une action vers une URL externe ne dépend pas de l’endroit où les fichiers sont servis.

Votre historique d’envois vous suit

Les formulaires natifs laissent l’archive à l’ancien hébergeur. Les messages restent dans la boîte du projet : migrer ne perd pas deux ans de demandes.

FAQ

Gatsby + mailcontact : vos questions

Un site Gatsby statique peut-il traiter les envois de formulaire ?

Pas seul. gatsby build génère HTML, CSS et JS sans processus pour accepter un POST. Il faut un service externe : Gatsby Function chez un hébergeur compatible, service tiers ou votre API.

Et Gatsby Functions ?

Ils fonctionnent, mais ajoutent un environnement d’exécution à un site statique. Vous devez aussi écrire livraison mail, antispam et stockage, et rester chez un hébergeur compatible Gatsby Functions. Beaucoup de composants pour un simple formulaire.

Ai-je besoin de gatsby-plugin-react-helmet ou d’une configuration ?

Non. Aucune configuration n’est modifiée. C’est un composant React avec un formulaire et un gestionnaire d’envoi : ni plugin, ni requête GraphQL, ni entrée dans gatsby-config.js.

Gatsby vaut-il encore le coup en 2026 ?

À vous de décider : beaucoup de sites Gatsby fonctionnent très bien. Le framework évolue moins vite ; les éléments portables seront donc utiles plus tard. Un formulaire HTML pointant vers une URL en fait partie.

voir aussi

Fonctionne aussi avec

Une boîte pour chaque projet Gatsby lancé.

Formulaires et vraie adresse email, ensemble, avec des notifications dans vos outils. Commencez gratuitement.

Créer mon formulaire

Aucune carte bancaire requise. Free comprend un projet et 50 messages de formulaire par mois.