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 →
{
"id": "metaWhatsAppWebhook",
"name": "ConfortPlace - Meta WhatsApp Webhook",
"nodes": [
{
"parameters": {
"httpMethod": "GET",
"path": "confortplace-whatsapp-meta",
"responseMode": "responseNode",
"options": {}
},
"id": "meta-verify-webhook",
"name": "Meta Verify Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
0,
0
]
},
{
"parameters": {
"jsCode": "const query = $json.query || {};\nconst expectedToken = 'confortplace_whatsapp_verify_2026';\nconst verified = query['hub.mode'] === 'subscribe' && query['hub.verify_token'] === expectedToken;\nreturn [{ json: { statusCode: verified ? 200 : 403, responseBody: verified ? String(query['hub.challenge'] || '') : 'webhook_verification_failed' } }];"
},
"id": "verify-token",
"name": "Verify Token",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
260,
0
]
},
{
"parameters": {
"respondWith": "text",
"responseBody": "={{ $json.responseBody }}",
"options": {
"responseCode": "={{ $json.statusCode }}",
"responseHeaders": {
"entries": [
{
"name": "Content-Type",
"value": "text/plain"
}
]
}
}
},
"id": "respond-challenge",
"name": "Respond Challenge",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
520,
0
]
},
{
"parameters": {
"httpMethod": "POST",
"path": "confortplace-whatsapp-meta",
"responseMode": "onReceived",
"options": {
"responseCode": 200
}
},
"id": "meta-event-webhook",
"name": "Meta Event Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
0,
240
]
},
{
"parameters": {
"method": "POST",
"url": "http://api:3000/webhooks/meta/whatsapp",
"sendBody": true,
"contentType": "raw",
"rawContentType": "application/json",
"body": "={{ JSON.stringify($json.body || $json) }}",
"options": {}
},
"id": "forward-event",
"name": "Forward Event to API",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
260,
240
]
}
],
"connections": {
"Meta Verify Webhook": {
"main": [
[
{
"node": "Verify Token",
"type": "main",
"index": 0
}
]
]
},
"Verify Token": {
"main": [
[
{
"node": "Respond Challenge",
"type": "main",
"index": 0
}
]
]
},
"Meta Event Webhook": {
"main": [
[
{
"node": "Forward Event to API",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1",
"timezone": "America/Toronto"
},
"versionId": "55555555-5555-4555-8555-555555555555",
"meta": {
"templateCredsSetupCompleted": false
},
"tags": []
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
ConfortPlace - Meta WhatsApp Webhook. Uses httpRequest. Webhook trigger; 5 nodes.
Source: https://github.com/Jehosua97/n8nMultiServiceAutomation/blob/main/workflows/n8n/meta-whatsapp-webhook.workflow.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.