This workflow follows the Airtable → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "CRM Automatisierung \u2014 Kontaktformular \u2192 Airtable + WhatsApp",
"active": false,
"settings": {
"executionOrder": "v1"
},
"nodes": [
{
"id": "c444c68f-e5b3-4c74-8a72-687b17a9a709",
"name": "Webhook \u2014 Kontaktformular",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-208,
0
],
"parameters": {
"httpMethod": "POST",
"path": "contact-form",
"responseMode": "responseNode",
"options": {}
}
},
{
"id": "0a51c800-a348-4f16-b533-6442a3e04959",
"name": "Code \u2014 Extrait donn\u00e9es formulaire",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
16,
0
],
"parameters": {
"jsCode": "// Extrait les donn\u00e9es du body du webhook\nfor (const item of $input.all()) {\n item.json = item.json.body;\n}\nreturn $input.all();"
}
},
{
"id": "f609cb2d-d63a-4940-8afb-03cf714bf411",
"name": "Airtable \u2014 Cr\u00e9er contact CRM",
"type": "n8n-nodes-base.airtable",
"typeVersion": 2.1,
"position": [
208,
0
],
"parameters": {
"operation": "create",
"base": {
"__rl": true,
"value": "YOUR_AIRTABLE_BASE_ID",
"mode": "id"
},
"table": {
"__rl": true,
"value": "YOUR_AIRTABLE_TABLE_ID",
"mode": "id"
},
"columns": {
"mappingMode": "autoMapInputData",
"schema": [
{
"id": "name",
"displayName": "name",
"type": "string"
},
{
"id": "email",
"displayName": "email",
"type": "string"
},
{
"id": "phone",
"displayName": "phone",
"type": "string"
},
{
"id": "company",
"displayName": "company",
"type": "string"
},
{
"id": "message",
"displayName": "message",
"type": "string"
},
{
"id": "service",
"displayName": "service",
"type": "string"
},
{
"id": "timestamp",
"displayName": "timestamp",
"type": "dateTime"
},
{
"id": "source",
"displayName": "source",
"type": "string"
}
]
}
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
}
},
{
"id": "fa2a56bd-b7b4-4200-aa93-0eb5adc80906",
"name": "Code \u2014 Normaliser num\u00e9ro t\u00e9l\u00e9phone",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
432,
0
],
"parameters": {
"jsCode": "// Normalise le num\u00e9ro de t\u00e9l\u00e9phone pour Evolution API\n// Supporte les formats DE (49) et CM (237)\nconst input = $json;\nlet phoneInput = input.phone || (input.fields ? input.fields.phone : '') || '';\n\nlet raw = phoneInput.toString().replace(/[^0-9]/g, '');\nif (raw.startsWith('00')) raw = raw.slice(2);\n\nlet finalNumber = '';\n\n// Allemagne (49)\nif (raw.startsWith('49')) {\n finalNumber = raw;\n} else if (raw.startsWith('0') && (raw.length === 10 || raw.length === 11)) {\n finalNumber = '49' + raw.slice(1);\n}\n// Cameroun (237)\nelse if (raw.startsWith('237')) {\n finalNumber = raw;\n} else if (raw.match(/^[236][0-9]{8}$/)) {\n finalNumber = '237' + raw;\n} else {\n finalNumber = raw;\n}\n\nreturn { ...input, normalizedNumber: finalNumber, debug_raw: raw };"
}
},
{
"id": "8d284f4c-941a-482a-994d-e0ae8107ab50",
"name": "WhatsApp \u2014 Envoyer confirmation client",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
656,
0
],
"parameters": {
"method": "POST",
"url": "=https://YOUR_EVOLUTION_API_URL/message/sendText/YOUR_INSTANCE_NAME",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "apikey",
"value": "={{ $env.EVOLUTION_API_KEY }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"number\": \"{{ $json.normalizedNumber }}\",\n \"text\": \"\ud83d\udc4b Bonjour {{ $json.fields.name }}, merci pour votre demande concernant {{ $json.fields.service }}. Nous vous r\u00e9pondrons dans les 24h.\",\n \"delay\": 0\n}"
}
},
{
"id": "f4c792f2-f401-4795-9975-0830e2d5a80a",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
848,
0
],
"parameters": {
"options": {}
}
}
],
"connections": {
"Webhook \u2014 Kontaktformular": {
"main": [
[
{
"node": "Code \u2014 Extrait donn\u00e9es formulaire",
"type": "main",
"index": 0
}
]
]
},
"Code \u2014 Extrait donn\u00e9es formulaire": {
"main": [
[
{
"node": "Airtable \u2014 Cr\u00e9er contact CRM",
"type": "main",
"index": 0
}
]
]
},
"Airtable \u2014 Cr\u00e9er contact CRM": {
"main": [
[
{
"node": "Code \u2014 Normaliser num\u00e9ro t\u00e9l\u00e9phone",
"type": "main",
"index": 0
}
]
]
},
"Code \u2014 Normaliser num\u00e9ro t\u00e9l\u00e9phone": {
"main": [
[
{
"node": "WhatsApp \u2014 Envoyer confirmation client",
"type": "main",
"index": 0
}
]
]
},
"WhatsApp \u2014 Envoyer confirmation client": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
}
},
"tags": [
"crm",
"airtable",
"whatsapp",
"contact-form"
]
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
airtableTokenApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
CRM Automatisierung — Kontaktformular → Airtable + WhatsApp. Uses airtable, httpRequest. Webhook trigger; 6 nodes.
Source: https://github.com/guilloulearnlife/n8n-portfolio/blob/24614da8343195909d722fe7754bfcdb6d1820bf/workflows/crm-automatisierung.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
qualiopi. Uses airtable, telegram, emailSend, httpRequest. Webhook trigger; 51 nodes.
How it works • Webhook triggers from content creation system in Airtable • Downloads media (images/videos) from Airtable URLs • Uploads media to Postiz cloud storage • Schedules or publishes content a
This workflow automatically deletes user data from different apps/services when a specific slash command is issued in Slack.
This guide will walk you through setting up your n8n workflow. By the end, you'll have a fully automated system for managing your contract employee placements, from generating documents to sending ren
Flujowhatsapp. Uses @aldinokemal2104/n8n-nodes-gowa, postgres, httpRequest. Webhook trigger; 65 nodes.