This workflow corresponds to n8n.io template #2548 — we link there as the canonical source.
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": "5BjmEGmHyXKxm61l",
"name": "parse encoded WebHook for amoCRM",
"tags": [],
"nodes": [
{
"id": "57ecb69b-4f2d-4b26-8534-84288c654ffa",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-220,
0
],
"parameters": {
"path": "72b4b381-4474-46dc-af61-c7c0c49b1ab1",
"options": {
"rawBody": true
},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "540f10af-a63c-4c4b-83d3-d759ed63854e",
"name": "Extract from File",
"type": "n8n-nodes-base.extractFromFile",
"position": [
0,
0
],
"parameters": {
"options": {},
"operation": "text"
},
"typeVersion": 1
},
{
"id": "edf41443-4225-47ab-a419-8449ee8589c7",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
200,
0
],
"parameters": {
"jsCode": "const result = {};\nvar str = $input.all(0)[0].json.data;\nstr.split('&').forEach(pair => {\n const [key, value] = pair.split('=');\n let currentObj = result;\n\n const keys = key.split('%5B').map(k => k.replace(/%5D/g, ''));\n keys.forEach((k, index) => {\n if (index === keys.length - 1) {\n currentObj[k] = decodeURIComponent(value || '');\n } else {\n if (!currentObj[k]) {\n currentObj[k] = {};\n }\n currentObj = currentObj[k];\n }\n });\n});\nreturn result;\n"
},
"typeVersion": 2
},
{
"id": "2e0037b6-fc11-4fa7-8a8e-b0f0fbe53c4d",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"position": [
400,
0
],
"parameters": {
"options": {},
"fieldToSplitOut": "leads.update['0'].custom_fields"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "f73a89ca-a645-4f08-a474-8b25ccb8bf64",
"connections": {
"Code": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "Extract from File",
"type": "main",
"index": 0
}
]
]
},
"Extract from File": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This template processes webhooks received from amoCRM in a URL-encoded format and transforms the data into a structured array that n8n can easily interpret. By default, n8n does not automatically parse URL-encoded webhook payloads into usable JSON. This template bridges that…
Source: https://n8n.io/workflows/2548/ — 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.
A clean, extensible REST-style API routing template for n8n webhooks with up to 3 path levels. Serves API routes via Webhooks with path variables Normalizes incoming requests into "global" REQUEST and
PUQ Docker NextCloud deploy. Uses respondToWebhook, stickyNote, httpRequest, ssh. Webhook trigger; 44 nodes.
puq-docker-immich-deploy. Uses respondToWebhook, ssh, stickyNote. Webhook trigger; 35 nodes.
Analyze_email_headers_for_IPs_and_spoofing__3. Uses stickyNote, respondToWebhook, itemLists, httpRequest. Webhook trigger; 35 nodes.
puq-docker-n8n-deploy. Uses respondToWebhook, ssh, stickyNote. Webhook trigger; 34 nodes.