Demande de devis ? Tally envoie, Airtable enregistre, Slack alerte, Gmail remercie.
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
- •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
Catégorie
{
"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
}
]
]
}
}
}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.
Workflows recommandés
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.
Partager ce workflow