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": "WhatsApp Echo",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "whatsapp",
"responseMode": "onReceived",
"options": {}
},
"id": "b1a1a1a1-1111-4111-8111-111111111111",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
-40,
300
]
},
{
"parameters": {
"jsCode": "const b = ($input.first().json.body) || $input.first().json || {};\nconst data = b.data || {};\nconst jid = (data.key && data.key.remoteJid) || '';\n// Para @lid (WhatsApp esconde o numero) manda o JID completo; senao, so os digitos.\nconst destino = jid.endsWith('@lid') ? jid : jid.split('@')[0];\nconst msg = data.message || {};\nconst texto = msg.conversation || (msg.extendedTextMessage && msg.extendedTextMessage.text) || '';\nconst fromMe = (data.key && data.key.fromMe) || false;\nif (fromMe || !texto || !destino) { return []; }\nreturn [{ json: { telefone: destino, texto } }];"
},
"id": "c2b2b2b2-2222-4222-8222-222222222222",
"name": "Extrair",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
200,
300
]
},
{
"parameters": {
"method": "POST",
"url": "http://evolution:8080/message/sendText/__INSTANCE__",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "apikey",
"value": "__EVOLUTION_KEY__"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"number\": \"{{ $json.telefone }}\",\n \"text\": \"Voc\u00ea disse: {{ $json.texto }}\"\n}",
"options": {}
},
"id": "d3c3c3c3-3333-4333-8333-333333333333",
"name": "Responder WhatsApp",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
440,
300
]
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Extrair",
"type": "main",
"index": 0
}
]
]
},
"Extrair": {
"main": [
[
{
"node": "Responder WhatsApp",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
WhatsApp Echo. Uses httpRequest. Webhook trigger; 3 nodes.
Source: https://github.com/gacherubini/CRM/blob/b43fa696169ba1a9509fe927f16741644417283e/n8n/workflow-echo.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.
Flujowhatsapp. Uses @aldinokemal2104/n8n-nodes-gowa, postgres, httpRequest. Webhook trigger; 65 nodes.
HR teams, IT Operations, and System Administrators managing employee onboarding at scale. It’s perfect if you use Odoo 18 to trigger account requests and need Redmine + GitLab accounts created instant
This workflow is a complete, production-ready solution for recovering abandoned carts in Shopify stores using a multi-channel, multi-touch approach. It automates personalized follow-ups via Email, SMS
WF_UNIFIED_LEGAL_AUTOMATION. Uses googleSheets, httpRequest, telegram, telegramTrigger. Webhook trigger; 53 nodes.
Backbrief: transcripts (Zoom webhook -> Slack + vault). Uses httpRequest, slack. Webhook trigger; 52 nodes.