{
  "name": "Lead webhook to CRM",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "inbound-lead",
        "responseMode": "responseNode",
        "options": {}
      },
      "id": "8c1f5b10-0a1e-4a58-9d0d-1b0a11f1a001",
      "name": "Inbound lead",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [-260, 0],
      "webhookId": "inbound-lead"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "a1",
              "name": "full_name",
              "value": "={{ ($json.body.name || '').trim() }}",
              "type": "string"
            },
            {
              "id": "a2",
              "name": "email",
              "value": "={{ ($json.body.email || '').trim().toLowerCase() }}",
              "type": "string"
            },
            {
              "id": "a3",
              "name": "phone",
              "value": "={{ ($json.body.phone || '').replace(/[^0-9+]/g, '') }}",
              "type": "string"
            },
            {
              "id": "a4",
              "name": "source",
              "value": "={{ $json.body.source_site || 'website' }}",
              "type": "string"
            },
            {
              "id": "a5",
              "name": "message",
              "value": "={{ $json.body.project_details || '' }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "id": "8c1f5b10-0a1e-4a58-9d0d-1b0a11f1a002",
      "name": "Normalise fields",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [-40, 0]
    },
    {
      "parameters": {
        "conditions": {
          "options": { "caseSensitive": false, "version": 2 },
          "combinator": "and",
          "conditions": [
            {
              "id": "c1",
              "operator": { "type": "string", "operation": "contains" },
              "leftValue": "={{ $json.email }}",
              "rightValue": "@"
            }
          ]
        },
        "options": {}
      },
      "id": "8c1f5b10-0a1e-4a58-9d0d-1b0a11f1a003",
      "name": "Has a usable email",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [180, 0]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://www.zohoapis.com/crm/v5/Leads",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "zohoOAuth2Api",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({ data: [{ Last_Name: $json.full_name || 'Unknown', Email: $json.email, Phone: $json.phone, Lead_Source: $json.source, Description: $json.message }] }) }}",
        "options": {}
      },
      "id": "8c1f5b10-0a1e-4a58-9d0d-1b0a11f1a004",
      "name": "Create CRM lead",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [420, -100]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify({ success: true }) }}",
        "options": {}
      },
      "id": "8c1f5b10-0a1e-4a58-9d0d-1b0a11f1a005",
      "name": "Respond OK",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [660, -100]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseCode": 422,
        "responseBody": "={{ JSON.stringify({ success: false, error: 'Missing or invalid email' }) }}",
        "options": {}
      },
      "id": "8c1f5b10-0a1e-4a58-9d0d-1b0a11f1a006",
      "name": "Respond invalid",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [420, 120]
    }
  ],
  "connections": {
    "Inbound lead": { "main": [[{ "node": "Normalise fields", "type": "main", "index": 0 }]] },
    "Normalise fields": {
      "main": [[{ "node": "Has a usable email", "type": "main", "index": 0 }]]
    },
    "Has a usable email": {
      "main": [
        [{ "node": "Create CRM lead", "type": "main", "index": 0 }],
        [{ "node": "Respond invalid", "type": "main", "index": 0 }]
      ]
    },
    "Create CRM lead": { "main": [[{ "node": "Respond OK", "type": "main", "index": 0 }]] }
  },
  "settings": { "executionOrder": "v1" },
  "active": false,
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": false,
    "source": "godesigntech.com free n8n template library"
  }
}
