Handleidingen · n8n

Lead scoring met HubSpot, n8n en Claude: automatisch de beste leads prioriteren

Prioriteer koopklare leads met HubSpot-data en Claude in n8n. Sales focust op de juiste prospects.

🟡 Gevorderd — beetje technisch ⏱ 90 minuten
Tools: HubSpotn8nClaudeSlack
Goud-op-zwart illustratie: contacten stromen door een trechter en scoremeter naar een deal

In het kort

  1. 1. Stap 1: HubSpot API koppelen aan n8n
  2. 2. Stap 2: Nieuwe contacten triggeren via webhook
  3. 3. Stap 3: Contactdata ophalen
  4. 4. Stap 4: Claude scoringsmodel bouwen
  5. 5. Stap 5: Score berekenen en categoriseren
  6. 6. Stap 6: Score terugschrijven naar HubSpot

Stap 1: HubSpot API koppelen aan n8n

Ga naar je HubSpot-account en navigeer naar Instellingen > Integraties > Privé apps. Maak een nieuwe privé app aan met de naam 'n8n Lead Scoring'. Geef de app leestoegang tot Contacts en schrijftoegang tot Contact Properties.

Kopieer de gegenereerde API-token (begint met pat-eu1-...). Bewaar deze veilig — je hebt hem straks nodig in n8n.

Open n8n en ga naar Credentials > New Credential > HubSpot API. Plak de token in het veld 'API Key'. Test de verbinding — je zou een groene checkmark moeten zien.

{
  "credentialType": "hubspotApi",
  "name": "HubSpot Lead Scoring",
  "data": {
    "apiKey": "pat-eu1-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  }
}

Stap 2: Nieuwe contacten triggeren via webhook

In n8n maak je een nieuw workflow aan. Voeg als eerste node een 'HubSpot Trigger' toe. Selecteer het event 'Contact Created' — zo triggert de workflow automatisch zodra er een nieuw contact in HubSpot wordt aangemaakt.

Alternatief: gebruik een periodieke trigger (cron: elke uur) die nieuwe contacten van de afgelopen 60 minuten ophaalt via een HubSpot Search node. Dit is handiger als je bulk-imports verwerkt.

// Cron-trigger voor elk uur
{
  "triggerType": "interval",
  "interval": 60,
  "unit": "minutes"
}

Stap 3: Contactdata ophalen

Voeg een 'HubSpot: Get Contact' node toe. Haal de volgende properties op: bedrijfsgrootte (numberofemployees), functietitel (jobtitle), aantal pageviews (hs_analytics_num_page_views), email opens (hs_email_open), en branche (industry).

Gebruik een 'Set' node om de data te normaliseren. Converteer bedrijfsgrootte naar een categorie: minder dan 10 is micro, 10-50 is klein, 50-250 is middel, 250+ is groot.

const employees = parseInt($json.numberofemployees) || 0;
let companySize = "onbekend";
if (employees >= 250) companySize = "groot";
else if (employees >= 50) companySize = "middel";
else if (employees >= 10) companySize = "klein";
else if (employees > 0) companySize = "micro";
return { companySize, jobtitle: $json.jobtitle, industry: $json.industry };

Stap 4: Claude scoringsmodel bouwen

Voeg een 'HTTP Request' node toe die Claude's API aanroept. Gebruik het claude-3-5-sonnet model. De prompt is het hart van je lead scoring systeem — hier zit de intelligentie.

const prompt = `Je bent een B2B lead scoring expert voor een SaaS-bedrijf gericht op MKB in Nederland.

Analyseer dit contact en geef een score van 0-100:

Contact info:
- Functie: ${jobtitle}
- Bedrijfsgrootte: ${companySize}
- Branche: ${industry}
- Pageviews laatste 30 dagen: ${pageviews}
- Email opens: ${emailOpens}

Scoringscriteria:
1. Functie (0-30 punten): CEO/Directeur/Owner = 30, Manager = 20, Medewerker = 10
2. Bedrijfsgrootte (0-25 punten): middel/groot = 25, klein = 15, micro = 5
3. Betrokkenheid (0-25 punten): >10 pageviews = 25, 5-10 = 15, 1-5 = 5
4. Branche-fit (0-20 punten): Tech/Marketing/Finance = 20, Overig = 10

Geef je antwoord UITSLUITEND als JSON:
{
  "score": <getal 0-100>,
  "categorie": "<hot|warm|cold>",
  "redenering": "<max 2 zinnen>",
  "prioriteit": "<hoog|middel|laag>"
}`;

De output sla je op met een 'JSON Parse' node. De structuur bevat altijd: score (0-100), categorie (hot/warm/cold), redenering en prioriteit.

Stap 5: Score berekenen en categoriseren

Na Claude's analyse voeg je een 'Function' node toe die de score valideert en de categorie definitief bepaalt. Dit is een fallback voor het geval Claude een onverwachte output geeft.

const claudeResponse = JSON.parse($json.choices[0].message.content);
const score = Math.min(100, Math.max(0, parseInt(claudeResponse.score)));

let categorie;
if (score >= 70) categorie = "hot";
else if (score >= 40) categorie = "warm";
else categorie = "cold";

return {
  leadScore: score,
  leadCategorie: categorie,
  leadRedenering: claudeResponse.redenering,
  scoredAt: new Date().toISOString()
};

Stap 6: Score terugschrijven naar HubSpot

Maak eerst een custom contact property aan in HubSpot: Instellingen > Properties > Contact Properties > Create Property. Naam: 'AI Lead Score', Type: Number. En een tweede: 'AI Lead Categorie', Type: Single-line text.

Voeg een 'HubSpot: Update Contact' node toe. Map de velden: ai_lead_score naar leadScore, ai_lead_categorie naar leadCategorie, en ai_score_redenering naar leadRedenering.

// HubSpot Update Contact payload
{
  "contactId": "{{ $json.contactId }}",
  "properties": {
    "ai_lead_score": "{{ $json.leadScore }}",
    "ai_lead_categorie": "{{ $json.leadCategorie }}",
    "ai_score_redenering": "{{ $json.leadRedenering }}",
    "ai_score_datum": "{{ $json.scoredAt }}"
  }
}

Stap 7: Hot leads naar Slack sturen

Voeg een 'IF' node toe: als leadCategorie gelijk is aan 'hot', stuur een Slack-bericht naar het sales-kanaal. Zo wordt je team direct gewaarschuwd voor de meest kansrijke leads.

{
  "channel": "#sales-hot-leads",
  "text": "Nieuwe hot lead!",
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "Naam: {{ $json.firstname }} {{ $json.lastname }}\nBedrijf: {{ $json.company }}\nScore: {{ $json.leadScore }}/100\nReden: {{ $json.leadRedenering }}"
      }
    }
  ]
}

Test de integratie door een testcontact aan te maken in HubSpot met een directeursfunctie bij een middelgroot bedrijf. Je zou binnen 30 seconden een Slack-bericht moeten ontvangen.

Stap 8: Wekelijks rapport genereren

Maak een tweede workflow aan die elke maandag om 08:00 draait. Deze haalt alle contacten van de afgelopen week op, groepeert ze per categorie (hot/warm/cold) en stuurt een overzicht naar Slack en/of e-mail.

// Wekelijks rapport cron trigger
{
  "trigger": "0 8 * * 1",
  "stappen": [
    "HubSpot Search: contacten uit laatste 7 dagen",
    "Group By: ai_lead_categorie",
    "Calculate: gemiddelde score per categorie",
    "Claude: schrijf samenvatting met inzichten",
    "Slack: stuur rapport naar #sales-weekly"
  ]
}

Troubleshooting: als Claude een ongeldige JSON teruggeeft, voeg een try-catch toe in de Function node en val terug op een standaardscore van 50 (warm). Log de error naar een Google Sheet voor analyse.

Uitbreidingen: koppel Calendly om automatisch een demo in te plannen voor hot leads. Of stuur hot leads direct naar een specifieke sales rep op basis van regio of branche via een Switch node in n8n.

Gerelateerd

Nieuwsbrief

Meer handleidingen en tips?

Elke week de beste agentic AI inzichten en nieuwe handleidingen in je inbox.

Gratis aanmelden →