automation

Workflow de capture de leads automatisé

Workflow n8n qui capture les leads depuis un formulaire web, les enrichit et les enregistre dans votre CRM automatiquement.

n8nautomatisationleadscrmformulaireprospection

Vue d'ensemble

Ce workflow capture automatiquement chaque nouveau lead soumis via votre formulaire web, enregistre les données dans une feuille Google Sheets ou un CRM, et envoie un email de confirmation au prospect ainsi qu'une notification interne à votre équipe.

Déclencheur : Webhook (soumission du formulaire) Sortie : Lead enregistré dans Google Sheets + email de confirmation + notification Slack

Gain de temps : 30 à 60 minutes par jour pour les solopreneurs recevant 5 à 20 leads quotidiens.

Prérequis

  • Instance n8n (cloud ou self-hosted)
  • Compte Google avec accès à Google Sheets
  • Compte email configuré (Gmail, SMTP, ou Resend)
  • Optionnel : compte Slack pour les notifications internes
  • Formulaire web avec support webhook (Typeform, Tally, ou formulaire HTML personnalisé)

Le workflow

{
  "meta": {
    "instanceId": "vault-template"
  },
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "lead-capture",
        "responseMode": "responseNode",
        "options": {}
      },
      "name": "Réception du formulaire",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [250, 300],
      "webhookId": "lead-capture-webhook"
    },
    {
      "parameters": {
        "jsCode": "const body = $input.first().json.body || $input.first().json;\nconst nom = body.nom || body.name || '';\nconst email = body.email || '';\nconst message = body.message || body.sujet || '';\nconst source = body.source || 'formulaire-web';\nconst timestamp = new Date().toISOString();\n\nreturn [{\n  json: {\n    nom,\n    email,\n    message,\n    source,\n    timestamp,\n    statut: 'nouveau'\n  }\n}];"
      },
      "name": "Normaliser les données",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [450, 300]
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": { "__rl": true, "value": "[ID_GOOGLE_SHEET]", "mode": "id" },
        "sheetName": { "__rl": true, "value": "Leads", "mode": "name" },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Nom": "={{ $json.nom }}",
            "Email": "={{ $json.email }}",
            "Message": "={{ $json.message }}",
            "Source": "={{ $json.source }}",
            "Date": "={{ $json.timestamp }}",
            "Statut": "={{ $json.statut }}"
          }
        }
      },
      "name": "Enregistrer dans Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4,
      "position": [650, 200]
    },
    {
      "parameters": {
        "fromEmail": "[VOTRE_EMAIL]",
        "toEmail": "={{ $json.email }}",
        "subject": "Merci pour votre message, {{ $json.nom }} !",
        "emailType": "html",
        "message": "<p>Bonjour {{ $json.nom }},</p><p>Merci d'avoir pris contact avec nous. Nous avons bien reçu votre message et vous répondrons dans les 24 heures.</p><p>À très bientôt,<br>[VOTRE_NOM]</p>"
      },
      "name": "Email de confirmation au lead",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2,
      "position": [650, 350]
    },
    {
      "parameters": {
        "channel": "#leads",
        "text": "🎯 Nouveau lead : *{{ $json.nom }}* ({{ $json.email }})\n> {{ $json.message }}\n*Source :* {{ $json.source }}",
        "otherOptions": {}
      },
      "name": "Notification Slack",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2,
      "position": [650, 500]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={ \"success\": true, \"message\": \"Lead enregistré\" }"
      },
      "name": "Réponse webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1,
      "position": [850, 300]
    }
  ],
  "connections": {
    "Réception du formulaire": {
      "main": [
        [{ "node": "Normaliser les données", "type": "main", "index": 0 }]
      ]
    },
    "Normaliser les données": {
      "main": [
        [
          { "node": "Enregistrer dans Google Sheets", "type": "main", "index": 0 },
          { "node": "Email de confirmation au lead", "type": "main", "index": 0 },
          { "node": "Notification Slack", "type": "main", "index": 0 }
        ]
      ]
    },
    "Enregistrer dans Google Sheets": {
      "main": [
        [{ "node": "Réponse webhook", "type": "main", "index": 0 }]
      ]
    }
  }
}

Configuration étape par étape

1. Importer le workflow

Dans n8n, allez dans Workflows > Import from File et importez le JSON ci-dessus. Le workflow apparaît avec tous les noeuds pré-configurés.

2. Configurer le webhook

Cliquez sur le noeud Réception du formulaire et copiez l'URL webhook générée. Elle ressemble à : https://votre-instance.n8n.cloud/webhook/lead-capture

Collez cette URL dans la configuration de votre formulaire (champ "webhook URL" ou "action URL").

3. Configurer Google Sheets

Dans le noeud Enregistrer dans Google Sheets :

  • Connectez vos credentials Google (OAuth2)
  • Remplacez [ID_GOOGLE_SHEET] par l'identifiant de votre feuille (visible dans l'URL Google Sheets)
  • Créez un onglet nommé "Leads" avec les colonnes : Nom, Email, Message, Source, Date, Statut

4. Configurer l'email de confirmation

Dans le noeud Email de confirmation au lead :

  • Remplacez [VOTRE_EMAIL] par votre adresse expéditeur
  • Remplacez [VOTRE_NOM] dans le corps du message
  • Connectez vos credentials email (Gmail ou SMTP)

5. Configurer Slack (optionnel)

Dans le noeud Notification Slack :

  • Connectez vos credentials Slack (OAuth2)
  • Modifiez le nom du channel (#leads par défaut)
  • Si vous n'utilisez pas Slack, supprimez ce noeud

6. Activer le workflow

Cliquez sur le bouton Active en haut à droite. Le webhook est maintenant prêt à recevoir des leads.

Personnalisation

  • Changer la destination : remplacez Google Sheets par Notion (noeud Notion), Airtable, ou HubSpot pour centraliser vos leads dans votre outil préféré
  • Ajouter un filtre anti-spam : insérez un noeud IF après "Normaliser les données" pour ignorer les emails avec des domaines jetables (mailinator.com, etc.)
  • Enrichissement automatique : ajoutez un noeud HTTP Request vers Clearbit ou Hunter.io entre la normalisation et l'enregistrement pour enrichir les données du prospect
  • Segmentation par source : modifiez le noeud Code pour détecter automatiquement la source (LinkedIn, site web, publicité) et appliquer des tags différents dans votre CRM
  • Email personnalisé : utilisez un noeud Switch pour envoyer des emails de confirmation différents selon le produit ou service demandé