{
  "id": "",
  "name": "01 - Lead Capture \u2192 HubSpot CRM + Slack Notify",
  "tags": [],
  "nodes": [
    {
      "id": "7aa49357-d522-469d-a886-0c6ca7c30269",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -310,
        200
      ],
      "parameters": {
        "width": 480,
        "height": 835,
        "content": "## Capture leads from any form to HubSpot and notify your team in Slack\n\nThis template replaces a classic 3-step Zapier zap (Form \u2192 CRM \u2192 Slack) at zero task cost.\n\n**Who's it for**\nMarketers, founders and sales teams who collect leads from a website form and want them in HubSpot with an instant Slack heads-up.\n\n**How it works**\n1. The Webhook node receives a lead (name, email, message) as a POST request from any form tool.\n2. The Set node normalizes the fields.\n3. HubSpot creates (or updates) the contact.\n4. Slack posts a notification to your team channel.\n5. The webhook responds 200 so your form knows the lead was received.\n\n**Setup**\n1. Connect your HubSpot OAuth2 credential.\n2. Connect your Slack credential and pick the channel in the Slack node.\n3. Activate the workflow and copy the production webhook URL into your form tool (Webflow, Framer, Tally, custom HTML, etc.).\n\n**Customize**\nAdd more fields in the Set node, or swap HubSpot for Pipedrive / Airtable."
      },
      "typeVersion": 1
    },
    {
      "id": "ee589934-b012-4cb7-9590-c7f004aa0b07",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        210,
        190
      ],
      "parameters": {
        "color": 7,
        "width": 530,
        "height": 290,
        "content": "## 1. Receive & normalize\nPOST your form data to the webhook URL.\nThe Set node maps raw payload fields to clean\n`name` / `email` / `message` values."
      },
      "typeVersion": 1
    },
    {
      "id": "17b7ab9b-6d72-4513-8a9f-dbdc44e88673",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        710,
        190
      ],
      "parameters": {
        "color": 7,
        "width": 780,
        "height": 290,
        "content": "## 2. Save to CRM & notify\nHubSpot upserts the contact, Slack alerts your channel,\nthen the webhook answers 200 OK.\nCredentials needed: HubSpot OAuth2 + Slack OAuth2."
      },
      "typeVersion": 1
    },
    {
      "id": "01-webhook",
      "name": "Webhook - Receive Lead",
      "type": "n8n-nodes-base.webhook",
      "position": [
        250,
        300
      ],
      "parameters": {
        "path": "lead-capture",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "typeVersion": 2
    },
    {
      "id": "01-set",
      "name": "Format Lead Data",
      "type": "n8n-nodes-base.set",
      "position": [
        500,
        300
      ],
      "parameters": {
        "mode": "manual",
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "01-set-a1",
              "name": "firstname",
              "type": "string",
              "value": "={{ $json.firstname ?? $json.first_name ?? '' }}"
            },
            {
              "id": "01-set-a2",
              "name": "lastname",
              "type": "string",
              "value": "={{ $json.lastname ?? $json.last_name ?? '' }}"
            },
            {
              "id": "01-set-a3",
              "name": "email",
              "type": "string",
              "value": "={{ $json.email }}"
            },
            {
              "id": "01-set-a4",
              "name": "phone",
              "type": "string",
              "value": "={{ $json.phone ?? '' }}"
            },
            {
              "id": "01-set-a5",
              "name": "company",
              "type": "string",
              "value": "={{ $json.company ?? '' }}"
            },
            {
              "id": "01-set-a6",
              "name": "source",
              "type": "string",
              "value": "={{ $json.source ?? 'web-form' }}"
            },
            {
              "id": "01-set-a7",
              "name": "submitted_at",
              "type": "string",
              "value": "={{ $now.toISO() }}"
            }
          ]
        },
        "duplicateItem": false
      },
      "typeVersion": 3
    },
    {
      "id": "01-hubspot",
      "name": "HubSpot - Create Contact",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        750,
        300
      ],
      "parameters": {
        "email": "={{ $json.email }}",
        "options": {},
        "resource": "contact",
        "operation": "upsert",
        "additionalFields": {
          "phone": "={{ $json.phone }}",
          "company": "={{ $json.company }}",
          "lastname": "={{ $json.lastname }}"
        }
      },
      "credentials": {
        "hubspotApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "01-slack",
      "name": "Slack - Notify Team",
      "type": "n8n-nodes-base.slack",
      "position": [
        1000,
        300
      ],
      "parameters": {
        "text": "=\ud83c\udfaf New Lead!\n*Name:* {{ $('Format Lead Data').item.json.firstname }} {{ $('Format Lead Data').item.json.lastname }}\n*Email:* {{ $('Format Lead Data').item.json.email }}\n*Company:* {{ $('Format Lead Data').item.json.company }}\n*Source:* {{ $('Format Lead Data').item.json.source }}\n*Time:* {{ $('Format Lead Data').item.json.submitted_at }}",
        "channel": {
          "__rl": true,
          "mode": "name",
          "value": "#leads"
        },
        "resource": "message",
        "operation": "post",
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "01-respond",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1250,
        300
      ],
      "parameters": {
        "options": {
          "responseCode": 200
        },
        "respondWith": "json",
        "responseBody": "={\"success\": true, \"message\": \"Lead received\"}"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "",
  "connections": {
    "Format Lead Data": {
      "main": [
        [
          {
            "node": "HubSpot - Create Contact",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Slack - Notify Team": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook - Receive Lead": {
      "main": [
        [
          {
            "node": "Format Lead Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HubSpot - Create Contact": {
      "main": [
        [
          {
            "node": "Slack - Notify Team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}