{
  "name": "Instant CRM Enrichment with Lusha",
  "nodes": [
    {
      "id": "ecf7ba4f-2416-4eb6-8c76-894dbce13bde",
      "name": "\ud83d\udccb Auto-Enrich New HubSpot Contacts",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -100,
        -560
      ],
      "parameters": {
        "width": 900,
        "height": 540,
        "content": "## Auto-Enrich New HubSpot Contacts with Lusha\n\n**Who it's for:** RevOps & Sales teams using HubSpot\n\n**What it does:** The moment a new contact is created in HubSpot, Lusha enriches it with verified phone, job title, seniority, and company firmographics. A data quality check ensures only enriched contacts are updated, and reps get a Slack alert for high-value new contacts.\n\n### How it works\n1. HubSpot trigger fires when a new contact is created\n2. Checks if the contact has an email address\n3. Lusha enriches the contact by email\n4. A data quality check validates enrichment results\n5. Enriched data is written back to HubSpot\n6. High-seniority contacts trigger a Slack alert for reps\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. Customize the seniority filter and Slack channel\n4. Activate the workflow \u2014 every new HubSpot contact will be enriched in real time"
      },
      "typeVersion": 1
    },
    {
      "id": "55579ea9-7be4-4980-8f67-2af24bc96295",
      "name": "\ud83d\udd14 1. HubSpot Trigger",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -30,
        50
      ],
      "parameters": {
        "color": 7,
        "width": 450,
        "height": 270,
        "content": "Fires instantly when a new contact is created in HubSpot. A check ensures the contact has an email before calling Lusha.\n\n**Nodes:** HubSpot Trigger \u2192 Has Email? (IF)\n\n\ud83d\udca1 Replace with a Salesforce trigger if you use Salesforce."
      },
      "typeVersion": 1
    },
    {
      "id": "796777ae-b083-492f-911a-d89cd6507350",
      "name": "\ud83d\udd0d 2. Lusha Enrichment + Quality Check",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        50
      ],
      "parameters": {
        "color": 7,
        "width": 560,
        "height": 270,
        "content": "Lusha enriches the contact by email, returning verified phone, title, seniority, and company data. A code node checks if Lusha returned meaningful data before updating CRM.\n\n**Nodes:** Lusha Enrich \u2192 Data Quality Check \u2192 Was Enriched? (IF)\n\n\ud83d\udcd6 [Lusha API docs](https://www.lusha.com/docs/)"
      },
      "typeVersion": 1
    },
    {
      "id": "9d3ea981-c835-4317-89f9-a5f1da14da9e",
      "name": "\ud83d\udcbe 3. Update CRM + Notify",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1100,
        50
      ],
      "parameters": {
        "color": 7,
        "width": 560,
        "height": 270,
        "content": "Enriched data is written back to the HubSpot contact record. Contacts with VP/Director/C-Suite seniority also trigger a Slack alert.\n\n**Nodes:** Update HubSpot \u2192 Is High Seniority? \u2192 Slack Alert\n\n\ud83d\udca1 Customize which seniority levels trigger alerts."
      },
      "typeVersion": 1
    },
    {
      "id": "7fe87584-b7f3-4f76-9981-e92a270ebcd3",
      "name": "New Contact Created in HubSpot",
      "type": "n8n-nodes-base.hubspotTrigger",
      "position": [
        0,
        400
      ],
      "parameters": {
        "eventsUi": {
          "eventValues": [
            {
              "name": "contact.creation"
            }
          ]
        }
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0d20f389-b6f7-4c24-80bb-397fe0c0adb5",
      "name": "Has Email?",
      "type": "n8n-nodes-base.if",
      "position": [
        280,
        400
      ],
      "parameters": {
        "conditions": {
          "combinator": "and",
          "conditions": [
            {
              "id": "803b6976-1cb5-407b-893f-8417aa8211c7",
              "operator": {
                "type": "string",
                "operation": "notEmpty"
              },
              "leftValue": "={{ $json.properties?.email }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "5f99e7cc-d259-4365-a99b-712f7c067671",
      "name": "Enrich Contact with Lusha",
      "type": "@lusha-org/n8n-nodes-lusha.lusha",
      "position": [
        560,
        400
      ],
      "parameters": {
        "email": "={{ $('New Contact Created in HubSpot').first().json.properties.email }}",
        "searchBy": "email",
        "operation": "enrichSingle",
        "contactEnrichAdditionalOptions": {}
      },
      "credentials": {
        "lushaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "dc3adc4b-9e92-4151-9ab4-3aeda698f22f",
      "name": "Data Quality Check",
      "type": "n8n-nodes-base.code",
      "position": [
        840,
        400
      ],
      "parameters": {
        "jsCode": "// Check enrichment quality \u2014 did Lusha return useful data?\nconst lusha = $json;\nconst crm = $('New Contact Created in HubSpot').first().json;\n\nconst hasPhone = !!lusha.primaryPhone;\nconst hasTitle = !!lusha.jobTitle;\nconst hasCompany = !!lusha.companyName;\nconst fieldsFound = [hasPhone, hasTitle, hasCompany].filter(Boolean).length;\n\nreturn { json: {\n  contactId: crm.objectId,\n  email: crm.properties?.email,\n  // Lusha data\n  firstName: lusha.firstName || crm.properties?.firstname || '',\n  lastName: lusha.lastName || crm.properties?.lastname || '',\n  phone: lusha.primaryPhone || '',\n  jobTitle: lusha.jobTitle || '',\n  seniority: lusha.seniority || '',\n  linkedinUrl: lusha.linkedinProfile || '',\n  company: lusha.companyName || '',\n  companyDomain: lusha.companyDomain || '',\n  industry: lusha.companyMainIndustry || '',\n  companySize: Array.isArray(lusha.companySize) ? lusha.companySize[1] : '',\n  location: lusha.companyLocation || '',\n  // Quality metadata\n  wasEnriched: fieldsFound >= 2,\n  fieldsFound,\n  enrichedAt: new Date().toISOString()\n} };"
      },
      "typeVersion": 2
    },
    {
      "id": "715df54d-843b-4576-9741-c42daa60e02a",
      "name": "Was Enriched?",
      "type": "n8n-nodes-base.if",
      "position": [
        1120,
        400
      ],
      "parameters": {
        "conditions": {
          "combinator": "and",
          "conditions": [
            {
              "id": "2eb6ee90-83bf-4257-a449-5fd5d6f0edec",
              "operator": {
                "type": "boolean",
                "operation": "true"
              },
              "leftValue": "={{ $json.wasEnriched }}",
              "rightValue": true
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "ccff4e63-90a4-44e1-8358-3d37cdbadab1",
      "name": "Update HubSpot Contact",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        1400,
        300
      ],
      "parameters": {
        "resource": "contact",
        "contactId": "={{ $json.contactId }}",
        "operation": "update",
        "updateFields": {
          "phone": "={{ $json.phone }}",
          "company": "={{ $json.company }}",
          "website": "={{ $json.companyDomain }}",
          "industry": "={{ $json.industry }}",
          "jobtitle": "={{ $json.jobTitle }}",
          "numberofemployees": "={{ $json.companySize }}"
        }
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "e2c4d779-012f-45c7-9e07-d401bd24d1ca",
      "name": "Check Seniority Level",
      "type": "n8n-nodes-base.code",
      "position": [
        1400,
        500
      ],
      "parameters": {
        "jsCode": "// Check if contact is high seniority (VP, Director, C-Suite)\nconst seniority = ($json.seniority || '').toLowerCase();\nconst isHighSeniority = ['vp', 'vice president', 'director', 'c-suite', 'cxo', 'founder', 'owner', 'head'].some(s => seniority.includes(s));\nreturn { json: { ...$json, isHighSeniority } };"
      },
      "typeVersion": 2
    },
    {
      "id": "8de8ca59-e915-4937-8e61-848e530b53d2",
      "name": "Is High Seniority?",
      "type": "n8n-nodes-base.if",
      "position": [
        1680,
        500
      ],
      "parameters": {
        "conditions": {
          "combinator": "and",
          "conditions": [
            {
              "id": "6e389f2f-b959-4e77-aab6-61949caaaffb",
              "operator": {
                "type": "boolean",
                "operation": "true"
              },
              "leftValue": "={{ $json.isHighSeniority }}",
              "rightValue": true
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "f46e0369-ce37-4088-9b18-fd6a99661639",
      "name": "Alert Rep on Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        1960,
        400
      ],
      "parameters": {
        "text": "=\u2728 *High-Value New Contact*\n\n*{{ $json.firstName }} {{ $json.lastName }}*\n{{ $json.jobTitle }} ({{ $json.seniority }})\n\ud83c\udfe2 {{ $json.company }} | {{ $json.industry }}\n\ud83d\udce7 {{ $json.email }}\n\ud83d\udcf1 {{ $json.phone || 'N/A' }}\n\ud83d\udd17 {{ $json.linkedinUrl || 'N/A' }}\n\n_Auto-enriched by Lusha ({{ $json.fieldsFound }} fields found)_",
        "channel": "#new-contacts",
        "otherOptions": {}
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    }
  ],
  "connections": {
    "Has Email?": {
      "main": [
        [
          {
            "node": "Enrich Contact with Lusha",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Was Enriched?": {
      "main": [
        [
          {
            "node": "Update HubSpot Contact",
            "type": "main",
            "index": 0
          },
          {
            "node": "Check Seniority Level",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Data Quality Check": {
      "main": [
        [
          {
            "node": "Was Enriched?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is High Seniority?": {
      "main": [
        [
          {
            "node": "Alert Rep on Slack",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Check Seniority Level": {
      "main": [
        [
          {
            "node": "Is High Seniority?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enrich Contact with Lusha": {
      "main": [
        [
          {
            "node": "Data Quality Check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "New Contact Created in HubSpot": {
      "main": [
        [
          {
            "node": "Has Email?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}