De meeste salesteams werken met een spreadsheet of buikgevoel om te bepalen welke lead ze als eerste bellen. Dat is begrijpelijk, maar ook duur: je verspilt tijd aan leads die nooit zullen kopen, terwijl je warme prospects te lang laat wachten.
In deze handleiding bouw je een volledig geautomatiseerd lead scoring systeem in n8n. Elke keer dat er een nieuwe lead binnenkomt, analyseert Claude de beschikbare informatie, kent een score toe van 1 tot 100 en stuurt de lead met de juiste prioriteit terug naar je CRM. Zo weet je salesteam altijd met wie ze als eerste moeten bellen, zonder enig handmatig werk.
We gebruiken als voorbeeld het fictieve bedrijf Sterk Digital BV, een B2B SaaS-bedrijf uit Eindhoven met 8 salesmedewerkers en 120 inbound leads per maand. De stappen zijn generiek genoeg om direct toe te passen op jouw situatie.
Wat is lead scoring en waarom automatiseren?
Lead scoring is het toekennen van een numerieke waarde aan een prospect op basis van hoe goed hij past bij jouw ideale klantprofiel (ICP) en hoe actief hij zich gedraagt op je website of in je mailcampagnes. Een lead die CEO is van een bedrijf met 50 medewerkers, drie keer je prijspagina heeft bezocht en je whitepaper heeft gedownload, is een stuk waardevoller dan iemand die zijn e-mailadres achterliet voor een gratis nieuwsbrief.
Traditioneel lead scoring werkt met vaste puntensystemen: CEO = 20 punten, whitepaper download = 15 punten, websitebezoek = 5 punten. Het probleem: je moet die regels handmatig opstellen en onderhouden. Een AI-gestuurd systeem leert van historische data en kan nuances oppikken die jij hebt gemist.
De voordelen van automatisch AI lead scoring:
- Salesmensen focussen op de 20% leads die 80% van de omzet genereren
- Leads vallen niet meer tussen wal en schip doordat ze te lang in de wachtrij staan
- Je hebt altijd een actueel overzicht zonder handmatig bij te houden
- Het systeem wordt slimmer naarmate je meer deals sluit (feedback loop)
Architectuur van de workflow
De workflow bestaat uit vijf stappen die automatisch achter elkaar worden uitgevoerd zodra een nieuwe lead in je CRM wordt aangemaakt:
1. Trigger: nieuwe lead in HubSpot of Pipedrive (of via webhook van een formulier)
2. Verrijking: bedrijfsdata ophalen via Clearbit of Hunter.io (optioneel maar aanbevolen)
3. Scoring: Claude analyseert alle data en geeft een score van 1 tot 100 plus een uitleg
4. Update CRM: de score en prioriteit worden teruggeschreven naar het leadrecord
5. Notificatie: bij een score boven 75 krijgt de salesverantwoordelijke direct een Slack-bericht
Wat je nodig hebt
- n8n account (cloud via n8n.io of self-hosted via Docker) -- versie 1.90 of hoger
- Anthropic API key -- maak aan op console.anthropic.com, model: claude-sonnet-4-6 (goedkoop en snel genoeg)
- HubSpot of Pipedrive account met API-toegang (gratis tier is voldoende voor de basis)
- Optioneel: Slack workspace voor hotlead-notificaties
- Optioneel: Google Sheets voor een overzichtsrapportage van alle gescoorde leads
Stap 1: Definieer je ideale klantprofiel (ICP)
Voordat je begint met bouwen, moet je weten wat een goede lead voor jou is. Dit is de input die je aan Claude gaat meegeven. Voor Sterk Digital BV ziet het ICP er zo uit:
Ideale klant: B2B bedrijf in Nederland of Belgie, 20 tot 200 medewerkers, actief in professionele dienstverlening of technologie, beslisser is CEO, directeur of Head of Marketing, budget voor software aankopen boven 5.000 euro per jaar.
Noteer voor jouw bedrijf de volgende punten en bewaar ze als tekst, want we gaan dit straks in de Claude prompt plakken:
- In welke sector zitten jouw beste klanten?
- Hoe groot zijn die bedrijven (medewerkers, omzet)?
- Welke functietitels zijn beslissers bij jou?
- Welke gedragssignalen geven aan dat iemand serieus interesse heeft?
Stap 2: n8n instellen en HubSpot trigger aanmaken
Open n8n en maak een nieuw workflow aan. Kies als trigger node de HubSpot Trigger (of Pipedrive Trigger als je dat CRM gebruikt). Configureer als event: Contact Created. Zo triggert de workflow elke keer dat er een nieuwe lead in je CRM aankomt, ook als die via een formulier, chatbot of handmatige invoer binnenkomt.
Koppel je HubSpot account via de credentials in n8n. Je hebt hiervoor een Private App token nodig vanuit HubSpot:
- Ga naar HubSpot Settings > Integrations > Private Apps
- Klik op Create a private app en geef het de naam n8n Lead Scoring
- Activeer de scopes: crm.objects.contacts.read en crm.objects.contacts.write
- Kopieer het access token en plak dit in je n8n HubSpot credentials
Test de trigger door een testlead aan te maken in HubSpot. Je zou in n8n een output moeten zien met alle velden van dat contact.
Stap 3: Leaddata samenvatten met een Set node
Voeg een Set node toe na de trigger. Hiermee structureer je de data die je naar Claude stuurt. Maak een variabele aan genaamd leadSamenvatting met de volgende expressie:
Naam: {{ $json.properties.firstname }} {{ $json.properties.lastname }}
E-mail: {{ $json.properties.email }}
Bedrijf: {{ $json.properties.company }}
Functietitel: {{ $json.properties.jobtitle }}
Branche: {{ $json.properties.industry }}
Bedrijfsgrootte: {{ $json.properties.numberofemployees }} medewerkers
Omzet: {{ $json.properties.annualrevenue }}
Land: {{ $json.properties.country }}
Lead bron: {{ $json.properties.hs_lead_status }}
Website: {{ $json.properties.website }}
Opmerkingen: {{ $json.properties.message }}
Voeg ook een variabele scoredatumtijd toe met de waarde {{ $now }} zodat je later weet wanneer de score is bepaald.
Stap 4: Claude de lead laten scoren
Voeg een HTTP Request node toe (of de Anthropic node als die beschikbaar is in jouw n8n versie). Stel de volgende waarden in:
Method: POST
URL: https://api.anthropic.com/v1/messages
Headers:
anthropic-version: 2023-06-01
x-api-key: {{ $credentials.anthropicApi.apiKey }}
content-type: application/json
Gebruik als request body de volgende JSON. Dit is het hart van de workflow: de prompt die Claude vertelt hoe hij moet scoren.
{
"model": "claude-sonnet-4-6",
"max_tokens": 500,
"messages": [
{
"role": "user",
"content": "Je bent een B2B sales analyst. Beoordeel de volgende lead op basis van ons Ideaal Klantprofiel (ICP) en geef een score van 1 tot 100.\n\n=== IDEAAL KLANTPROFIEL ===\nSector: professionele dienstverlening, technologie, SaaS\nBedrijfsgrootte: 20 tot 200 medewerkers\nLand: Nederland of Belgie\nBeslissers: CEO, directeur, Head of Marketing, CMO\nJaarlijks softwarebudget: 5.000+ euro\n\n=== LEADDATA ===\n{{ $json.leadSamenvatting }}\n\n=== INSTRUCTIES ===\nGeef je antwoord UITSLUITEND als geldig JSON in dit format:\n{\n \"score\": <getal 1-100>,\n \"prioriteit\": \"hoog\"|\"gemiddeld\"|\"laag\",\n \"reden\": \"<max 2 zinnen waarom deze score>\",\n \"aanbeveling\": \"<concrete volgende stap voor sales>\"\n}\n\nScorerichtlijn: 80-100 = perfecte fit en directe opvolging, 60-79 = goede fit en opvolging binnen 24 uur, 40-59 = matige fit en nurturing campagne, 1-39 = slechte fit."
}
]
}
Stap 5: Claude's antwoord parsen
Claude geeft een JSON string terug in het content veld van het antwoord. Voeg een Code node (JavaScript) toe om dit te parsen:
// Haal het tekstantwoord op uit Claude's response
const rawText = $input.item.json.content[0].text;
// Parse de JSON
let scoring;
try {
// Verwijder eventuele markdown code fences als Claude die toevoegt
const cleanJson = rawText.replace(/```json\n?/g, '').replace(/```\n?/g, '').trim();
scoring = JSON.parse(cleanJson);
} catch (e) {
// Fallback als parsing mislukt
scoring = {
score: 0,
prioriteit: 'laag',
reden: 'Parsing error: ' + e.message,
aanbeveling: 'Handmatig nakijken'
};
}
// Geef gestructureerde output terug
return [{
json: {
score: scoring.score,
prioriteit: scoring.prioriteit,
reden: scoring.reden,
aanbeveling: scoring.aanbeveling,
contactId: $('HubSpot Trigger').item.json.objectId
}
}];
Na deze stap heb je nette, gestructureerde data klaar om naar je CRM en eventueel naar Slack te sturen.
Stap 6: Score terugschrijven naar HubSpot
Voeg een HubSpot Update Contact node toe. Kies de contactId uit de vorige stap als identifier. Schrijf de volgende properties terug:
{
"ai_lead_score": "{{ $json.score }}",
"ai_prioriteit": "{{ $json.prioriteit }}",
"ai_scoring_reden": "{{ $json.reden }}",
"ai_aanbeveling": "{{ $json.aanbeveling }}",
"ai_score_datum": "{{ $now }}"
}
Let op: je moet deze custom properties eerst aanmaken in HubSpot. Ga naar HubSpot Settings > Properties > Create property en maak de vijf bovenstaande velden aan als Text type. Geef ze herkenbare labels zodat je salesteam ze makkelijk terugvindt.
Stap 7: Hotlead notificatie via Slack
Voeg een IF node toe om te controleren of de score hoger is dan 75. Als dat zo is, stuur je een Slack-bericht naar het sales kanaal. Dit is de krachtigste stap: je salesverantwoordelijke krijgt direct een signaal als er een warme lead binnenkomt, zonder handmatig het CRM te checken.
IF: {{ $json.score }} > 75
Slack bericht:
:fire: *Hotlead binnengekooid!*
*Lead:* {{ $('HubSpot Trigger').item.json.properties.firstname }} {{ $('HubSpot Trigger').item.json.properties.lastname }}
*Bedrijf:* {{ $('HubSpot Trigger').item.json.properties.company }}
*Functie:* {{ $('HubSpot Trigger').item.json.properties.jobtitle }}
*AI Score:* {{ $json.score }}/100 ({{ $json.prioriteit }})
*Waarom:* {{ $json.reden }}
*Aanbeveling:* {{ $json.aanbeveling }}
:point_right: <https://app.hubspot.com/contacts/{{ $('HubSpot Trigger').item.json.objectId }}|Open in HubSpot>
Stap 8: Google Sheets logging (optioneel maar waardevol)
Voeg aan het einde van de workflow een Google Sheets Append Row node toe. Sla elke gescoorde lead op in een spreadsheet met de volgende kolommen: Datum, Naam, Bedrijf, Functie, Score, Prioriteit, Reden, Aanbeveling, CRM Link.
Dit geeft je na een paar weken goudwaardige data. Je kunt zien hoe de score-verdeling eruitziet, of de hoogst gescoorde leads ook daadwerkelijk converteren, en of je ICP beschrijving nog klopt. Gebruik deze inzichten om je Claude prompt te verbeteren.
{
"Datum": "{{ $now.toISODate() }}",
"Naam": "{{ $('HubSpot Trigger').item.json.properties.firstname }} {{ $('HubSpot Trigger').item.json.properties.lastname }}",
"Bedrijf": "{{ $('HubSpot Trigger').item.json.properties.company }}",
"Functie": "{{ $('HubSpot Trigger').item.json.properties.jobtitle }}",
"Score": "{{ $('Parse Claude Response').item.json.score }}",
"Prioriteit": "{{ $('Parse Claude Response').item.json.prioriteit }}",
"Reden": "{{ $('Parse Claude Response').item.json.reden }}",
"Aanbeveling": "{{ $('Parse Claude Response').item.json.aanbeveling }}"
}
Wat kost dit systeem per maand?
De kosten zijn verrassend laag. Claude Sonnet 4.6 rekent $3 per miljoen input-tokens en $15 per miljoen output-tokens. Een scoring-verzoek gebruikt gemiddeld 800 input-tokens (prompt + leaddata) en 150 output-tokens (score JSON). Dat is circa $0,004 per lead.
Bij 120 leads per maand (zoals Sterk Digital BV) kost het AI-gedeelte minder dan 50 eurocent per maand. Voeg je n8n Cloud (20 euro/maand) erbij, dan zit je totaal op minder dan 21 euro. Dat is minder dan een uur handmatig saleswerk.
Veelvoorkomende problemen en oplossingen
Probleem 1: Claude geeft geen geldige JSON terug
Dit gebeurt soms als de leaddata speciale tekens bevat (aanhalingstekens, enters). Oplossing: voeg in je Set node een stap toe om de leadSamenvatting te sanitizen met de n8n expressie {{ $json.leadSamenvatting.replace(/"/g, "'").replace(/\n/g, " ") }}. Voeg ook een fallback toe in de Code node (zie stap 5).
Probleem 2: HubSpot trigger vuur niet af
Controleer of je workflow actief is (niet in test-modus) en of de webhook URL correct is geregistreerd in HubSpot. Ga naar HubSpot Settings > Integrations > Private Apps en controleer of de webhook URL zichtbaar is. Test handmatig door een contact aan te maken.
Probleem 3: Alle leads krijgen een score tussen 30 en 70
Claude is van nature voorzichtig met extreme scores. Voeg aan je prompt toe: "Wees niet bang om lage scores (1-30) of hoge scores (85-100) te geven als de situatie daarom vraagt. Een vage lead zonder bedrijfsinformatie hoort een lage score te krijgen." Dit geeft meer spreiding.
Probleem 4: Custom properties worden niet opgeslagen in HubSpot
Zorg dat je de custom property names exact overneemt zoals je ze in HubSpot hebt aangemaakt (hoofdlettergevoelig, geen spaties). Controleer ook of je Private App de write-scope heeft op contact properties.
Probleem 5: De workflow is te traag (meer dan 10 seconden per lead)
Schakel over van claude-sonnet-4-6 naar claude-haiku-3-5. Dit model is drie keer zo snel bij vergelijkbare kwaliteit voor eenvoudige scoring taken, en kost ook significant minder. Voor de meeste lead scoring situaties is het verschil in kwaliteit verwaarloosbaar.
Uitbreidingen: maak het systeem nog slimmer
Leadverrijking met externe databronnen
Voeg een HTTP Request toe die het e-mailadres opzoekt in Hunter.io of Clearbit. Je krijgt dan automatisch het bedrijfsdomein, de branche en soms zelfs het aantal medewerkers erbij. Dit verbetert de scoring aanzienlijk voor leads die weinig informatie hebben achtergelaten.
Dynamische ICP updates
Sla je ICP beschrijving op in een Google Sheets cel in plaats van direct in de prompt. Zo kan je salesteam de criteria aanpassen zonder de n8n workflow te hoeven bewerken. Voeg een Google Sheets Read node toe aan het begin van de workflow die de actuele ICP ophaalt.
Automatische e-mail sequentie op basis van score
Koppel de prioriteit direct aan een e-mail sequentie in HubSpot of ActiveCampaign. Hotleads (score boven 75) krijgen direct een persoonlijke outreach, middelmatige leads (40-74) stromen in een nurturing campagne, lage leads (onder 40) worden op een gratis nieuwsbrief gezet. Volledig automatisch.
Score heroverwegen na gedragssignalen
Maak een tweede workflow die triggert als een lead je prijspagina bezoekt of een demo aanvraagt. Claude herberekent de score op basis van het nieuwe gedrag. Een lead die eerder 45 scoorde, kan na drie websitebezoeken ineens 82 scoren. Zo mis je nooit meer een warme prospect.
Conclusie: stop met raden, start met scoren
Dit systeem kost je twee uur om op te zetten en levert je daarna maandelijks tientallen uren aan handmatig werk terug. Je salesteam focust op de leads die ertoe doen, prospects vallen niet meer tussen wal en schip, en je bouwt wekelijks betere data op over wie jouw ideale klant is.
Het mooiste: het systeem wordt slimmer. Naarmate je meer data verzamelt in Google Sheets over welke leads daadwerkelijk converteren, kun je je ICP aanscherpen en je Claude prompt verfijnen. Na drie maanden heb je een scoring machine die beter werkt dan de meeste commerciele lead scoring tools, voor een fractie van de prijs.
Begin vandaag met stap 1: schrijf je ICP op. De rest volgt vanzelf.
Gerelateerde handleidingen op workflows.nl
- HubSpot AI voor MKB: leads genereren en opvolgen op autopilot in 2026
- AI klantenservice-bot bouwen met n8n en Claude: automatisch e-mails beantwoorden
- n8n ReAct AI Agent instellen: zo bouw je een denkende workflow met Claude