{
  "name": "Lead Capture to Notion + Slack",
  "nodes": [
    {
      "parameters": {
        "content": "## Lead Capture Webhook to Notion CRM with Slack Alert\n\nEvery lead from any form lands in your Notion CRM and pings the team in Slack within seconds - no Zapier tax, no copy-paste.\n\n**Setup time:** 15 minutes  ·  **Level:** Intermediate\n\n**You'll need accounts/credentials for:** Webhook, Notion, Slack\n\n**Replace these before running:**\n- `REPLACE_WITH_DATABASE`\n- `REPLACE_WITH_CHANNEL`\n\n**Setup steps:**\n1. Activate the workflow and copy the production webhook URL from the Webhook node.\n2. Point your form's action or integration at that URL (POST, JSON or form-encoded both work).\n3. Connect Notion, share your Leads database with the integration, and map the Name and Email properties.\n4. Connect Slack and choose the channel for alerts.\n5. Submit a test lead through your form and watch it appear in both places.\n\nFree templates and updates: navkhan103.github.io",
        "height": 640,
        "width": 400,
        "color": 4
      },
      "id": "sticky-setup",
      "name": "Setup — read me first",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -440,
        -40
      ]
    },
    {
      "parameters": {
        "content": "### How it runs\n\nStarts from **Lead Webhook**.\n\n1. A Webhook node gives you a URL you can point any form at (Webflow, Framer, Tally, WordPress, custom HTML).\n2. A Notion node creates a page in your Leads database with the name, email, and message.\n3. A Slack node posts a formatted alert to your sales channel so someone replies while the lead is hot.\n4. The webhook responds 200 immediately, so the form never hangs.",
        "height": 348,
        "width": 400,
        "color": 7
      },
      "id": "sticky-how",
      "name": "How it runs",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -440,
        640
      ]
    },
    {
      "parameters": {
        "content": "### If something breaks\n\nThe read and AI nodes here **retry 3× automatically** (5s apart), which absorbs rate limits and brief timeouts.\n\nNodes that **send or write deliberately do not retry** — a send that reached the far end but lost its response would otherwise fire twice, so you'd get duplicate messages or duplicate rows.\n\nTo be told when one of those fails, build a workflow starting with an **Error Trigger** node that posts to Slack or email, then set it under **three-dot menu > Settings > Error Workflow**. Do it once and point every workflow at it.",
        "height": 400,
        "width": 400,
        "color": 3
      },
      "id": "sticky-fail",
      "name": "If something breaks",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -440,
        1028
      ]
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "new-lead",
        "options": {}
      },
      "id": "f6a7b8c9-0001-4000-8000-000000000001",
      "name": "Lead Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "resource": "databasePage",
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "REPLACE_WITH_DATABASE"
        },
        "title": "={{ $json.body.name }}",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Email|email",
              "emailValue": "={{ $json.body.email }}"
            },
            {
              "key": "Status|select",
              "selectValue": "New"
            }
          ]
        }
      },
      "id": "f6a7b8c9-0002-4000-8000-000000000002",
      "name": "Add to Notion CRM",
      "type": "n8n-nodes-base.notion",
      "typeVersion": 2.2,
      "position": [
        220,
        0
      ]
    },
    {
      "parameters": {
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "REPLACE_WITH_CHANNEL"
        },
        "text": "=:tada: New lead: *{{ $('Lead Webhook').item.json.body.name }}* ({{ $('Lead Webhook').item.json.body.email }})\n> {{ $('Lead Webhook').item.json.body.message }}",
        "otherOptions": {}
      },
      "id": "f6a7b8c9-0003-4000-8000-000000000003",
      "name": "Alert Sales Channel",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.3,
      "position": [
        440,
        0
      ]
    }
  ],
  "connections": {
    "Lead Webhook": {
      "main": [
        [
          {
            "node": "Add to Notion CRM",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add to Notion CRM": {
      "main": [
        [
          {
            "node": "Alert Sales Channel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}