Stel je voor: je salesteam besteedt elke week uren aan het handmatig zoeken naar leads op LinkedIn, het kopiëren van profielen naar een spreadsheet en het schrijven van dezelfde outreach-berichten steeds opnieuw. Dat is tijd die je beter kunt besteden aan echte gesprekken met gekwalificeerde prospects. In deze handleiding bouw je een volautomatische LinkedIn lead generation agent die dat werk voor je overneemt, inclusief AI-personalisatie per lead, automatische scoring en een gestroomlijnd Google Sheets dashboard.
Deze aanpak is in 2026 volledig haalbaar voor MKB-bedrijven zonder grote technische afdeling. De tools zijn betaalbaar, de setup duurt een middag en de tijdsbesparing is merkbaar vanaf week twee.
Wat ga je bouwen?
De agent bestaat uit vijf onderdelen die naadloos samenwerken:
1. Phantombuster haalt dagelijks LinkedIn-profielen op op basis van jouw zoekcriteria (functie, branche, regio, bedrijfsgrootte).
2. n8n ontvangt de data via een webhook en orkestreert de rest van de workflow.
3. OpenAI analyseert elk profiel en schrijft een gepersonaliseerde opening voor de outreach.
4. Een lead scoring engine filtert de meest relevante contacten (score >= 5 gaat door).
5. Phantombuster verstuurt automatisch een gepersonaliseerd LinkedIn-bericht naar gekwalificeerde leads.
Het resultaat: een constante stroom van warme, gekwalificeerde leads in je CRM zonder handmatig werk.
Vereisten en kosten
Accounts en tools
LinkedIn Premium of Sales Navigator: Sales Navigator geeft de meest nauwkeurige zoekfilters en is aan te raden voor serieuze leadgen. Kosten: circa 100 euro per maand. LinkedIn Premium is goedkoper (circa 45 euro/maand) maar biedt minder filteropties.
Phantombuster: scraping en automatische DM-verzending. Het Starter-plan (30 euro/maand) is voldoende voor 300-500 leads per maand. Gebruik de 'LinkedIn Search Export' en 'LinkedIn Message Sender' phantoms.
n8n: workflow automatisering. Self-hosted via Docker is gratis. n8n Cloud kost 20 euro per maand en is eenvoudiger te beheren. Voor deze handleiding gebruiken we n8n Cloud.
OpenAI API: voor AI-verrijking. Verwacht 5 tot 15 euro per maand bij 500 leads/maand. Gebruik het gpt-4o-mini model voor kostenefficiëntie.
Google Sheets: gratis. Dient als je lead dashboard en CRM-brug.
Totale maandelijkse kosten: circa 155 tot 175 euro. Bij één extra deal per maand door betere leadkwalificatie is de ROI al positief.
Stap 1: LinkedIn Search Export instellen in Phantombuster
Log in op app.phantombuster.com en zoek de phantom 'LinkedIn Search Export'. Dit is je startpunt voor het ophalen van leads.
Configureer de zoekparameters: ga naar LinkedIn Sales Navigator en stel je zoekopdracht in. Kopieer de volledige URL van de zoekresultaten pagina. Plak deze URL in het 'Search URL' veld van de phantom.
Voorbeeldscenario: Sorted.co zoekt naar Marketing Managers en Heads of Marketing bij bedrijven van 10-200 medewerkers in Nederland en Belgie. De Phantombuster phantom exporteert dagelijks 25 nieuwe profielen naar een CSV.
Stel de phantom in op dagelijks draaien om 08:00 uur. Activeer 'Send to webhook' en vul het n8n webhook-adres in (zie stap 2). Sla op.
Stap 2: n8n workflow aanmaken
Log in op je n8n instantie (app.n8n.cloud of localhost:5678). Maak een nieuw workflow aan met de naam 'LinkedIn Lead Gen Agent'.
Voeg een Webhook node toe als trigger. Stel in: HTTP Method = POST, Path = linkedin-leads. Kopieer het gegenereerde webhook-URL en plak dit in Phantombuster (stap 1). Het formaat is: https://jouw-n8n-instantie.app.n8n.cloud/webhook/linkedin-leads
Voeg een 'Code' node toe na de webhook om de binnenkomende data te normaliseren:
// Normaliseer Phantombuster output
const leads = $input.all().map(item => ({
firstName: item.json.firstName || '',
lastName: item.json.lastName || '',
fullName: `${item.json.firstName} ${item.json.lastName}`.trim(),
headline: item.json.headline || '',
company: item.json.company || '',
companySize: item.json.companySize || '',
location: item.json.location || '',
profileUrl: item.json.linkedinUrl || '',
connectionDegree: item.json.connectionDegree || '3rd'
}));
return leads.map(lead => ({ json: lead }));
Stap 3: AI-verrijking met OpenAI
Voeg een OpenAI node toe na de Code node. Configureer als volgt: Resource = Chat, Operation = Message, Model = gpt-4o-mini.
Gebruik deze system prompt om gepersonaliseerde openingsregels te genereren:
Je bent een expert B2B copywriter. Op basis van LinkedIn-profielinformatie schrijf je een korte, authentieke openingszin voor een LinkedIn-bericht. De zin is maximaal 2 zinnen, klinkt persoonlijk (niet generiek), refereert aan iets specifieks uit het profiel en eindigt met een open vraag. Schrijf in het Nederlands. Geen emoji's.
Gebruik deze user prompt (met n8n expressies):
Naam: {{ $json.fullName }}
Functie: {{ $json.headline }}
Bedrijf: {{ $json.company }}
Locatie: {{ $json.location }}
Schrijf een gepersonaliseerde openingszin voor een LinkedIn-bericht.
Sla de OpenAI response op als 'personalizedOpening' in de output. Verwachte kosten: circa 0,002 euro per lead bij gpt-4o-mini.
Stap 4: Lead scoring instellen
Voeg een tweede Code node toe voor de scoring logica. Dit systeem geeft punten op basis van relevantie:
const lead = $input.first().json;
let score = 0;
const reasons = [];
// Functietitel scoring
const seniorTitles = ['manager', 'director', 'head', 'cmo', 'vp', 'chief', 'lead'];
const headline = (lead.headline || '').toLowerCase();
if (seniorTitles.some(t => headline.includes(t))) {
score += 3;
reasons.push('Senior functietitel (+3)');
}
// Bedrijfsgrootte (alleen als beschikbaar)
const size = lead.companySize || '';
if (size.includes('11-50') || size.includes('51-200') || size.includes('201-500')) {
score += 2;
reasons.push('Relevante bedrijfsgrootte (+2)');
}
// Locatie: Nederland of Belgie
const location = (lead.location || '').toLowerCase();
if (location.includes('netherlands') || location.includes('nederland') ||
location.includes('belgium') || location.includes('belgie')) {
score += 2;
reasons.push('NL/BE locatie (+2)');
}
// 2e graads connectie (hogere kans op response)
if (lead.connectionDegree === '2nd') {
score += 2;
reasons.push('2e graads connectie (+2)');
}
// Marketing/Sales in functie
if (headline.includes('marketing') || headline.includes('sales') || headline.includes('growth')) {
score += 1;
reasons.push('Marketing/Sales focus (+1)');
}
return [{ json: { ...lead, score, scoreReasons: reasons.join(', '), qualified: score >= 5 } }];
Voeg een IF node toe na de scoring: ga alleen door als 'qualified' gelijk is aan true (score >= 5). Niet-gekwalificeerde leads worden nog steeds opgeslagen in Google Sheets maar krijgen geen outreach.
Stap 5: Leads exporteren naar Google Sheets
Maak een Google Sheet aan met deze kolommen: Datum, Voornaam, Achternaam, Functie, Bedrijf, Locatie, Score, Score Redenen, LinkedIn URL, Gepersonaliseerde Opening, Outreach Verstuurd, Response Ontvangen, Status.
Voeg in n8n een Google Sheets node toe (voor ALLE leads, niet alleen gekwalificeerde). Operation = Append Row. Map de velden op de juiste kolommen. Zorg dat de Google Sheets OAuth2 credentials geconfigureerd zijn in n8n (Settings, Credentials, New, Google Sheets OAuth2).
Tip: voeg een 'Duplicate Check' toe via een Lookup node voor je de data opslaat, om te voorkomen dat dezelfde persoon meerdere keren in je sheet terechtkomt. Filter op LinkedIn URL als unieke identifier.
Stap 6: Automatische LinkedIn DM via Phantombuster
Voor de outreach gebruik je de Phantombuster 'LinkedIn Message Sender' phantom. Dit werkt via een CSV-lijst van profileUrls en bijbehorende berichten.
Voeg in n8n een HTTP Request node toe die een CSV aanmaakt en naar Phantombuster stuurt via de Phantombuster API:
// Bouw het berichttemplate op
const lead = $input.first().json;
const opening = lead.personalizedOpening || '';
const message = `${opening}
Ik help bedrijven zoals ${lead.company} met het automatiseren van hun marketingprocessen. Zou je openstaan voor een kort gesprek van 20 minuten?
Met vriendelijke groet,
[Jouw naam]`;
return [{ json: {
linkedinUrl: lead.profileUrl,
message: message.substring(0, 300) // LinkedIn limiet
} }];
Belangrijk: verstuurd maximaal 15-20 berichten per dag om LinkedIn-limieten te respecteren en je account te beschermen. Stel in Phantombuster een dagelijkse limiet in via de 'Slots' instelling.
Stap 7: Monitoring en Slack-notificaties
Voeg een Slack node toe aan het einde van de workflow (alleen voor gekwalificeerde leads). Stuur een melding naar je sales-kanaal wanneer een high-score lead wordt verwerkt:
Nieuwe gekwalificeerde lead! 🎯
Naam: {{ $json.fullName }}
Functie: {{ $json.headline }}
Bedrijf: {{ $json.company }}
Score: {{ $json.score }}/10
Reden: {{ $json.scoreReasons }}
Opening verzonden:
{{ $json.personalizedOpening }}
LinkedIn: {{ $json.profileUrl }}
Stel ook een wekelijkse samenvatting in: een aparte n8n workflow die elke maandag om 09:00 uur het Google Sheet uitleest en een overzicht stuurt van leads van de afgelopen week (totaal, gemiddelde score, outreach verstuurd, responses).
Troubleshooting
Phantombuster exporteert geen data
Controleer of je LinkedIn-sessiecookie nog geldig is. LinkedIn-sessies verlopen regelmatig. Ga in Phantombuster naar je LinkedIn-account instellingen en ververs de cookie via de 'Connect' knop. Dit moet elke 2-4 weken herhaald worden.
n8n webhook ontvangt geen data
Verifieer dat de webhook URL in Phantombuster exact overeenkomt met het adres in n8n. Let op http vs https. Test handmatig via een tool als Postman: stuur een POST-request met dummy-data naar de webhook URL en controleer of n8n het ontvangt.
OpenAI geeft generieke responses
Dit gebeurt wanneer de profieldata onvolledig is (lege headline of company). Voeg een IF node toe voor de OpenAI node die controleert of headline niet leeg is. Bij lege profielen: sla de lead op maar stuur geen bericht.
LinkedIn blokkeert de accounts
Verlaag het dagelijkse volume naar 10 berichten per dag en bouw een willekeurige vertraging in (10-60 seconden tussen berichten). Phantombuster heeft hiervoor een 'Random Delay' optie. Varieer ook de berichten zodat ze niet identiek zijn.
Verwachte resultaten
Na twee weken draaien kun je de volgende resultaten verwachten:
Tijdsbesparing: 4 tot 6 uur per week die je salesteam niet meer kwijt is aan handmatig zoeken, kopiëren en berichten schrijven.
Kwalificatieverbetering: de lead scoring filtert doorgaans 40-60% van de leads uit. Alleen de meest relevante contacten krijgen outreach, wat de kwaliteit van gesprekken verhoogt.
Response rates: gepersonaliseerde berichten genereren gemiddeld 15-25% hogere response rates dan generieke templates, volgens data van meerdere n8n-gebruikers in de community.
Volume: bij 20 berichten per dag, 5 dagen per week, stuur je 400 berichten per maand naar gekwalificeerde prospects. Bij een response rate van 15% zijn dat 60 gesprekken per maand zonder handmatig werk.
Volgende stappen
Zodra de basisworkflow draait, zijn er interessante uitbreidingen:
CRM-integratie: verbind n8n met HubSpot of Pipedrive om gekwalificeerde leads automatisch als deal aan te maken. Gebruik de HubSpot of Pipedrive nodes in n8n.
Follow-up sequentie: voeg een automatische follow-up toe na 5 werkdagen als er geen response is. Bouw dit als aparte workflow die het Google Sheet controleert op 'geen response' leads ouder dan 5 dagen.
A/B testing: roteer tussen twee of drie berichtversies en meet welke de hoogste response rate geeft. Voeg een 'Split' kolom toe aan je Google Sheet om bij te houden welke versie is gebruikt.
Voor meer inspiratie: lees de handleiding 'Automatische rapportage in n8n + Google Sheets' op workflows.nl voor een dieper dashboard en meer n8n automatiseringstips.