{
  "name": "Lead Capture Automation — n8n Workflow",
  "description": "Captures leads from form submissions, enriches the data, logs to Google Sheets, and sends Slack notifications.",
  "nodes": [
    {
      "parameters": { "path": "capture-lead", "httpMethod": "POST", "responseMode": "onReceived", "responseData": "={{ { status: 'ok', message: 'Lead received' } }}" },
      "name": "Lead Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [250, 300]
    },
    {
      "parameters": {
        "jsCode": "const lead = $input.first().json;\nconst now = new Date().toISOString();\nreturn [{ json: {\n  first_name: lead.first_name || lead.name?.split(' ')[0] || '',\n  last_name: lead.last_name || lead.name?.split(' ').slice(1).join(' ') || '',\n  email: lead.email || '',\n  phone: lead.phone || '',\n  company: lead.company || '',\n  source: lead.source || lead.utm_source || 'direct',\n  message: lead.message || '',\n  captured_at: now,\n  score: (lead.company ? 2 : 0) + (lead.phone ? 1 : 0) + (lead.message?.length > 50 ? 1 : 0)\n}}];"
      },
      "name": "Normalize & Score Lead",
      "type": "n8n-nodes-base.code",
      "position": [450, 300]
    },
    {
      "parameters": {
        "conditions": {
          "number": [{ "value1": "={{ $json.score }}", "operation": "greaterEqual", "value2": 2 }]
        }
      },
      "name": "Is Qualified?",
      "type": "n8n-nodes-base.if",
      "position": [650, 300]
    },
    {
      "parameters": {
        "operation": "append",
        "sheetId": "YOUR_SHEET_ID",
        "range": "Leads!A:I",
        "values": "={{ [$json.first_name, $json.last_name, $json.email, $json.phone, $json.company, $json.source, $json.message, $json.score, $json.captured_at] }}"
      },
      "name": "Log to Google Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [850, 200]
    },
    {
      "parameters": {
        "channel": "#qualified-leads",
        "text": "🔥 *Qualified lead!*\n*Name:* {{ $json.first_name }} {{ $json.last_name }}\n*Company:* {{ $json.company }}\n*Email:* {{ $json.email }}\n*Phone:* {{ $json.phone }}\n*Source:* {{ $json.source }}\n*Score:* {{ $json.score }}/4\n*Message:* {{ $json.message }}"
      },
      "name": "Slack — Hot Lead",
      "type": "n8n-nodes-base.slack",
      "position": [850, 100]
    },
    {
      "parameters": {
        "operation": "append",
        "sheetId": "YOUR_SHEET_ID",
        "range": "Cold!A:I",
        "values": "={{ [$json.first_name, $json.last_name, $json.email, $json.phone, $json.company, $json.source, $json.message, $json.score, $json.captured_at] }}"
      },
      "name": "Log Cold Lead",
      "type": "n8n-nodes-base.googleSheets",
      "position": [850, 400]
    },
    {
      "parameters": {
        "channel": "#all-leads",
        "text": "📋 New lead: {{ $json.first_name }} {{ $json.last_name }} ({{ $json.email }}) — Score: {{ $json.score }}/4"
      },
      "name": "Slack — All Leads",
      "type": "n8n-nodes-base.slack",
      "position": [850, 500]
    }
  ],
  "connections": {
    "Lead Webhook": { "main": [[{ "node": "Normalize & Score Lead", "type": "main", "index": 0 }]] },
    "Normalize & Score Lead": { "main": [[{ "node": "Is Qualified?", "type": "main", "index": 0 }]] },
    "Is Qualified?": {
      "main": [
        [{ "node": "Log to Google Sheet", "type": "main", "index": 0 }, { "node": "Slack — Hot Lead", "type": "main", "index": 0 }],
        [{ "node": "Log Cold Lead", "type": "main", "index": 0 }, { "node": "Slack — All Leads", "type": "main", "index": 0 }]
      ]
    }
  },
  "setup": {
    "requirements": ["n8n instance", "Google Sheets with 'Leads' and 'Cold' tabs", "Slack workspace"],
    "columns": ["First Name", "Last Name", "Email", "Phone", "Company", "Source", "Message", "Score", "Captured At"],
    "instructions": [
      "1. Import this JSON into n8n",
      "2. Create a Google Sheet with two tabs: 'Leads' (qualified) and 'Cold' (low score)",
      "3. Add columns: First Name, Last Name, Email, Phone, Company, Source, Message, Score, Captured At",
      "4. Connect your Slack workspace",
      "5. Point your forms (Typeform, website, etc.) to the webhook URL",
      "6. Activate and start capturing leads"
    ]
  }
}
