Formulaire WordPress vers Google Sheets : le tutoriel gratuit en 7 étapes

Chaque demande de contact qui arrive sur votre site peut s'inscrire toute seule dans un tableau Google Sheets. Voici la méthode gratuite, avec le script et le code complets.
Formulaire WordPress vers Google Sheets : le tutoriel gratuit en 7 étapes

Vous recevez vos demandes de contact par e-mail, puis vous les recopiez à la main dans un tableau pour suivre qui a été rappelé. C’est du temps perdu, et un oubli coûte un client. Ce tutoriel montre comment envoyer chaque demande de votre formulaire WordPress dans Google Sheets, automatiquement, sans extension payante et sans abonnement. La méthode repose sur un petit script gratuit, hébergé par Google, et sur une dizaine de lignes de code côté WordPress.

À retenir. Vous allez créer un tableau Google Sheets, y coller un script qui reçoit les données, puis demander à WordPress d’envoyer chaque formulaire à ce script. Comptez trente minutes la première fois. C’est la méthode que nous utilisons sur le site d’Aureva Digital pour notre propre tableau de suivi.

Pourquoi envoyer vos demandes dans Google Sheets

Un e-mail se lit, puis se perd sous les suivants. Un tableau, lui, reste. Avec une ligne par demande, vous voyez d’un coup d’œil qui a écrit, quand, pour quel besoin, et qui attend encore une réponse. Google Sheets a trois avantages pour une petite entreprise : il est gratuit, il se consulte depuis un téléphone, et il se partage avec un associé ou un assistant sans rien installer.

Un tableau Google Sheets devient aussi le point de départ d’autres automatisations. Une fois les demandes rangées en lignes et en colonnes, vous pouvez les filtrer, compter les demandes par mois, repérer d’où viennent vos meilleurs clients, ou brancher plus tard un outil comme n8n ou Make.

MéthodeCoûtCe qu’il faut savoir faireLimite
Recopier à la mainGratuitRienOublis, temps perdu
Extension WordPress payanteSouvent un abonnement annuelRégler une extensionUne dépendance de plus sur le site
n8n ou MakeGratuit ou abonnement selon le volumeConstruire un scénarioUn service externe à surveiller
Script Google Sheets (ce tutoriel)GratuitCopier et coller du codeÀ maintenir vous-même

Ce qu’il vous faut avant de commencer

  • Un compte Google, celui avec lequel vous ouvrirez le tableau Google Sheets.
  • Un site WordPress dont vous êtes administrateur.
  • Un formulaire déjà en place. Les exemples couvrent Elementor Pro, Contact Form 7 et WPForms.
  • Un moyen d’ajouter du code PHP : l’extension gratuite Code Snippets, ou le fichier functions.php d’un thème enfant.

Vous n’avez besoin ni de carte bancaire, ni de clé d’API, ni de compte Google Cloud. Tout se passe dans Google Sheets et dans WordPress.

Schéma : un formulaire WordPress envoie les données à un script Google, qui ajoute une ligne dans Google Sheets

Étape 1 : préparer le tableau Google Sheets

  1. Ouvrez sheets.google.com et créez une feuille de calcul vierge.
  2. Donnez-lui un nom clair, par exemple « Demandes du site ».
  3. En bas de l’écran, faites un clic droit sur l’onglet « Feuille 1 », choisissez « Renommer » et tapez Demandes.
  4. Sur la première ligne, saisissez vos titres de colonnes : Date, Nom, E-mail, Téléphone, Message.

Le nom de l’onglet compte : le script le cherchera sous ce nom exact. Si vous l’appelez autrement, pensez à modifier le script à l’étape suivante. Gardez autant de colonnes que de champs dans votre formulaire, dans le même ordre : c’est ce qui rend le tableau Google Sheets lisible six mois plus tard.

Étape 2 : coller le script dans Google Sheets

Dans votre tableau, ouvrez le menu Extensions, puis Apps Script. Un éditeur s’ouvre dans un nouvel onglet, avec un bout de code par défaut. Effacez-le entièrement et collez ceci à la place :

var CLE = 'remplacez-ceci-par-une-longue-cle-secrete';

function doPost(e) {
  var data = JSON.parse(e.postData.contents);
  if (data.cle !== CLE) {
    return ContentService.createTextOutput('refuse');
  }
  var feuille = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Demandes');
  feuille.appendRow([
    new Date(),
    data.nom || '',
    data.email || '',
    data.telephone || '',
    data.message || ''
  ]);
  return ContentService.createTextOutput('ok');
}

Ce script fait trois choses. Il reçoit les données envoyées par votre site. Il vérifie qu’elles sont accompagnées de la bonne clé, pour refuser tout envoi qui ne vient pas de vous. Puis il ajoute une ligne à la fin de l’onglet « Demandes », avec la date du jour en première colonne.

Remplacez le texte entre apostrophes de la première ligne par une clé à vous : une suite d’une trentaine de lettres et de chiffres, sans espace. Notez-la, vous la recollerez dans WordPress. Enregistrez ensuite avec l’icône disquette ou le raccourci Ctrl+S.

Adapter le script à vos champs

Si votre formulaire a d’autres champs, par exemple « Budget » ou « Type de projet », ajoutez une ligne par champ dans la liste, sur le modèle data.budget || '', et ajoutez la colonne correspondante dans Google Sheets. Le nom après data. est celui que WordPress enverra à l’étape 5 : les deux doivent être identiques, sans accent ni espace.

Étape 3 : publier le script en application web

Pour que votre site puisse lui parler, le script doit avoir une adresse sur internet.

  1. En haut à droite de l’éditeur, cliquez sur Déployer, puis sur Nouveau déploiement.
  2. Cliquez sur la roue dentée à côté de « Sélectionner le type » et choisissez Application Web.
  3. Dans « Exécuter en tant que », laissez Moi.
  4. Dans « Qui a accès », choisissez Tout le monde.
  5. Cliquez sur Déployer.

« Tout le monde » inquiète souvent. Cela signifie seulement que l’adresse du script accepte des requêtes venues d’internet, ce qui est nécessaire puisque votre site n’est pas connecté à votre compte Google. Personne ne voit votre tableau Google Sheets pour autant, et la clé de l’étape 2 refuse les envois qui ne viennent pas de vous.

Schéma des réglages de déploiement : type Application Web, exécuter en tant que Moi, accès Tout le monde

Étape 4 : autoriser le script

Au premier déploiement, Google vous demande d’autoriser le script à modifier vos feuilles de calcul.

  1. Cliquez sur Autoriser l’accès et choisissez votre compte.
  2. Un écran indique que Google n’a pas validé cette application. C’est normal : il s’agit de votre propre script, pas d’une application publiée.
  3. Cliquez sur Paramètres avancés, puis sur le lien qui permet d’accéder au projet.
  4. Cliquez sur Autoriser.

Une fenêtre affiche alors l’URL de l’application Web. Elle commence par https://script.google.com/macros/s/ et se termine par /exec. Copiez-la : c’est l’adresse à laquelle WordPress enverra chaque formulaire.

Étape 5 : envoyer le formulaire WordPress vers Google Sheets

Il reste à dire à WordPress : « à chaque formulaire envoyé, transmets les réponses à cette adresse ». Ouvrez Code Snippets (ou le fichier functions.php de votre thème enfant) et ajoutez d’abord cette fonction, commune à tous les formulaires :

function monsite_vers_sheets( $ligne ) {
    wp_remote_post( 'https://script.google.com/macros/s/VOTRE_IDENTIFIANT/exec', array(
        'timeout'  => 8,
        'blocking' => false,
        'headers'  => array( 'Content-Type' => 'application/json; charset=utf-8' ),
        'body'     => wp_json_encode( array_merge(
            array( 'cle' => 'remplacez-ceci-par-une-longue-cle-secrete' ),
            $ligne
        ) ),
    ) );
}

Remplacez l’adresse par celle copiée à l’étape 4, et la clé par celle de l’étape 2. Le réglage 'blocking' => false est important : WordPress envoie les données sans attendre la réponse de Google. Votre visiteur voit donc le message de confirmation tout de suite, même si Google Sheets met une seconde à répondre.

Ajoutez ensuite le bloc qui correspond à votre extension de formulaire.

Avec un formulaire Elementor Pro

add_action( 'elementor_pro/forms/new_record', function ( $record ) {
    $champs = array();
    foreach ( $record->get( 'fields' ) as $id => $champ ) {
        $champs[ $id ] = $champ['value'];
    }
    monsite_vers_sheets( array(
        'nom'       => $champs['nom'] ?? '',
        'email'     => $champs['email'] ?? '',
        'telephone' => $champs['telephone'] ?? '',
        'message'   => $champs['message'] ?? '',
    ) );
} );

Les mots entre crochets (nom, email…) sont les identifiants de vos champs. Dans Elementor, vous les trouvez en ouvrant un champ du formulaire, onglet « Avancé », ligne « ID ».

Avec Contact Form 7

add_action( 'wpcf7_mail_sent', function () {
    $envoi = WPCF7_Submission::get_instance();
    if ( ! $envoi ) {
        return;
    }
    $d = $envoi->get_posted_data();
    monsite_vers_sheets( array(
        'nom'       => $d['your-name'] ?? '',
        'email'     => $d['your-email'] ?? '',
        'telephone' => $d['your-tel'] ?? '',
        'message'   => $d['your-message'] ?? '',
    ) );
} );

your-name, your-email et your-message sont les noms donnés par défaut par Contact Form 7. Vérifiez les vôtres dans l’éditeur du formulaire.

Avec WPForms

add_action( 'wpforms_process_complete', function ( $fields ) {
    $valeurs = array_values( wp_list_pluck( $fields, 'value' ) );
    monsite_vers_sheets( array(
        'nom'       => $valeurs[0] ?? '',
        'email'     => $valeurs[1] ?? '',
        'telephone' => $valeurs[2] ?? '',
        'message'   => $valeurs[3] ?? '',
    ) );
} );

Ici, les réponses sont prises dans l’ordre des champs du formulaire : le premier champ va dans « nom », le deuxième dans « email », et ainsi de suite. Adaptez l’ordre au vôtre.

Étape 6 : tester de bout en bout

  1. Ouvrez votre page de contact dans une fenêtre de navigation privée.
  2. Remplissez le formulaire avec un nom reconnaissable, par exemple « Test Sheets ».
  3. Envoyez, puis ouvrez votre tableau Google Sheets.

En quelques secondes, une nouvelle ligne doit apparaître sous vos titres de colonnes. Si c’est le cas, c’est terminé : chaque demande s’inscrira désormais toute seule.

Schéma du test : formulaire envoyé, puis une nouvelle ligne apparaît dans le tableau Google Sheets

Étape 7 : sécuriser et entretenir

  • Gardez la clé secrète. Ne la publiez pas dans une capture d’écran ni dans un dépôt de code public. Si elle fuit, changez-la dans le script et dans WordPress.
  • Ne partagez pas l’adresse en /exec. Avec la clé, elle permet d’écrire dans votre tableau.
  • Après une modification du script, il faut redéployer : Déployer, puis Gérer les déploiements, puis modifier le déploiement existant et choisir « Nouvelle version ». Sans cela, l’ancienne version continue de tourner.
  • Protégez-vous contre les formules. Un visiteur malveillant peut taper un texte qui commence par le signe égal. Pour l’empêcher d’être interprété, ajoutez une apostrophe devant toute valeur qui commence par =, +, - ou @ avant de l’écrire dans Google Sheets.

Les erreurs fréquentes et leur solution

Ce que vous voyezCause probableSolution
Aucune ligne n’apparaîtL’adresse ne se termine pas par /execRecopiez l’URL de l’application Web, pas celle de l’éditeur
Aucune ligne n’apparaît« Qui a accès » n’est pas sur « Tout le monde »Modifiez le déploiement
Aucune ligne n’apparaîtLa clé diffère entre le script et WordPressCopiez-collez la même clé des deux côtés
Une ligne vide, avec seulement la dateLes noms de champs ne correspondent pasVérifiez les identifiants de vos champs à l’étape 5
Les changements du script sont ignorésLe script n’a pas été redéployéCréez une nouvelle version du déploiement
Erreur « getSheetByName »L’onglet ne s’appelle pas « Demandes »Renommez l’onglet ou corrigez le script

Pour voir ce qui se passe côté Google, ouvrez l’éditeur Apps Script, puis le menu « Exécutions » dans la colonne de gauche : chaque appel reçu y figure, avec son erreur éventuelle.

Aller plus loin avec Google Sheets

Une fois les demandes dans Google Sheets, quelques ajouts simples changent le quotidien :

  • Une colonne « Statut » avec une liste déroulante : À rappeler, Devis envoyé, Gagné, Perdu.
  • Une mise en forme conditionnelle qui colore en orange les demandes sans réponse depuis plus de deux jours.
  • Un second onglet de synthèse qui compte les demandes par mois avec la fonction NB.SI.
  • Une notification : dans Google Sheets, le menu Outils propose des règles de notification pour être prévenu par e-mail à chaque modification.

Le même script peut alimenter plusieurs onglets. Sur notre propre site, un seul script range les demandes de contact, les clients de l’espace client et les prospects dans trois onglets différents, selon un champ « type » envoyé par WordPress.

Ce qui se passe réellement, expliqué simplement

Il est plus facile de dépanner un système qu’on comprend. Voici le trajet d’une demande, de votre visiteur jusqu’à votre tableau.

  1. Le visiteur clique sur Envoyer. WordPress reçoit les réponses et fait ce qu’il faisait déjà : il vous envoie l’e-mail de notification.
  2. WordPress prépare un petit paquet de données. Ce paquet est au format JSON, une façon standard d’écrire des informations sous forme d’étiquettes et de valeurs : l’étiquette « nom » avec la valeur « Claire Martin », l’étiquette « email » avec son adresse, et ainsi de suite. Votre clé secrète voyage dans le même paquet.
  3. WordPress envoie ce paquet à l’adresse du script. C’est ce qu’on appelle un webhook : une adresse qui attend qu’on lui remette des données.
  4. Le script ouvre le paquet, compare la clé reçue avec la sienne, puis écrit une ligne dans l’onglet « Demandes ».
  5. Le script répond « ok ». WordPress n’attend pas cette réponse, il est déjà passé à autre chose.

Deux conséquences pratiques. D’abord, les étiquettes doivent être écrites de la même façon des deux côtés : si WordPress envoie « telephone » et que le script lit « tel », la colonne restera vide. Ensuite, le système est à sens unique : modifier une ligne dans Google Sheets ne change rien sur votre site.

Un exemple complet : du formulaire au suivi

Prenons un institut de beauté qui reçoit une dizaine de demandes par semaine. Avant, la gérante lisait ses e-mails entre deux clientes et en oubliait une sur cinq. Avec ce montage, chaque demande s’inscrit dans Google Sheets au moment où elle arrive.

Elle a ajouté trois colonnes à droite : « Statut », « Rappelée le » et « Remarques ». Chaque matin, elle filtre la colonne Statut sur « À rappeler » et traite la liste dans l’ordre. Le vendredi, un second onglet lui indique combien de demandes sont arrivées dans la semaine et combien sont devenues des rendez-vous. En un mois, elle sait quel jour arrivent le plus de demandes et quel soin est le plus demandé.

Rien de tout cela ne demande un logiciel de gestion de la relation client. Pour une petite structure, un tableau Google Sheets bien tenu suffit longtemps, et il prépare le terrain le jour où un vrai outil devient nécessaire : vos données sont déjà propres et rangées.

Et sans écrire de code ?

Cette méthode demande de copier du code, ce qui ne convient pas à tout le monde. Trois autres voies existent.

  • Une extension dédiée. Plusieurs extensions WordPress relient un formulaire à Google Sheets en quelques clics. Elles sont souvent payantes au-delà d’un usage de base, et ajoutent une extension de plus à maintenir.
  • n8n ou Make. Ces outils d’automatisation reçoivent le formulaire et écrivent dans Google Sheets sans code. Ils valent le coup dès que vous voulez enchaîner plusieurs actions : prévenir par message, créer une tâche, envoyer un e-mail de bienvenue. Nous les comparons dans notre article sur les automatisations n8n et Make pour une petite entreprise.
  • Le faire faire. Si vous préférez ne pas toucher au code, c’est une intervention courte pour un développeur. C’est une des automatisations que nous mettons en place pour nos clients.

Données personnelles : ce qu’il faut prévoir

Un nom, un e-mail et un téléphone sont des données personnelles. En les copiant dans Google Sheets, vous les confiez à un second service, en plus de votre site. Trois précautions suffisent dans la plupart des cas :

  1. Dites-le. Ajoutez une phrase à votre politique de confidentialité indiquant que les demandes sont reportées dans un tableau de suivi hébergé par Google.
  2. Limitez l’accès. Ne partagez le tableau qu’avec les personnes qui en ont besoin.
  3. Faites le ménage. Supprimez régulièrement les lignes des demandes anciennes et sans suite.

Questions fréquentes

Est-ce vraiment gratuit ?

Oui. Google Sheets et Apps Script sont inclus dans un compte Google gratuit. Google applique des quotas d’usage quotidiens à Apps Script, très au-dessus de ce que reçoit le formulaire de contact d’une petite entreprise.

Que se passe-t-il si Google ne répond pas ?

WordPress n’attend pas la réponse, donc votre visiteur ne voit aucune différence. En revanche, la ligne n’est pas créée. C’est pourquoi il faut garder l’e-mail de notification du formulaire : le tableau Google Sheets complète l’e-mail, il ne le remplace pas.

Puis-je envoyer plusieurs formulaires dans le même tableau ?

Oui. Ajoutez un champ type dans les données envoyées par chaque formulaire, et faites choisir l’onglet au script selon sa valeur.

Dois-je refaire le déploiement si je change de formulaire ?

Non, tant que vous ne modifiez pas le script. Seul le code côté WordPress change.

Cela ralentit-il mon site ?

Non. L’envoi se fait après la validation du formulaire, et sans attendre la réponse. Les pages ne chargent rien de plus.

En résumé

  • Créez un tableau Google Sheets avec un onglet « Demandes » et vos titres de colonnes.
  • Collez le script dans Apps Script, avec une clé secrète à vous.
  • Déployez-le en application web et copiez l’adresse en /exec.
  • Ajoutez dans WordPress la fonction d’envoi et le bloc de votre extension de formulaire.
  • Testez en navigation privée, puis gardez la clé et l’adresse pour vous.

Sources

Écrit par Amadeus AvlekaFondateur d'Aureva Digital, designer et développeur web basé à Cotonou. En savoir plus

Un projet en tête ?

Décrivez-le en quatre étapes. Vous recevez une réponse personnelle, pas un message automatique.

À lire aussi