AutomationFlowsWeb Scraping › Create Customer Record

Create Customer Record

Create Customer Record. Uses httpRequest. Webhook trigger; 5 nodes.

Webhook trigger★★★★☆ complexity5 nodesHTTP Request
Web Scraping Trigger: Webhook Nodes: 5 Complexity: ★★★★☆ Added:

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 →

Download .json
{
  "updatedAt": "2026-03-15T20:38:51.026Z",
  "createdAt": "2026-02-26T15:09:55.080Z",
  "id": "8LTgEKbPIWNPy3QU",
  "name": "Create Customer Record",
  "description": null,
  "active": true,
  "isArchived": false,
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "create-customer-record",
        "authentication": "none",
        "responseMode": "responseNode",
        "options": {}
      },
      "id": "6c88b43e-70e3-47b8-8240-9dcfd98949ba",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        240,
        300
      ],
      "credentials": {}
    },
    {
      "parameters": {
        "jsCode": "const body = $input.first().json.body || $input.first().json;\n\nconst full_name = (body.full_name || '').trim();\nconst email     = (body.email    || '').trim().toLowerCase();\nconst phone     = (body.phone    || '').trim();\n\nif (!full_name) throw new Error('full_name is required');\n\nconst tenant_id = parseInt(body.tenant_id) || 0;\nreturn [{ json: { full_name, email, phone, tenant_id } }];\n"
      },
      "id": "9466da75-3a19-487b-8dab-39f23d496aa6",
      "name": "Validate Input",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        480,
        300
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.venuedesk.co.uk/customers/upsert",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "contentType": "json",
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({ full_name: $('Webhook').first().json.body?.full_name || '', email: $('Webhook').first().json.body?.email || '', phone: $('Webhook').first().json.body?.phone || '', event_type: $('Webhook').first().json.body?.event_type || '', event_date: $('Webhook').first().json.body?.event_date || '', guests_count: $('Webhook').first().json.body?.guests_count || 0, notes: $('Webhook').first().json.body?.notes || '', jwt: $('Webhook').first().json.body?.jwt || '' }) }}",
        "options": {
          "continueOnFail": true
        }
      },
      "id": "api-ccr-001",
      "name": "API: Upsert Customer",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        720,
        300
      ]
    },
    {
      "parameters": {
        "jsCode": "const row = $input.first().json;\n\nif (!row || !row.customer_id) {\n  throw new Error('INSERT did not return a customer_id \u2014 check your table schema');\n}\n\nreturn [{ json: {\n  success: true,\n  customer_id: row.customer_id,\n  full_name:   row.full_name,\n  email:       row.email\n}}];\n"
      },
      "id": "0e6b9b3d-7c50-4b83-b8cd-981a0e664dd1",
      "name": "Format Response",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        960,
        300
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {
          "responseCode": 200
        }
      },
      "id": "a71bb1c8-710e-4518-a106-8eecbdc435d5",
      "name": "Respond Success",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1,
      "position": [
        1200,
        300
      ]
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Validate Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Input": {
      "main": [
        [
          {
            "node": "API: Upsert Customer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "API: Upsert Customer": {
      "main": [
        [
          {
            "node": "Format Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Response": {
      "main": [
        [
          {
            "node": "Respond Success",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "binaryMode": "separate",
    "availableInMCP": true,
    "saveManualExecutions": true,
    "callerPolicy": "workflowsFromSameOwner",
    "errorWorkflow": ""
  },
  "staticData": null,
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "versionId": "ccr-v2-2026-04-27",
  "activeVersionId": "a7beca78-b947-49fd-bbda-4719982bce67",
  "versionCounter": 44,
  "triggerCount": 1,
  "shared": [
    {
      "updatedAt": "2026-02-26T15:09:55.080Z",
      "createdAt": "2026-02-26T15:09:55.080Z",
      "role": "workflow:owner",
      "workflowId": "8LTgEKbPIWNPy3QU",
      "projectId": "xsdyFVsct988qLUy",
      "project": {
        "updatedAt": "2025-12-04T20:24:17.537Z",
        "createdAt": "2025-12-04T19:47:48.685Z",
        "id": "xsdyFVsct988qLUy",
        "name": "andrew johnson <andrew.ralston.johnson@gmail.com>",
        "type": "personal",
        "icon": null,
        "description": null,
        "creatorId": "e2485274-7097-4eb5-8502-e39b2308096c"
      }
    }
  ],
  "tags": [],
  "activeVersion": {
    "updatedAt": "2026-03-13T18:18:04.315Z",
    "createdAt": "2026-03-13T18:18:04.315Z",
    "versionId": "a7beca78-b947-49fd-bbda-4719982bce67",
    "workflowId": "8LTgEKbPIWNPy3QU",
    "nodes": [
      {
        "parameters": {
          "httpMethod": "POST",
          "path": "create-customer-record",
          "authentication": "none",
          "responseMode": "responseNode",
          "options": {}
        },
        "id": "6c88b43e-70e3-47b8-8240-9dcfd98949ba",
        "name": "Webhook",
        "type": "n8n-nodes-base.webhook",
        "typeVersion": 1,
        "position": [
          240,
          300
        ],
        "webhookId": "5cc0a0ce-72d9-4cc6-8ba0-e64065b4fa32",
        "credentials": {}
      },
      {
        "parameters": {
          "jsCode": "const body = $input.first().json.body || $input.first().json;\n\nconst full_name = (body.full_name || '').trim();\nconst email     = (body.email    || '').trim().toLowerCase();\nconst phone     = (body.phone    || '').trim();\n\nif (!full_name) throw new Error('full_name is required');\n\nconst tenant_id = parseInt(body.tenant_id) || 0;\nreturn [{ json: { full_name, email, phone, tenant_id } }];\n"
        },
        "id": "9466da75-3a19-487b-8dab-39f23d496aa6",
        "name": "Validate Input",
        "type": "n8n-nodes-base.code",
        "typeVersion": 2,
        "position": [
          480,
          300
        ]
      },
      {
        "parameters": {
          "method": "POST",
          "url": "https://api.venuedesk.co.uk/customers/upsert",
          "sendHeaders": true,
          "headerParameters": {
            "parameters": [
              {
                "name": "Content-Type",
                "value": "application/json"
              }
            ]
          },
          "sendBody": true,
          "contentType": "json",
          "specifyBody": "json",
          "jsonBody": "={{ JSON.stringify({ full_name: $('Webhook').first().json.body?.full_name || '', email: $('Webhook').first().json.body?.email || '', phone: $('Webhook').first().json.body?.phone || '', event_type: $('Webhook').first().json.body?.event_type || '', event_date: $('Webhook').first().json.body?.event_date || '', guests_count: $('Webhook').first().json.body?.guests_count || 0, notes: $('Webhook').first().json.body?.notes || '', jwt: $('Webhook').first().json.body?.jwt || '' }) }}",
          "options": {
            "continueOnFail": true
          }
        },
        "id": "api-ccr-001",
        "name": "API: Upsert Customer",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 4.2,
        "position": [
          720,
          300
        ]
      },
      {
        "parameters": {
          "jsCode": "const row = $input.first().json;\n\nif (!row || !row.customer_id) {\n  throw new Error('INSERT did not return a customer_id \u2014 check your table schema');\n}\n\nreturn [{ json: {\n  success: true,\n  customer_id: row.customer_id,\n  full_name:   row.full_name,\n  email:       row.email\n}}];\n"
        },
        "id": "0e6b9b3d-7c50-4b83-b8cd-981a0e664dd1",
        "name": "Format Response",
        "type": "n8n-nodes-base.code",
        "typeVersion": 2,
        "position": [
          960,
          300
        ]
      },
      {
        "parameters": {
          "respondWith": "json",
          "responseBody": "={{ JSON.stringify($json) }}",
          "options": {
            "responseCode": 200
          }
        },
        "id": "a71bb1c8-710e-4518-a106-8eecbdc435d5",
        "name": "Respond Success",
        "type": "n8n-nodes-base.respondToWebhook",
        "typeVersion": 1,
        "position": [
          1200,
          300
        ]
      }
    ],
    "connections": {
      "Webhook": {
        "main": [
          [
            {
              "node": "Validate Input",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Validate Input": {
        "main": [
          [
            {
              "node": "API: Upsert Customer",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "API: Upsert Customer": {
        "main": [
          [
            {
              "node": "Format Response",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Format Response": {
        "main": [
          [
            {
              "node": "Respond Success",
              "type": "main",
              "index": 0
            }
          ]
        ]
      }
    },
    "authors": "andrew johnson",
    "name": null,
    "description": null,
    "autosaved": false,
    "workflowPublishHistory": [
      {
        "createdAt": "2026-03-15T20:38:51.087Z",
        "id": 1373,
        "workflowId": "8LTgEKbPIWNPy3QU",
        "versionId": "a7beca78-b947-49fd-bbda-4719982bce67",
        "event": "deactivated",
        "userId": "e2485274-7097-4eb5-8502-e39b2308096c"
      },
      {
        "createdAt": "2026-03-15T20:38:51.121Z",
        "id": 1374,
        "workflowId": "8LTgEKbPIWNPy3QU",
        "versionId": "a7beca78-b947-49fd-bbda-4719982bce67",
        "event": "activated",
        "userId": "e2485274-7097-4eb5-8502-e39b2308096c"
      },
      {
        "createdAt": "2026-03-13T18:18:04.348Z",
        "id": 1288,
        "workflowId": "8LTgEKbPIWNPy3QU",
        "versionId": "a7beca78-b947-49fd-bbda-4719982bce67",
        "event": "deactivated",
        "userId": "e2485274-7097-4eb5-8502-e39b2308096c"
      },
      {
        "createdAt": "2026-03-13T18:18:04.360Z",
        "id": 1289,
        "workflowId": "8LTgEKbPIWNPy3QU",
        "versionId": "a7beca78-b947-49fd-bbda-4719982bce67",
        "event": "activated",
        "userId": "e2485274-7097-4eb5-8502-e39b2308096c"
      }
    ]
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Create Customer Record. Uses httpRequest. Webhook trigger; 5 nodes.

Source: https://github.com/AndyJay72/VenueDesk/blob/main/n8n-workflows/8LTgEKbPIWNPy3QU.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

This n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di

n8n, Execute Workflow Trigger, HTTP Request +1
Web Scraping

This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .

HTTP Request, Ssh
Web Scraping

eek-Go v2 (Batch-Then-Review). Uses httpRequest. Webhook trigger; 75 nodes.

HTTP Request
Web Scraping

This workflow receives webhook requests from a content calendar and uses the X API v2 to publish text posts, threads, image/video posts, and polls, as well as delete existing posts and run a credentia

HTTP Request
Web Scraping

This workflow acts as a central API gateway for all technical indicator agents in the Binance Spot Market Quant AI system. It listens for incoming webhook requests and dynamically routes them to the c

HTTP Request