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": "peskids-whatsapp-receiver",
"name": "Peskids WhatsApp Receiver (Baileys)",
"active": true,
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "peskids-whatsapp",
"responseMode": "responseNode",
"responseData": "first"
},
"id": "webhook-trigger",
"name": "Webhook Trigger",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [
250,
300
]
},
{
"parameters": {
"functionCode": "// Parse Baileys webhook payload\n// Input: { from, name, text, timestamp }\n// Output: normalized message object\n\nconst payload = $input.first().body;\n\nreturn {\n tenant_id: 'peskids',\n source: 'whatsapp',\n sender_contact: payload.from || '',\n sender_name: payload.name || 'Unknown',\n message_text: payload.text || '',\n external_id: payload.messageId || payload.timestamp || '',\n created_at: new Date().toISOString()\n};"
},
"id": "parse-message",
"name": "Parse Message",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"position": [
450,
300
]
},
{
"parameters": {
"method": "POST",
"url": "={{ $env.PESKIDS_INBOUND_WEBHOOK_URL || 'https://peskids.op-sly.com/api/webhooks/inbound' }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "x-webhook-secret",
"value": "={{ $env.PESKIDS_INBOUND_WEBHOOK_SECRET || $env.JELOU_WEBHOOK_SECRET }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ source: 'whatsapp', from: $node[\"Parse Message\"].json.sender_contact, name: $node[\"Parse Message\"].json.sender_name, text: $node[\"Parse Message\"].json.message_text, messageId: $node[\"Parse Message\"].json.external_id }) }}",
"options": {}
},
"id": "insert-message",
"name": "POST Peskids Inbound",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
650,
300
]
},
{
"parameters": {
"method": "POST",
"url": "={{ $env.OPSLY_EVENT_BUS_URL }}/events",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "event_type",
"value": "=message.received"
},
{
"name": "tenant_id",
"value": "=peskids"
},
{
"name": "source",
"value": "=whatsapp"
},
{
"name": "sender_contact",
"value": "={{ $node[\"Parse Message\"].json.sender_contact }}"
},
{
"name": "message_text",
"value": "={{ $node[\"Parse Message\"].json.message_text }}"
},
{
"name": "timestamp",
"value": "={{ new Date().toISOString() }}"
}
]
}
},
"id": "emit-event",
"name": "Emit Event to Opsly",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
850,
300
],
"continueOnFail": true
},
{
"parameters": {
"responseCode": 200,
"responseData": {
"preset": "autoOutput"
}
},
"id": "response",
"name": "Return 200 OK",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1,
"position": [
1050,
300
]
}
],
"connections": {
"webhook-trigger": {
"main": [
[
{
"node": "parse-message",
"type": "main",
"index": 0
}
]
]
},
"parse-message": {
"main": [
[
{
"node": "insert-message",
"type": "main",
"index": 0
}
]
]
},
"insert-message": {
"main": [
[
{
"node": "emit-event",
"type": "main",
"index": 0
}
]
]
},
"emit-event": {
"main": [
[
{
"node": "response",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"versionId": "1",
"meta": {
"created": "2026-05-19T16:30:00Z",
"updated": "2026-05-19T16:30:00Z"
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Peskids WhatsApp Receiver (Baileys). Uses httpRequest. Webhook trigger; 5 nodes.
Source: https://github.com/cloudsysops/opsly/blob/981038769da13c3c269057bc7be1f99fde77bbc7/.n8n/1-workflows/peskids/whatsapp-receiver.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.