{
  "name": "Form Enrichment with Lusha",
  "nodes": [
    {
      "id": "4f9de608-f4c4-4205-9713-6cb9ea3d6e4d",
      "name": "\ud83d\udccb Form Lead Enrichment + CRM Sync",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -100,
        -520
      ],
      "parameters": {
        "width": 900,
        "height": 500,
        "content": "## Enrich New Form Leads with Lusha\n\n**Who it's for:** Marketing & Growth teams capturing inbound leads\n\n**What it does:** Enriches web form submissions in real time with Lusha, checks for duplicates in HubSpot, creates or updates the CRM record, sends an SDR alert to Slack, and returns the enriched data to your form.\n\n### How it works\n1. Receives form submission via webhook\n2. Validates the email and checks for duplicates in HubSpot\n3. Enriches the contact with Lusha (phone, title, seniority, company data)\n4. Merges form + Lusha data and creates/updates the HubSpot contact\n5. Sends an SDR notification to Slack with the enriched lead summary\n6. Returns the enriched record to the form as a JSON response\n\n### Setup\n1. Install the [Lusha community node](https://www.npmjs.com/package/@lusha-org/n8n-nodes-lusha)\n2. Add your Lusha API, HubSpot OAuth2, and Slack credentials\n3. Point your web form's action URL to the webhook endpoint\n4. Customize the Slack channel and CRM field mapping"
      },
      "typeVersion": 1
    },
    {
      "id": "56996914-f394-4427-bbb8-74ce3bb477f4",
      "name": "\u26a1 1. Receive & Validate",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -30,
        50
      ],
      "parameters": {
        "color": 7,
        "width": 500,
        "height": 270,
        "content": "Webhook receives a POST with the form submission. A code node validates the email format and checks for duplicates in HubSpot before enrichment.\n\n**Nodes:** Webhook \u2192 Validate Email \u2192 Check HubSpot Duplicate\n\n\ud83d\udca1 Customize the duplicate-check field to match your CRM setup."
      },
      "typeVersion": 1
    },
    {
      "id": "7b118fc5-e00d-43a9-8808-3550f6070501",
      "name": "\ud83d\udd0d 2. Enrich with Lusha",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        520,
        50
      ],
      "parameters": {
        "color": 7,
        "width": 500,
        "height": 270,
        "content": "Lusha enriches the contact by email, returning verified phone, job title, seniority, LinkedIn, and full company firmographics.\n\n**Nodes:** Lusha Contact Enrich \u2192 Merge Form + Lusha Data\n\n\ud83d\udcd6 [Lusha API docs](https://www.lusha.com/docs/)"
      },
      "typeVersion": 1
    },
    {
      "id": "8225080f-13b9-4930-8625-9e3fd18484b1",
      "name": "\ud83d\udcbe 3. CRM + Slack + Response",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1070,
        50
      ],
      "parameters": {
        "color": 7,
        "width": 700,
        "height": 270,
        "content": "Creates or updates the HubSpot contact record, sends an SDR alert to Slack with the full enriched lead summary, and returns the enriched data to the form.\n\n**Nodes:** Upsert HubSpot Contact \u2192 Slack SDR Alert \u2192 Webhook Response\n\n\ud83d\udca1 Customize the Slack channel (#inbound-leads) and message format."
      },
      "typeVersion": 1
    },
    {
      "id": "e5592344-331a-4a18-a0d9-8094309901ed",
      "name": "Receive Form Submission",
      "type": "n8n-nodes-base.webhook",
      "position": [
        0,
        400
      ],
      "parameters": {
        "path": "form-enrichment",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "typeVersion": 2
    },
    {
      "id": "c965c082-776e-4242-8a8c-b3874a894a80",
      "name": "Validate Email",
      "type": "n8n-nodes-base.code",
      "position": [
        280,
        400
      ],
      "parameters": {
        "jsCode": "// Validate email format from form submission\nconst body = $json.body || $json;\nconst email = (body.email || '').trim().toLowerCase();\n\nif (!email || !email.includes('@') || !email.includes('.')) {\n  throw new Error('Invalid or missing email address');\n}\n\n// Pass through cleaned form data\nreturn {\n  json: {\n    email,\n    firstName: (body.firstName || '').trim(),\n    lastName: (body.lastName || '').trim(),\n    company: (body.company || '').trim(),\n    source: body.source || 'web-form',\n    message: body.message || '',\n    submittedAt: new Date().toISOString()\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "05a787b5-bf87-4f65-a1b0-5b4c362b1350",
      "name": "Check HubSpot Duplicate",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        560,
        400
      ],
      "parameters": {
        "resource": "contact",
        "operation": "search",
        "filterGroups": {
          "values": [
            {
              "filters": {
                "values": [
                  {
                    "value": "={{ $json.email }}",
                    "operator": "EQ",
                    "propertyName": "email"
                  }
                ]
              }
            }
          ]
        }
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "ddf4f1cf-bc14-4553-98d2-a02d9e1c8510",
      "name": "Enrich with Lusha",
      "type": "@lusha-org/n8n-nodes-lusha.lusha",
      "position": [
        840,
        400
      ],
      "parameters": {
        "email": "={{ $('Validate Email').first().json.email }}",
        "searchBy": "email",
        "operation": "enrichSingle",
        "contactEnrichAdditionalOptions": {}
      },
      "credentials": {
        "lushaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "03a3c74a-fc94-4536-8c08-49441d8ea3fe",
      "name": "Merge Form + Lusha Data",
      "type": "n8n-nodes-base.code",
      "position": [
        1120,
        400
      ],
      "parameters": {
        "jsCode": "// Merge original form data with Lusha enrichment\nconst form = $('Validate Email').first().json;\nconst lusha = $json;\nconst hubspotResults = $('Check HubSpot Duplicate').first().json;\nconst isExisting = hubspotResults.total > 0;\nconst existingId = isExisting ? hubspotResults.results?.[0]?.id : null;\n\nreturn {\n  json: {\n    // Identity\n    email: form.email,\n    firstName: form.firstName || lusha.firstName || '',\n    lastName: form.lastName || lusha.lastName || '',\n\n    // Lusha enrichment\n    jobTitle: lusha.jobTitle || '',\n    seniority: lusha.seniority || '',\n    phone: lusha.primaryPhone || '',\n    phoneType: lusha.primaryPhoneType || '',\n    verifiedEmail: lusha.primaryEmail || '',\n    linkedinUrl: lusha.linkedinProfile || '',\n\n    // Company data\n    company: form.company || lusha.companyName || '',\n    companyDomain: lusha.companyDomain || '',\n    companySize: lusha.companySize || '',\n    industry: lusha.companyMainIndustry || '',\n    revenueRange: lusha.revenueRange || '',\n    companyLocation: lusha.companyLocation || '',\n\n    // Metadata\n    isExistingContact: isExisting,\n    existingContactId: existingId,\n    source: form.source,\n    message: form.message,\n    enrichedAt: new Date().toISOString(),\n    enrichmentSource: 'lusha'\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "e2ed8337-59be-455f-ae17-4d9c30022ed7",
      "name": "Create/Update HubSpot Contact",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        1400,
        300
      ],
      "parameters": {
        "email": "={{ $json.email }}",
        "resource": "contact",
        "operation": "upsert",
        "additionalFields": {
          "phone": "={{ $json.phone }}",
          "company": "={{ $json.company }}",
          "website": "={{ $json.companyDomain }}",
          "industry": "={{ $json.industry }}",
          "jobtitle": "={{ $json.jobTitle }}",
          "lastName": "={{ $json.lastName }}",
          "firstName": "={{ $json.firstName }}"
        }
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "618fbf17-0565-4d0f-b19a-a901987e7ca4",
      "name": "Alert SDR on Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        1400,
        500
      ],
      "parameters": {
        "text": "=\ud83d\udce5 *New Enriched Form Lead*\n\n*{{ $('Merge Form + Lusha Data').item.json.firstName }} {{ $('Merge Form + Lusha Data').item.json.lastName }}*\n{{ $('Merge Form + Lusha Data').item.json.jobTitle }} ({{ $('Merge Form + Lusha Data').item.json.seniority }})\n\ud83c\udfe2 {{ $('Merge Form + Lusha Data').item.json.company }}\n\ud83d\udce7 {{ $('Merge Form + Lusha Data').item.json.verifiedEmail || $('Merge Form + Lusha Data').item.json.email }}\n\ud83d\udcf1 {{ $('Merge Form + Lusha Data').item.json.phone || 'N/A' }}\n\ud83d\udd17 {{ $('Merge Form + Lusha Data').item.json.linkedinUrl || 'N/A' }}\n\n{{ $('Merge Form + Lusha Data').item.json.isExistingContact ? '\u267b\ufe0f Existing contact updated' : '\u2728 New contact created' }}",
        "channel": "#inbound-leads",
        "otherOptions": {}
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "96c30ef4-4f5e-4cd8-8339-2be03a72f39f",
      "name": "Return Enriched Lead",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1700,
        400
      ],
      "parameters": {
        "options": {
          "responseCode": 200
        },
        "respondWith": "json",
        "responseBody": "={{ $('Merge Form + Lusha Data').item.json }}"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Validate Email": {
      "main": [
        [
          {
            "node": "Check HubSpot Duplicate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enrich with Lusha": {
      "main": [
        [
          {
            "node": "Merge Form + Lusha Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check HubSpot Duplicate": {
      "main": [
        [
          {
            "node": "Enrich with Lusha",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Form + Lusha Data": {
      "main": [
        [
          {
            "node": "Create/Update HubSpot Contact",
            "type": "main",
            "index": 0
          },
          {
            "node": "Alert SDR on Slack",
            "type": "main",
            "index": 0
          },
          {
            "node": "Return Enriched Lead",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Receive Form Submission": {
      "main": [
        [
          {
            "node": "Validate Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}