n8nen.nl logo n8nen.nl

N8N HubSpot CRM Automatisering: Sales en Marketing Workflows die Converteren

2026-03-10 n8nen
N8N HubSpot CRM Automatisering: Sales en Marketing Workflows die Converteren
n8n Leads MQLs SQLs Deals HubSpot CRM Automatisering met N8N Lead Scoring • Contact Sync • Deal Pipelines • Marketing Automation

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. 1. Ga in n8n naar Settings → Credentials → New → HubSpot OAuth2 API
  2. 2. Klik op "Connect" — je wordt doorgestuurd naar HubSpot
  3. 3. Log in met je HubSpot account en geef n8n toestemming
  4. 4. Klaar — de credential wordt automatisch opgeslagen

Methode 2: Private App (voor server-to-server)

  1. 1. Ga naar HubSpot → Settings → Integrations → Private Apps
  2. 2. Klik op "Create a private app"
  3. 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.

Gerelateerde Artikelen

#n8n #hubspot #crm #sales #marketing #automatisering #lead scoring #pipeline #integratie