AutomationFlowsWeb Scraping › Walk-in Booking

Walk-in Booking

Walk-In Booking. Uses httpRequest. Webhook trigger; 7 nodes.

Webhook trigger★★★★☆ complexity7 nodesHTTP Request
Web Scraping Trigger: Webhook Nodes: 7 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:46.376Z",
  "createdAt": "2026-02-26T15:11:17.674Z",
  "id": "4ssAXkBmQXByrjlp",
  "name": "Walk-In Booking",
  "description": null,
  "active": true,
  "isArchived": false,
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "walk-in-booking",
        "responseMode": "responseNode",
        "options": {},
        "authentication": "none"
      },
      "id": "wib-webhook-001",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        240,
        304
      ],
      "credentials": {}
    },
    {
      "parameters": {
        "jsCode": "const body = $input.first().json.body || $input.first().json;\nconst name  = (body.customer_name  || '').trim();\nconst email = (body.customer_email || '').trim().toLowerCase();\nconst phone = (body.customer_phone || '').trim();\nif (!name)  throw new Error('customer_name is required');\nif (!phone) throw new Error('customer_phone is required');\nreturn [{ json: {\n  customer_name:  name,\n  customer_email: email,\n  customer_phone: phone,\n  request_id:     body.request_id     || '',\n  room_id:        body.room_id        || '',\n  room_name:      body.room_name      || '',\n  booking_date:   body.booking_date   || '',\n  date_from:      body.date_from      || body.booking_date || '',\n  date_to:        body.date_to        || body.booking_date || '',\n  start_time:     body.start_time     || '',\n  end_time:       body.end_time       || '',\n  guest_count:    body.guest_count    || '',\n  event_type:     body.event_type     || '',\n  notes:          body.notes          || '',\n  total_amount:   body.total_amount   || 0,\n  payment_amount: body.payment_amount || 0,\n  payment_type:   body.payment_type   || 'deposit',\n  payment_method: body.payment_method || 'cash',\n  status:         body.status         || 'booked',\n  booking_source: 'walk_in',\n  tenant_id: parseInt(body.tenant_id || $input.first().json.headers?.['x-tenant-id'] || $input.first().json.query?.tenant_id || '0')\n}}];"
      },
      "id": "wib-extract-002",
      "name": "Extract Payload",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        460,
        304
      ]
    },
    {
      "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 || '', notes: $('Webhook').first().json.body?.notes || '', jwt: $('Webhook').first().json.body?.jwt || '' }) }}",
        "options": {
          "continueOnFail": true
        }
      },
      "id": "api-wib-001",
      "name": "API: Upsert Customer",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        680,
        304
      ]
    },
    {
      "parameters": {
        "jsCode": "const upsertRow = $input.first().json;\nconst payload   = $('Extract Payload').first().json;\nconst isNew     = upsertRow.is_new === true || upsertRow.is_new === 'true';\nconst clean = {\n  customer_name:  payload.customer_name,\n  customer_email: payload.customer_email,\n  customer_phone: payload.customer_phone,\n  request_id:     (payload.request_id && payload.request_id !== '') ? payload.request_id : null,\n  room_id:        payload.room_id,\n  room_name:      payload.room_name,\n  booking_date:   payload.booking_date,\n  date_from:      payload.date_from,\n  date_to:        payload.date_to,\n  start_time:     payload.start_time,\n  end_time:       payload.end_time,\n  guest_count:    payload.guest_count,\n  event_type:     payload.event_type,\n  notes:          payload.notes,\n  total_amount:   payload.total_amount,\n  payment_amount: payload.payment_amount,\n  payment_type:   payload.payment_type,\n  payment_method: payload.payment_method,\n  booking_source: payload.booking_source,\n  status:         payload.status,\n  tenant_id:      payload.tenant_id,\n  customer_id:    upsertRow.customer_id,\n  is_new:         isNew\n};\nreturn [{ json: { ...clean, _body: JSON.stringify(clean) } }];"
      },
      "id": "wib-build-004",
      "name": "Build Full Payload",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        900,
        304
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://n8n.srv1090894.hstgr.cloud/webhook/make-booking",
        "sendBody": true,
        "contentType": "raw",
        "rawContentType": "application/json",
        "body": "={{ $json._body }}",
        "options": {
          "ignoreHttpStatusErrors": true
        }
      },
      "id": "wib-makebooking-005",
      "name": "Make Booking",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        1120,
        304
      ]
    },
    {
      "parameters": {
        "jsCode": "const mbResult = $input.first().json;\nconst payload = $('Build Full Payload').first().json;\n// make-booking returns status:'success' on success, status:'error'/'blocked' on failure\nconst ok = mbResult.status === 'success' || mbResult.message === 'Booking secured.';\nreturn [{ json: {\n  success: ok,\n  message: ok ? (mbResult.message || 'Walk-in booking created') : (mbResult.message || 'Booking failed'),\n  customer_id: payload.customer_id,\n  is_new:      payload.is_new\n}}];"
      },
      "id": "wib-check-006",
      "name": "Check Result",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1340,
        304
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {
          "responseCode": 200,
          "responseHeaders": {
            "entries": [
              {
                "name": "Access-Control-Allow-Origin",
                "value": "*"
              },
              {
                "name": "Access-Control-Allow-Headers",
                "value": "Content-Type, Authorization"
              }
            ]
          }
        }
      },
      "id": "wib-respond-007",
      "name": "Respond",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1,
      "position": [
        1560,
        304
      ]
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Extract Payload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Payload": {
      "main": [
        [
          {
            "node": "API: Upsert Customer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "API: Upsert Customer": {
      "main": [
        [
          {
            "node": "Build Full Payload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Full Payload": {
      "main": [
        [
          {
            "node": "Make Booking",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Make Booking": {
      "main": [
        [
          {
            "node": "Check Result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Result": {
      "main": [
        [
          {
            "node": "Respond",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "binaryMode": "separate",
    "availableInMCP": true,
    "saveManualExecutions": true,
    "callerPolicy": "workflowsFromSameOwner",
    "errorWorkflow": ""
  },
  "staticData": null,
  "meta": null,
  "versionId": "wib-v2-2026-04-27",
  "activeVersionId": "4244a3f1-3255-4d42-a231-ff9b7549f55d",
  "versionCounter": 93,
  "triggerCount": 1,
  "shared": [
    {
      "updatedAt": "2026-02-26T15:11:17.674Z",
      "createdAt": "2026-02-26T15:11:17.674Z",
      "role": "workflow:owner",
      "workflowId": "4ssAXkBmQXByrjlp",
      "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:03.546Z",
    "createdAt": "2026-03-13T18:18:03.546Z",
    "versionId": "4244a3f1-3255-4d42-a231-ff9b7549f55d",
    "workflowId": "4ssAXkBmQXByrjlp",
    "nodes": [
      {
        "parameters": {
          "httpMethod": "POST",
          "path": "walk-in-booking",
          "responseMode": "responseNode",
          "options": {},
          "authentication": "none"
        },
        "id": "wib-webhook-001",
        "name": "Webhook",
        "type": "n8n-nodes-base.webhook",
        "typeVersion": 2,
        "position": [
          240,
          304
        ],
        "webhookId": "5cc0a0ce-72d9-4cc6-8ba0-e64065b4fa32",
        "credentials": {}
      },
      {
        "parameters": {
          "jsCode": "const body = $input.first().json.body || $input.first().json;\nconst name  = (body.customer_name  || '').trim();\nconst email = (body.customer_email || '').trim().toLowerCase();\nconst phone = (body.customer_phone || '').trim();\nif (!name)  throw new Error('customer_name is required');\nif (!phone) throw new Error('customer_phone is required');\nreturn [{ json: {\n  customer_name:  name,\n  customer_email: email,\n  customer_phone: phone,\n  request_id:     body.request_id     || '',\n  room_id:        body.room_id        || '',\n  room_name:      body.room_name      || '',\n  booking_date:   body.booking_date   || '',\n  date_from:      body.date_from      || body.booking_date || '',\n  date_to:        body.date_to        || body.booking_date || '',\n  start_time:     body.start_time     || '',\n  end_time:       body.end_time       || '',\n  guest_count:    body.guest_count    || '',\n  event_type:     body.event_type     || '',\n  notes:          body.notes          || '',\n  total_amount:   body.total_amount   || 0,\n  payment_amount: body.payment_amount || 0,\n  payment_type:   body.payment_type   || 'deposit',\n  payment_method: body.payment_method || 'cash',\n  status:         body.status         || 'booked',\n  booking_source: 'walk_in',\n  tenant_id: parseInt(body.tenant_id || $input.first().json.headers?.['x-tenant-id'] || $input.first().json.query?.tenant_id || '0')\n}}];"
        },
        "id": "wib-extract-002",
        "name": "Extract Payload",
        "type": "n8n-nodes-base.code",
        "typeVersion": 2,
        "position": [
          460,
          304
        ]
      },
      {
        "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 || '', notes: $('Webhook').first().json.body?.notes || '', jwt: $('Webhook').first().json.body?.jwt || '' }) }}",
          "options": {
            "continueOnFail": true
          }
        },
        "id": "api-wib-001",
        "name": "API: Upsert Customer",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 4.2,
        "position": [
          680,
          304
        ]
      },
      {
        "parameters": {
          "jsCode": "const upsertRow = $input.first().json;\nconst payload   = $('Extract Payload').first().json;\nconst isNew     = upsertRow.is_new === true || upsertRow.is_new === 'true';\nconst clean = {\n  customer_name:  payload.customer_name,\n  customer_email: payload.customer_email,\n  customer_phone: payload.customer_phone,\n  request_id:     (payload.request_id && payload.request_id !== '') ? payload.request_id : null,\n  room_id:        payload.room_id,\n  room_name:      payload.room_name,\n  booking_date:   payload.booking_date,\n  date_from:      payload.date_from,\n  date_to:        payload.date_to,\n  start_time:     payload.start_time,\n  end_time:       payload.end_time,\n  guest_count:    payload.guest_count,\n  event_type:     payload.event_type,\n  notes:          payload.notes,\n  total_amount:   payload.total_amount,\n  payment_amount: payload.payment_amount,\n  payment_type:   payload.payment_type,\n  payment_method: payload.payment_method,\n  booking_source: payload.booking_source,\n  status:         payload.status,\n  tenant_id:      payload.tenant_id,\n  customer_id:    upsertRow.customer_id,\n  is_new:         isNew\n};\nreturn [{ json: { ...clean, _body: JSON.stringify(clean) } }];"
        },
        "id": "wib-build-004",
        "name": "Build Full Payload",
        "type": "n8n-nodes-base.code",
        "typeVersion": 2,
        "position": [
          900,
          304
        ]
      },
      {
        "parameters": {
          "method": "POST",
          "url": "https://n8n.srv1090894.hstgr.cloud/webhook/make-booking",
          "sendBody": true,
          "contentType": "raw",
          "rawContentType": "application/json",
          "body": "={{ $json._body }}",
          "options": {
            "ignoreHttpStatusErrors": true
          }
        },
        "id": "wib-makebooking-005",
        "name": "Make Booking",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 4,
        "position": [
          1120,
          304
        ]
      },
      {
        "parameters": {
          "jsCode": "const mbResult = $input.first().json;\nconst payload = $('Build Full Payload').first().json;\n// make-booking returns status:'success' on success, status:'error'/'blocked' on failure\nconst ok = mbResult.status === 'success' || mbResult.message === 'Booking secured.';\nreturn [{ json: {\n  success: ok,\n  message: ok ? (mbResult.message || 'Walk-in booking created') : (mbResult.message || 'Booking failed'),\n  customer_id: payload.customer_id,\n  is_new:      payload.is_new\n}}];"
        },
        "id": "wib-check-006",
        "name": "Check Result",
        "type": "n8n-nodes-base.code",
        "typeVersion": 2,
        "position": [
          1340,
          304
        ]
      },
      {
        "parameters": {
          "respondWith": "json",
          "responseBody": "={{ JSON.stringify($json) }}",
          "options": {
            "responseCode": 200,
            "responseHeaders": {
              "entries": [
                {
                  "name": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "name": "Access-Control-Allow-Headers",
                  "value": "Content-Type, Authorization"
                }
              ]
            }
          }
        },
        "id": "wib-respond-007",
        "name": "Respond",
        "type": "n8n-nodes-base.respondToWebhook",
        "typeVersion": 1,
        "position": [
          1560,
          304
        ]
      }
    ],
    "connections": {
      "Webhook": {
        "main": [
          [
            {
              "node": "Extract Payload",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Extract Payload": {
        "main": [
          [
            {
              "node": "API: Upsert Customer",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "API: Upsert Customer": {
        "main": [
          [
            {
              "node": "Build Full Payload",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Build Full Payload": {
        "main": [
          [
            {
              "node": "Make Booking",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Make Booking": {
        "main": [
          [
            {
              "node": "Check Result",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Check Result": {
        "main": [
          [
            {
              "node": "Respond",
              "type": "main",
              "index": 0
            }
          ]
        ]
      }
    },
    "authors": "andrew johnson",
    "name": null,
    "description": null,
    "autosaved": false,
    "workflowPublishHistory": [
      {
        "createdAt": "2026-03-15T20:38:46.396Z",
        "id": 1371,
        "workflowId": "4ssAXkBmQXByrjlp",
        "versionId": "4244a3f1-3255-4d42-a231-ff9b7549f55d",
        "event": "deactivated",
        "userId": "e2485274-7097-4eb5-8502-e39b2308096c"
      },
      {
        "createdAt": "2026-03-15T20:38:46.405Z",
        "id": 1372,
        "workflowId": "4ssAXkBmQXByrjlp",
        "versionId": "4244a3f1-3255-4d42-a231-ff9b7549f55d",
        "event": "activated",
        "userId": "e2485274-7097-4eb5-8502-e39b2308096c"
      },
      {
        "createdAt": "2026-03-13T18:18:03.579Z",
        "id": 1286,
        "workflowId": "4ssAXkBmQXByrjlp",
        "versionId": "4244a3f1-3255-4d42-a231-ff9b7549f55d",
        "event": "deactivated",
        "userId": "e2485274-7097-4eb5-8502-e39b2308096c"
      },
      {
        "createdAt": "2026-03-13T18:18:03.601Z",
        "id": 1287,
        "workflowId": "4ssAXkBmQXByrjlp",
        "versionId": "4244a3f1-3255-4d42-a231-ff9b7549f55d",
        "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

Walk-In Booking. Uses httpRequest. Webhook trigger; 7 nodes.

Source: https://github.com/AndyJay72/VenueDesk/blob/main/n8n-workflows/4ssAXkBmQXByrjlp.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