This workflow follows the Agent → Googlegemini 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": "WhatsApp",
"nodes": [
{
"parameters": {
"method": "POST",
"options": {}
},
"id": "33e9e080-7891-4984-904d-30f1d9857983",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1800,
120
]
},
{
"parameters": {
"resource": "assistant",
"operation": "create",
"modelId": {
"__rl": true,
"value": "gpt-4o-mini",
"mode": "list",
"cachedResultName": "GPT-4O-MINI"
},
"name": "PAGAMENTO",
"description": "Calculadora de pagamentos",
"instructions": "\ud83d\udc4b Ol\u00e1! Vou te ajudar a organizar os pagamentos do seu neg\u00f3cio de forma simples e direta.\n\n1. Envie as despesas com valores e vencimentos. Exemplo: \"Aluguel: R$ 1.000,00 - dia 5\"\n\n2. Se faltar a data, o valor, ou se uma data ou valor for informado sem associa\u00e7\u00e3o a um pagamento espec\u00edfico (por exemplo, uma data como 'dia 8' sem especificar o pagamento), vou te pedir a informa\u00e7\u00e3o pendente ou perguntar a qual pagamento a data ou valor se refere.\n\n3. Somo o total e te informo.\n\n4. Informe se pagou ou teve desconto. Exemplo: \"Paguei R$ 100,00 da Internet - dia 3\"\n\n5. Ajusto o valor final e te mostro quanto ainda falta pagar.\n\nResumo claro e direto para te ajudar a gerenciar seus pagamentos!",
"codeInterpreter": true,
"options": {}
},
"id": "e7fea979-fb86-42b3-8a0f-3b747512f7a5",
"name": "PAGAMENTO",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.4,
"position": [
1560,
120
],
"alwaysOutputData": true,
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"resource": "assistant",
"operation": "create",
"modelId": {
"__rl": true,
"value": "gpt-4o-mini",
"mode": "list",
"cachedResultName": "GPT-4O-MINI"
},
"name": "RECEBIMENTO",
"description": "Controle de Cobran\u00e7as",
"instructions": "\ud83d\udc4b Ol\u00e1! Vou te ajudar a organizar as cobran\u00e7as do seu neg\u00f3cio de forma simples e direta.\n\n1. Envie as cobran\u00e7as com valores e vencimentos. Exemplo: \"Aluguel: R$ 1.000,00 - dia 5\"\n\n2. Se faltar a data, o valor, ou se uma data ou valor for informado sem associa\u00e7\u00e3o a uma cobran\u00e7a espec\u00edfica (por exemplo, uma data como 'dia 8' sem especificar o pagamento), vou te pedir a informa\u00e7\u00e3o pendente ou perguntar a qual cobran\u00e7a a data ou valor se refere.\n\n3. Somo o total e te informo.\n\n4. Informe se o devedor pagou ou teve desconto. Exemplo: \"Recebi R$ 100,00 da Maria - dia 3\"\n\n5. Ajusto o valor final e te mostro quanto ainda falta cobrar.\n\nResumo claro e direto para te ajudar a gerenciar\u00a0suas\u00a0cobran\u00e7as!",
"codeInterpreter": true,
"options": {}
},
"id": "d5d3d305-6c1f-4151-9145-b822ea4ae64f",
"name": "COBRAN\u00c7AS",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.4,
"position": [
1560,
300
],
"alwaysOutputData": true,
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"resource": "assistant",
"operation": "create",
"modelId": {
"__rl": true,
"value": "gpt-4o-mini",
"mode": "list",
"cachedResultName": "GPT-4O-MINI"
},
"name": "DIRECIONADOR",
"description": "Categoria - pagamento ou recebimento",
"instructions": "Voc\u00ea \u00e9 uma calculadora financeira que o usu\u00e1rio est\u00e1 fazendo solicita\u00e7\u00f5es, e voc\u00ea precisa classificar as solicita\u00e7\u00f5es como PAGAMENTO ou RECEBIMENTO.\n\nPergunte ao usu\u00e1rio se \u00e9 conta ou recebimento, com uma explica\u00e7\u00e3o l\u00fadica, sendo tudo que \u00e9 conta ter\u00e1 uma sa\u00edda com a palavra pagamento e tudo que for recebimento \u00e9 o que o cliente do usu\u00e1rio est\u00e1 pagando para ele.\n\nRecebimento: Algo que algu\u00e9m vai pagar para voc\u00ea (como uma venda).\n\nPagamento: Algo que voc\u00ea precisa pagar para algu\u00e9m (como uma conta de luz).\n\nFinalize a intera\u00e7\u00e3o pedindo para o usu\u00e1rio responder 'pagamento' ou 'recebimento'. Assim que o usu\u00e1rio responder, exiba a frase correspondente: 'Voc\u00ea selecionou PAGAMENTO' ou 'Voc\u00ea selecionou RECEBIMENTO'.",
"codeInterpreter": true,
"options": {}
},
"id": "3287e295-1506-4ae5-9e07-699de39652f9",
"name": "DIRECIONADOR",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.4,
"position": [
1040,
200
],
"alwaysOutputData": true,
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"operation": "write",
"fileName": "/home/pehe/Documentos/data",
"options": {}
},
"id": "50bb46e0-74c8-4dbc-8664-d7caa01de2b8",
"name": "Read/Write Files from Disk",
"type": "n8n-nodes-base.readWriteFile",
"typeVersion": 1,
"position": [
1160,
340
],
"alwaysOutputData": true
},
{
"parameters": {
"resource": "audio",
"operation": "transcribe",
"options": {}
},
"id": "0218af93-db18-4a3e-9e4a-fac7d99e9d3c",
"name": "TRANSCRITOR",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.4,
"position": [
840,
340
],
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "385ad35f-5cb3-4a7d-8f1e-7093e4cc1218",
"leftValue": "",
"rightValue": "",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "b6662c05-80af-47a0-bcd9-4e99659e9824",
"name": "If",
"type": "n8n-nodes-base.if",
"typeVersion": 2.1,
"position": [
540,
220
]
},
{
"parameters": {
"jsCode": "return [\n {\n json: {\n transcricao: \"Gostaria de saber sobre pagamentos.\"\n }\n },\n {\n json: {\n transcricao: \"Preciso de ajuda com cobran\u00e7as.\"\n }\n }\n];\n"
},
"id": "33e3bca9-985e-4180-93e1-4a424423a690",
"name": "Code",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
980,
360
]
},
{
"parameters": {
"path": "evolution",
"options": {}
},
"id": "cba2d3f4-2dce-409c-92e7-f64debb568d3",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
360,
220
],
"disabled": true
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "ba3c4333-36b5-446b-adaf-c33f4061c55d",
"leftValue": "",
"rightValue": "",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "31e68f70-133e-4cbd-8570-327c234c929b",
"name": "If1",
"type": "n8n-nodes-base.if",
"typeVersion": 2.1,
"position": [
1200,
200
]
},
{
"parameters": {
"method": "POST",
"options": {}
},
"id": "7569b3a0-e61a-4df7-a768-048ab9842402",
"name": "HTTP Request1",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1800,
300
]
}
],
"connections": {
"PAGAMENTO": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"Read/Write Files from Disk": {
"main": [
[]
]
},
"If": {
"main": [
[
{
"node": "DIRECIONADOR",
"type": "main",
"index": 0
}
]
]
},
"Code": {
"main": [
[
{
"node": "DIRECIONADOR",
"type": "main",
"index": 0
}
]
]
},
"TRANSCRITOR": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
},
{
"node": "Read/Write Files from Disk",
"type": "main",
"index": 0
}
]
]
},
"If1": {
"main": [
[
{
"node": "PAGAMENTO",
"type": "main",
"index": 0
}
],
[
{
"node": "COBRAN\u00c7AS",
"type": "main",
"index": 0
}
]
]
},
"DIRECIONADOR": {
"main": [
[
{
"node": "If1",
"type": "main",
"index": 0
}
]
]
},
"COBRAN\u00c7AS": {
"main": [
[
{
"node": "HTTP Request1",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "367ec0fc-4f2b-4322-9828-9ead65493bf4",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "j18XnFGYayec6N0O",
"tags": []
}
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.
googleApigooglePalmApipostgres
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow enables seamless, intelligent conversations via WhatsApp, allowing businesses to automate customer support and engagement without manual intervention. It responds to incoming messages with context-aware replies powered by Google Vertex AI, ensuring personalised interactions that boost satisfaction and efficiency. Ideal for small teams or e-commerce owners handling frequent queries, the key step involves the AI agent analysing message content to generate structured, relevant responses before sending them back through the Z-API integration.
Use this workflow for moderate-volume WhatsApp channels needing quick, AI-driven replies, such as product inquiries or booking confirmations, especially when integrating with PostgreSQL for chat history. Avoid it for high-security applications requiring on-premise processing or non-text media handling, as it focuses on textual dialogues. Common variations include swapping Google Vertex for another LLM or adding sentiment analysis nodes for escalated support.
About this workflow
Whatsapp. Uses memoryManager, lmChatGoogleVertex, outputParserStructured, agent. Webhook trigger; 19 nodes.
Source: https://github.com/joziel99/hackathon-dev-de-impacto-ajud-ia/blob/bd6216c07b6dbea83e65ce1aaa8f6d9d1c47f840/n8n/n8n-Whatsapp.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.
CLINICAINTEGRAL_secretary. Uses postgres, mcpClientTool, googleDriveTool, toolWorkflow. Webhook trigger; 89 nodes.
Resume Screening & Behavioral Interviews with Gemini, Elevenlabs, & Notion ATS copy. Uses outputParserStructured, chainLlm, googleDrive, stickyNote. Webhook trigger; 67 nodes.
Candidate Engagement | Resume Screening | AI Voice Interviews | Applicant Insights
leads. Uses supabase, gmail, formTrigger, httpRequest. Webhook trigger; 62 nodes.
Brokeria-v20. Uses n8n-nodes-waha, httpRequest, redis, googleGemini. Webhook trigger; 56 nodes.