Demande de devis ? Tally envoie, Airtable enregistre, Slack alerte, Gmail remercie.

Intermédiaire

Ceci est unLead Generationworkflow d'automatisation du domainecontenant 13 nœuds.Utilise principalement des nœuds comme Set, Wait, Gmail, Slack, Webhook. Automatisation du traitement des demandes de devis avec Tally, Airtable, Slack et Gmail

Prérequis
  • Compte Google et informations d'identification Gmail API
  • Token Bot Slack ou URL Webhook
  • Point de terminaison HTTP Webhook (généré automatiquement par n8n)
  • Clé API Airtable
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "wOhPQ3JzlrQMFgRa",
  "meta": {
    "instanceId": "e95c8554b03e2c16a5c8c44cc7d45f6192b966fba75d5438d1201989ceff13e2",
    "templateCredsSetupCompleted": true
  },
  "name": "A quote request? Tally sends it, Airtable logs it, Slack alerts, Gmail thanks.",
  "tags": [],
  "nodes": [
    {
      "id": "327dd9ab-9ca2-46d8-a513-676da8f69458",
      "name": "Attente",
      "type": "n8n-nodes-base.wait",
      "position": [
        1720,
        1060
      ],
      "webhookId": "f9c8eafb-ecaa-4b32-a6b5-fb10dbee1f19",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "1023020f-48bd-4266-a92a-ad3fb2caccfe",
      "name": "Webhook : Tally",
      "type": "n8n-nodes-base.webhook",
      "position": [
        620,
        1060
      ],
      "webhookId": "2eefd271-2928-42a7-98ef-7fc65524a950",
      "parameters": {
        "path": "Request a Quote",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "8e13c8f4-d052-4b60-ac8e-b86b37072304",
      "name": "GMAIL : Envoyer un message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1980,
        1060
      ],
      "webhookId": "38134cd8-0b71-4d19-bab4-3c473cb35f47",
      "parameters": {
        "sendTo": "={{ $('Edit Fields').item.json['Email Address'] }}",
        "message": "=Hi {{ $('Edit Fields').item.json.Name }} ,\n\nThanks a lot for your quote request — we’ve received your information!\n\nOur team will get back to you within the next 24 hours to discuss your project.\n\nTalk soon,  \n— The WebExperts Team",
        "options": {},
        "subject": "Thanks for your quote request 🙌"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "FKD43HaVeVoUXOi0",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "b6845fe9-3c43-4ce9-9323-d563d6abda72",
      "name": "Modifier les champs",
      "type": "n8n-nodes-base.set",
      "position": [
        900,
        1060
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "95bdaad3-0b5e-44a4-bbd3-060d425d7b68",
              "name": "Name",
              "type": "string",
              "value": "={{ $json.body.data.fields[0].label }}"
            },
            {
              "id": "479970d8-e639-463a-bf7a-5f8d55cd65b2",
              "name": "Email Address",
              "type": "string",
              "value": "={{ $json.body.data.fields[1].value }}"
            },
            {
              "id": "ce6234c2-ceff-4191-8942-55a88dc47c77",
              "name": "Type of Service Needed",
              "type": "string",
              "value": "={{ $json.body.data.fields[2].value }}"
            },
            {
              "id": "d2cb542d-1145-466b-93b4-4e377ecc1334",
              "name": " Estimated Budget",
              "type": "string",
              "value": "={{ $json.body.data.fields[3].value }}"
            },
            {
              "id": "e375ee00-745c-472a-862c-dfae10867d3f",
              "name": "Preferred Timeline",
              "type": "string",
              "value": "={{ $json.body.data.fields[4].value }}"
            },
            {
              "id": "0165025d-aee9-4853-ae94-314644aab9e1",
              "name": "Additional Details or Questions",
              "type": "string",
              "value": "={{ $json.body.data.fields[5].value }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b985ff1a-137e-41f1-ae28-1778d834c44c",
      "name": "Créer un enregistrement",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1180,
        1060
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appZ7CtNukjbwxDap",
          "cachedResultUrl": "https://airtable.com/appZ7CtNukjbwxDap",
          "cachedResultName": "Request A Quote - Airtable Base"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblcS0ZQeEo4dC1Iv",
          "cachedResultUrl": "https://airtable.com/appZ7CtNukjbwxDap/tblcS0ZQeEo4dC1Iv",
          "cachedResultName": "Request A Quote - Airtable Base"
        },
        "columns": {
          "value": {
            "Name": "={{ $json.Name }}",
            "Email": "={{ $json['Email Address'] }}",
            "Type of Service": "={{ $json['Type of Service Needed'] }}",
            "Additional Details": "={{ $json['Additional Details or Questions'] }}",
            "Preferred Timeline": "={{ $json['Preferred Timeline'] }}",
            "Estimated Budget (€)": "={{ $json[' Estimated Budget'] }}"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Type of Service",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Type of Service",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Estimated Budget (€)",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Estimated Budget (€)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Preferred Timeline",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Preferred Timeline",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Additional Details",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Additional Details",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Submission Date",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "Submission Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "9QdKkMHsy4ojigs3",
          "name": "Airtable Personal Access Token account 2"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "ebf0387d-2614-4911-a09b-7373b1675fae",
      "name": "Envoyer un message",
      "type": "n8n-nodes-base.slack",
      "position": [
        1460,
        1060
      ],
      "webhookId": "fd880910-128a-47f8-98a6-c1b486d98381",
      "parameters": {
        "text": "=:new: *New quote request received!*\n\n*👤 Name: {{ $json.fields.Name }}\n*📧 Email: {{ $json.fields.Email }}\n*💼 Service: {{ $json.fields['Type of Service'] }}\n*💰 Budget: {{ $json.fields['Estimated Budget (€)'] }}\n*⏱️ Timeline: {{ $json.fields['Preferred Timeline'] }}\n*📝 Notes: {{ $json.fields['Additional Details'] }}\n",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C0945G1RY0Y",
          "cachedResultName": "nouveau-canal"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "Uw4BOaewm5FIDdQM",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "be127bac-3d05-4600-8001-d8f0f5503a21",
      "name": "Note adhésive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        140,
        1000
      ],
      "parameters": {
        "width": 380,
        "height": 220,
        "content": "**=== AUTOMATION OVERVIEW ===**\n\n**Workflow:** Tally → Airtable → Slack → Gmail  \n**Purpose:** Automatically process client quote requests\n\n*What if your quote requests managed themselves?*\n\nInstead of manually checking emails, notifying your team, and logging leads — this automation handles it all.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "05584140-fe6f-40d7-a76a-b721205b6bf5",
      "name": "Note adhésive1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        700
      ],
      "parameters": {
        "color": 2,
        "height": 520,
        "content": "**== STEP 1 – Webhook (Tally) ==**\n\n**Trigger:** When a user submits the quote form.  \n**Type:** POST Webhook  \n**Path:** `/Request a Quote`  \n**Authentication:** None  \n**Respond:** Immediately\n\nTally sends the form fields as an array in `body.data.fields`.  \nEach item contains a `label` and a `value`.\n\nWe’ll extract and map these manually in the next step.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "ac694b26-7130-4e63-9a2d-a472f222861a",
      "name": "Note adhésive2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        840,
        440
      ],
      "parameters": {
        "color": 3,
        "height": 780,
        "content": "**== STEP 2 – Edit Fields ==**\n\n**Goal:** Convert raw array into usable fields.\n\nUse a Set node or Function with manual mapping:\n\n- `Name` = `{{ $json.body.data.fields[0].label }}`\n- `Email Address` = `{{ $json.body.data.fields[1].value }}`\n- `Type of Service Needed` = `{{ $json.body.data.fields[2].value }}`\n- `Estimated Budget` = `{{ $json.body.data.fields[3].value }}`\n- `Preferred Timeline` = `{{ $json.body.data.fields[4].value }}`\n- `Additional Details` = `{{ $json.body.data.fields[5].value }}`\n\nThis prepares clean variables for Airtable, Slack and Gmail.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "ea91126b-5f69-4361-a275-7e4cb5d90242",
      "name": "Note adhésive3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1120,
        420
      ],
      "parameters": {
        "color": 4,
        "width": 220,
        "height": 800,
        "content": "**== STEP 3 – Create Airtable Record ==**\n\n**Base:** Request a Quote - Airtable Base  \n**Operation:** Create  \n**Table:** Same name  \n**Mode:** Map Each Column Manually\n\n**Mapped fields:**\n- Name → `{{ $json.Name }}`\n- Email → `{{ $json[\"Email Address\"] }}`\n- Service → `{{ $json[\"Type of Service Needed\"] }}`\n- Budget → `{{ $json[\"Estimated Budget\"] }}`\n- Timeline → `{{ $json[\"Preferred Timeline\"] }}`\n- Notes → `{{ $json[\"Additional Details\"] }}`\n\nEach request is now stored as a structured CRM lead.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "46ca2e9a-c1b1-4991-a015-5e2d8519d758",
      "name": "Note adhésive4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1400,
        600
      ],
      "parameters": {
        "color": 5,
        "width": 200,
        "height": 620,
        "content": "**== STEP 4 – Send Slack Notification ==**\n\n**Channel:** #sales (or any other)  \n**Message Type:** Simple text\n\n**Slack message:**\n:new: *New quote request received!*\n\n**👤 Name:** {{ Name }}  \n**📧 Email:** {{ Email }}  \n**💼 Service:** {{ Service }}  \n**💰 Budget:** {{ Budget }}  \n**⏱️ Timeline:** {{ Timeline }}  \n**📝 Notes:** {{ Notes }}\n\nOptionally include an Airtable link at the bottom.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "7233ac5b-c4fb-4829-afbb-7473ec8bab47",
      "name": "Note adhésive5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1660,
        700
      ],
      "parameters": {
        "color": 6,
        "width": 200,
        "height": 520,
        "content": "**== STEP 5 – Wait Node ==**\n\n**Purpose:** Delay the confirmation email by 5 minutes.  \nThis allows a human to respond first if needed.\n\n**Settings:**\n- Resume After Time Interval\n- Wait Amount: 5\n- Wait Unit: Minutes\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e1528bd8-124a-49d5-a7f9-0d517598df70",
      "name": "Note adhésive6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1900,
        540
      ],
      "parameters": {
        "color": 7,
        "height": 680,
        "content": "**== STEP 6 – Send Email via Gmail ==**\n\n**To:** `{{ $('Edit Fields').item.json[\"Email Address\"] }}`  \n**Subject:** \"Thanks for your quote request 🙌\"  \n**Email Type:** HTML\n\n**Email Body:**\n\nHi `{{ $('Edit Fields').item.json.Name }}`,\n\nThanks a lot for your quote request — we’ve received your information!\n\nOur team will get back to you within the next 24 hours to discuss your project.\n\nTalk soon,  \n— The WebExperts Team\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "272c1246-fa67-493c-8f5c-5f26bdfce052",
  "connections": {
    "327dd9ab-9ca2-46d8-a513-676da8f69458": {
      "main": [
        [
          {
            "node": "8e13c8f4-d052-4b60-ac8e-b86b37072304",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b6845fe9-3c43-4ce9-9323-d563d6abda72": {
      "main": [
        [
          {
            "node": "b985ff1a-137e-41f1-ae28-1778d834c44c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ebf0387d-2614-4911-a09b-7373b1675fae": {
      "main": [
        [
          {
            "node": "327dd9ab-9ca2-46d8-a513-676da8f69458",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b985ff1a-137e-41f1-ae28-1778d834c44c": {
      "main": [
        [
          {
            "node": "ebf0387d-2614-4911-a09b-7373b1675fae",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1023020f-48bd-4266-a92a-ad3fb2caccfe": {
      "main": [
        [
          {
            "node": "b6845fe9-3c43-4ce9-9323-d563d6abda72",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Intermédiaire - Génération de leads

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Intermédiaire
Nombre de nœuds13
Catégorie1
Types de nœuds7
Description de la difficulté

Adapté aux utilisateurs expérimentés, avec des workflows de complexité moyenne contenant 6-15 nœuds

Auteur
Baptiste Fort

Baptiste Fort

@baptistefort

👋 I'm Baptiste Fort. What if automating was simply our way of taking back control in a world that's moving too fast? I build workflows that are simple, useful — sometimes invisible lol. Automation isn’t cheating. It’s just being one step ahead.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34