HubSpot's gratis CRM is krachtig, maar de automatiseringsopties zitten achter dure betaalmuren. Operations Hub Professional kost €711/mnd en zelfs dan zijn de mogelijkheden beperkt. Met n8n bouw je dezelfde automatiseringen — en meer — voor een fractie van de kosten. Van lead scoring tot deal pipeline management: deze gids laat je zien hoe.
Wat je leert in deze gids:
- HubSpot credentials instellen in n8n (OAuth2 en Private App)
- Beschikbare triggers en acties: 18 triggers, 31+ acties
- 8 kant-en-klare workflows voor sales en marketing
- Lead scoring automatiseren op basis van gedrag en data
- Twee-richting sync tussen HubSpot en andere tools
HubSpot + n8n: Waarom Deze Combinatie?
Vergelijk de automatiseringskosten:
| Feature | HubSpot Operations Hub | n8n (self-hosted) | n8n Cloud |
|---|---|---|---|
| Basis workflows | €46/mnd (Starter) | Gratis | €24/mnd |
| Custom code in workflows | €711/mnd (Professional) | Gratis | €24/mnd |
| Externe integraties | €711/mnd + API limits | 400+ nodes gratis | 400+ nodes |
| AI-verwerking in workflows | Beperkt (Breeze AI) | OpenAI, Claude, etc. | OpenAI, Claude, etc. |
Concreet: wat bij HubSpot €711/mnd kost, doe je met n8n self-hosted voor €0. Met n8n Cloud voor €24/mnd. En je hebt toegang tot meer integraties.
HubSpot Credentials Instellen
n8n ondersteunt twee authenticatiemethoden voor HubSpot. Voor de meeste gebruikers is OAuth2 het makkelijkst.
Methode 1: OAuth2 (aanbevolen)
- 1. Ga in n8n naar Settings → Credentials → New → HubSpot OAuth2 API
- 2. Klik op "Connect" — je wordt doorgestuurd naar HubSpot
- 3. Log in met je HubSpot account en geef n8n toestemming
- 4. Klaar — de credential wordt automatisch opgeslagen
Methode 2: Private App (voor server-to-server)
- 1. Ga naar HubSpot → Settings → Integrations → Private Apps
- 2. Klik op "Create a private app"
- 3. Selecteer de benodigde scopes:
Aanbevolen scopes: - crm.objects.contacts (read/write) - crm.objects.companies (read/write) - crm.objects.deals (read/write) - crm.objects.owners (read) - crm.schemas.contacts (read) - crm.lists (read/write) - sales-email-read - forms
Kopieer het Access Token en voeg het toe in n8n als "HubSpot API" credential.
Let op: legacy API keys zijn verouderd
HubSpot heeft in 2022 de klassieke API keys uitgefaseerd. Gebruik altijd Private Apps of OAuth2. Als je oude tutorials volgt die naar API keys verwijzen: die werken niet meer.
Beschikbare Triggers en Acties
De n8n HubSpot node is uitgebreid. Hier een overzicht van de mogelijkheden:
HubSpot Trigger (18 event types)
| Trigger | Wanneer het vuurt | Praktisch gebruik |
|---|---|---|
| Contact Created | Nieuw contact aangemaakt | Welkomstmail, lead enrichment |
| Contact Updated | Contacteigenschap gewijzigd | Lead scoring update, sync naar tools |
| Deal Created | Nieuwe deal in pipeline | Slack alert, taak aanmaken |
| Deal Stage Changed | Deal verplaatst in pipeline | Team notificatie, follow-up triggers |
| Company Created | Nieuw bedrijf aangemaakt | Bedrijfsdata verrijken, ABM flows |
| Ticket Created | Nieuw support ticket | SLA timer starten, toewijzen |
8 Kant-en-Klare HubSpot Workflows
Workflow 1: Automatische Lead Scoring
Bereken een lead score op basis van gedrag en demografische data. Wijs leads automatisch toe aan sales wanneer ze een drempel bereiken.
HubSpot Trigger (Contact Updated)
→ Code Node {
let score = 0;
const contact = $json;
// Demografische scoring
if (contact.jobtitle?.match(/CEO|CTO|VP|Director/i)) score += 20;
if (contact.company_size === '50-200') score += 15;
if (contact.company_size === '200+') score += 25;
if (contact.country === 'Netherlands') score += 10;
// Gedrag scoring
if (contact.num_form_submissions > 0) score += 15;
if (contact.num_page_views > 10) score += 10;
if (contact.hs_email_open > 3) score += 10;
if (contact.hs_last_sales_activity) score += 20;
// Negatieve scoring
if (contact.email?.includes('gmail.com')) score -= 5;
if (!contact.phone) score -= 10;
return {
contactId: contact.id,
score,
category: score >= 60 ? 'Hot' : score >= 30 ? 'Warm' : 'Cold'
};
}
→ HubSpot Node (Update Contact - set lead_score property)
→ IF Node (score >= 60?)
├── Ja: Slack Alert (#hot-leads) +
│ HubSpot (Create Task voor sales rep)
└── Nee: Niets (wacht op meer engagement)
Workflow 2: Contact Enrichment bij Aanmaak
HubSpot Trigger (Contact Created)
→ Code Node (extract email domain)
→ HTTP Request (Clearbit/Apollo API - bedrijfsdata ophalen)
→ HubSpot Update Contact {
company: response.company.name,
jobtitle: response.person.title,
industry: response.company.industry,
company_size: response.company.employees,
linkedin: response.person.linkedin
}
→ IF Node (enterprise bedrijf?)
→ Slack Alert (#enterprise-leads)
Verrijkt automatisch elk nieuw contact met bedrijfs- en persoonsdata. Bespaart handmatig research.
Workflow 3: Deal Pipeline Notificaties
HubSpot Trigger (Deal Stage Changed)
→ Code Node {
const stages = {
'appointmentscheduled': { emoji: '📅', action: 'Meeting gepland' },
'qualifiedtobuy': { emoji: '✅', action: 'Gekwalificeerd' },
'presentationscheduled': { emoji: '📊', action: 'Demo ingepland' },
'decisionmakerboughtin': { emoji: '🤝', action: 'Decision maker akkoord' },
'contractsent': { emoji: '📝', action: 'Contract verstuurd' },
'closedwon': { emoji: '🎉', action: 'GEWONNEN!' },
'closedlost': { emoji: '😔', action: 'Verloren' }
};
return stages[$json.dealstage];
}
→ Slack Node (#sales-pipeline)
"{{emoji}} Deal: {{dealname}} — {{action}}
Bedrag: €{{amount}} | Owner: {{hubspot_owner_id}}"
→ IF Node (stage === closedwon?)
→ Google Sheets Append (won deals log)
→ Email Node (felicitatie naar sales rep)
Workflow 4: Twee-Richting Sync met Google Sheets
Houd een Google Sheet gesynchroniseerd met HubSpot. Handig als het management-team liever in spreadsheets werkt.
// Richting 1: HubSpot → Sheets HubSpot Trigger (Contact Created/Updated) → Google Sheets Lookup (bestaat contact al in sheet?) → IF Node ├── Nieuw: Google Sheets Append └── Bestaand: Google Sheets Update // Richting 2: Sheets → HubSpot Schedule Trigger (elke 15 min) → Google Sheets Read (rijen met status "Nieuw") → Loop Over Items → HubSpot Search (bestaat email al?) → IF Node ├── Nieuw: HubSpot Create Contact └── Bestaand: HubSpot Update Contact → Google Sheets Update (status → "Gesynchroniseerd")
Workflow 5: Automatische Follow-Up Emails
HubSpot Trigger (Deal Created)
→ Wait Node (2 dagen)
→ HubSpot Read Deal (check: is deal nog in zelfde stage?)
→ IF Node (geen activiteit in 2 dagen?)
→ Email Node {
To: deal contact email
Subject: "Even checken: heb je nog vragen over {{dealname}}?"
Body: Persoonlijke follow-up template
}
→ HubSpot Update Deal (last_followup_date = nu)
→ Wait Node (5 dagen)
→ ... (herhaal tot max 3 follow-ups)
Workflow 6: Marketing Campagne Resultaten Dashboard
Schedule Trigger (elke maandag 09:00)
→ HubSpot API (GET /marketing/v1/emails/with-statistics)
→ Code Node {
// Bereken metrics per campagne
const campaigns = $json.objects.map(email => ({
naam: email.name,
verzonden: email.counters.sent,
geopend: email.counters.open,
geklikt: email.counters.click,
open_rate: (email.counters.open / email.counters.sent * 100).toFixed(1) + '%',
click_rate: (email.counters.click / email.counters.sent * 100).toFixed(1) + '%'
}));
return { campaigns };
}
→ Google Sheets Append (marketing dashboard sheet)
→ Slack Node (#marketing)
"📊 Wekelijks Email Marketing Rapport:
Verstuurd: {{totaal_verzonden}} | Open rate: {{gem_open_rate}}
Beste campagne: {{beste_campagne}} ({{beste_open_rate}} open rate)"
Workflow 7: Churn Prevention — Inactieve Contacten Detecteren
// Wekelijkse churn detection
Schedule Trigger (elke vrijdag)
→ HubSpot Search Contacts {
filters: [
{ property: "hs_last_activity_date",
operator: "LT", // Less Than
value: 30_dagen_geleden_timestamp }
]
}
→ Loop Over Items
→ OpenAI Node {
"Op basis van deze klantdata, schrijf een persoonlijke
re-engagement email in het Nederlands. Kort (max 100 woorden),
verwijs naar hun laatste interactie."
}
→ Email Node (verstuur re-engagement mail)
→ HubSpot Update Contact (tag: "re-engagement-campagne")
→ Slack Alert ("{{aantal}} inactieve contacten gedetecteerd")
Workflow 8: Formulier Inzending → Deal Aanmaken
HubSpot Trigger (Form Submission)
→ Code Node (extraheer form fields)
→ HubSpot Search Contact (bestaat al?)
→ IF Node
├── Nieuw: HubSpot Create Contact
└── Bestaand: HubSpot Update Contact
→ HubSpot Create Deal {
dealname: "{{bedrijf}} — {{type_dienst}}"
dealstage: "appointmentscheduled"
amount: geschat_bedrag
pipeline: "default"
associations: [contactId]
}
→ HubSpot Create Task {
subject: "Bel {{naam}} - formulier ingevuld"
due_date: morgen
owner: sales_rep_id
}
→ Slack #sales ("Nieuwe aanvraag via website!")
Rate Limits en Performance
HubSpot's API heeft rate limits die je moet respecteren om blokkades te voorkomen:
| Plan | Rate Limit | Dagelijks Limiet |
|---|---|---|
| Free / Starter | 100 requests per 10 sec | 250.000 per dag |
| Professional | 150 requests per 10 sec | 500.000 per dag |
| Enterprise | 200 requests per 10 sec | 1.000.000 per dag |
Tips om binnen limits te blijven
- Batch operaties: Gebruik de Split In Batches node met een batch size van 10 en een Wait node van 1 seconde ertussen.
- Gebruik Search i.p.v. Get All: Filter server-side met de HubSpot Search node in plaats van alle contacten op te halen en lokaal te filteren.
- Cache veelgebruikte data: Sla statische data (owners, pipelines, deal stages) op met
$getWorkflowStaticData()en ververs elke 24 uur.
HubSpot Properties Aanmaken voor Automatisering
Voor lead scoring en custom workflows heb je eigen properties nodig in HubSpot. Maak deze aan vóórdat je de workflows bouwt:
// Custom properties aanmaken via HubSpot API
// (kan ook via HubSpot UI: Settings → Properties)
HTTP Request Node {
Method: POST
URL: https://api.hubapi.com/crm/v3/properties/contacts
Body: {
"name": "n8n_lead_score",
"label": "Lead Score (n8n)",
"type": "number",
"fieldType": "number",
"groupName": "contactinformation",
"description": "Automatisch berekende lead score door n8n"
}
}
// Aanbevolen custom properties:
// - n8n_lead_score (number)
// - n8n_lead_category (enumeration: Hot/Warm/Cold)
// - n8n_last_enriched (datetime)
// - n8n_source_workflow (text)
// - n8n_churn_risk (enumeration: Low/Medium/High)
Conclusie: HubSpot Superpowers met n8n
HubSpot is een uitstekend CRM. In combinatie met n8n wordt het een volledig geautomatiseerd sales- en marketingplatform. Je bespaart honderden euro's per maand ten opzichte van HubSpot's eigen automatiseringstools, en je krijgt meer flexibiliteit.
Beginnen met HubSpot Automatisering?
Start met Workflow 8 (formulier → deal) — dat is de snelste weg naar ROI. Bouw van daaruit verder met lead scoring en pipeline notificaties.