{
  "name": "Free: Form to Slack Lead Alert",
  "nodes": [
    {
      "parameters": {
        "content": "## Form → Slack Lead Alert (free sample)\n\n**What it does:** point any website/contact form at the webhook (POST JSON `{name, email, message}`) and every submission instantly appears as a formatted message in your Slack `#leads` channel. The form gets a clean `{\"ok\": true}` response back.\n\n**Setup — 3 steps:**\n1. **Connect Slack:** open the Slack node, create/select a Slack credential (a bot token with `chat:write`, invited to your channel) and pick your channel (default `#leads`).\n2. **Activate the workflow** (toggle top-right), then copy the **Production URL** from the Webhook node.\n3. **Point your form** at that URL — e.g. a fetch() in your site's form handler, or a Webflow/Framer/Typeform webhook action. Test with:\n```\ncurl -X POST <production-url> -H 'Content-Type: application/json' \\\n  -d '{\"name\":\"Test\",\"email\":\"test@test.com\",\"message\":\"Hello!\"}'\n```\n\nMore workflows at cortexkinematics.com/n8n/store",
        "height": 560,
        "width": 620
      },
      "id": "1f90989d-36e0-4589-a760-ec58c8909238",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [-460, -220]
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "contact-form",
        "responseMode": "responseNode",
        "options": {}
      },
      "id": "f23d4de6-942d-480a-9295-217711e29503",
      "name": "Contact Form Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [-200, 420],
      "webhookId": "3b530975-75ad-4b92-aa15-9e8bc5f3787b"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "157b50c4-47a0-4abf-aef7-fc07b6031848",
              "name": "name",
              "value": "={{ ($json.body.name || 'Unknown').toString().trim() }}",
              "type": "string"
            },
            {
              "id": "1621e0c0-8f7c-45d8-bd1a-03f592e29bb5",
              "name": "email",
              "value": "={{ ($json.body.email || '').toString().trim().toLowerCase() }}",
              "type": "string"
            },
            {
              "id": "43293fa8-0db5-427b-a74c-d975f3b404b5",
              "name": "message",
              "value": "={{ ($json.body.message || '').toString().trim() }}",
              "type": "string"
            },
            {
              "id": "76a6e175-03a6-4cfc-94c2-f888f34d8dbf",
              "name": "submitted_at",
              "value": "={{ $now.toISO() }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "id": "ad3d6918-e39c-4cf9-b9c5-ec73fa3d9919",
      "name": "Clean Up Fields",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [20, 420]
    },
    {
      "parameters": {
        "select": "channel",
        "channelId": {
          "__rl": true,
          "value": "#leads",
          "mode": "name"
        },
        "text": "=:tada: *New lead from the website*\n\n*Name:* {{ $json.name }}\n*Email:* {{ $json.email }}\n*Submitted:* {{ $json.submitted_at }}\n\n*Message:*\n> {{ $json.message }}",
        "otherOptions": {}
      },
      "id": "cda0c874-a135-4ec2-ba8e-fdd34efbdcb3",
      "name": "Post to #leads",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.2,
      "position": [240, 420],
      "credentials": {
        "slackApi": {
          "id": "REPLACE_ME",
          "name": "Slack account"
        }
      }
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify({ ok: true }) }}",
        "options": {}
      },
      "id": "f1a315c0-2c7f-4071-9f86-0e28cfb70df3",
      "name": "Respond OK",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [460, 420]
    }
  ],
  "connections": {
    "Contact Form Webhook": {
      "main": [
        [
          {
            "node": "Clean Up Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Clean Up Fields": {
      "main": [
        [
          {
            "node": "Post to #leads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post to #leads": {
      "main": [
        [
          {
            "node": "Respond OK",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "pinData": {}
}
