Bedrijfsgegevens in Je CRM: Automatische Verrijking via API
· KVKBase Team

Bedrijfsgegevens in Je CRM: Automatische Verrijking via API

Leer hoe je CRM-records automatisch verrijkt met actuele KVK-data. Integratiemethoden voor HubSpot, Salesforce en Pipedrive.

crmverrijkingautomatisering

Bedrijfsgegevens in Je CRM: Automatische Verrijking via API

Je CRM is zo goed als de data erin. En data veroudert snel: bedrijven verhuizen, veranderen van naam, worden overgenomen of gestopt. Als je team werkt met verouderde bedrijfsgegevens, leidt dat tot teruggestuurde post, verkeerde aanspreekvormen en gemiste kansen.

Automatische verrijking met KVK-data houdt je CRM actueel zonder handmatig werk.

Waarom bedrijfsdata veroudert

Uit onderzoek blijkt dat B2B-data met een aanzienlijk percentage per jaar veroudert. De oorzaken:

  • Bedrijven verhuizen (nieuw adres, nieuwe postcode)
  • Bedrijven wijzigen hun handelsnaam
  • Rechtsvormen veranderen (eenmanszaak wordt BV)
  • Bedrijven fuseren of worden overgenomen
  • Bedrijven worden uitgeschreven

Als je CRM 5.000 bedrijfsrecords bevat, zijn er na een jaar honderden records met verouderde informatie. Na twee jaar is het probleem verdubbeld.

De oplossing: periodieke verrijking

In plaats van eenmalig data importeren en hopen dat het klopt, zet je een periodiek verrijkingsproces op. Dit kan op twee manieren:

1. Event-driven verrijking

Verrijk bedrijfsgegevens op het moment dat er interactie is:

  • Een klant logt in: controleer of de gegevens nog actueel zijn
  • Een medewerker opent een klantrecord: verrijk op de achtergrond
  • Een nieuwe deal wordt aangemaakt: haal de laatste gegevens op

2. Batch-verrijking

Verrijk alle records periodiek in een nachtelijke of wekelijkse batch:

async function enrichAllCompanies() {
  const companies = await crm.getCompaniesWithKvkNumber();

  for (const company of companies) {
    try {
      const kvkData = await kvkbase.lookup(company.kvkNumber);

      // Controleer of er wijzigingen zijn
      if (hasChanges(company, kvkData)) {
        await crm.updateCompany(company.id, {
          name: kvkData.tradeName,
          address: formatAddress(kvkData.address),
          isActive: kvkData.isActive,
          lastEnriched: new Date()
        });

        console.log(`Updated: ${company.kvkNumber} - ${kvkData.tradeName}`);
      }
    } catch (error) {
      console.error(`Failed: ${company.kvkNumber}`, error.message);
    }

    // Respecteer rate limits
    await delay(200);
  }
}

function hasChanges(existing, fresh) {
  return existing.name !== fresh.tradeName
    || existing.address !== formatAddress(fresh.address)
    || existing.isActive !== fresh.isActive;
}

Integratie met HubSpot

HubSpot biedt een uitgebreide API voor het beheren van bedrijfsrecords. Hier is hoe je KVK-data koppelt:

Veldmapping

KVK-veldHubSpot-veldType
kvkNumberkvk_nummer (custom)String
tradeNamenameString
address.street + houseNumberaddressString
address.postalCodezipString
address.citycityString
vatNumberbtw_nummer (custom)String
legalFormrechtsvorm (custom)String
isActivekvk_actief (custom)Boolean

HubSpot API-voorbeeld

const hubspot = require('@hubspot/api-client');

async function enrichHubSpotCompany(companyId, kvkNumber) {
  const kvkData = await kvkbase.lookup(kvkNumber);

  const client = new hubspot.Client({ accessToken: process.env.HUBSPOT_TOKEN });

  await client.crm.companies.basicApi.update(companyId, {
    properties: {
      name: kvkData.tradeName,
      address: `${kvkData.address.street} ${kvkData.address.houseNumber}`,
      zip: kvkData.address.postalCode,
      city: kvkData.address.city,
      kvk_nummer: kvkData.kvkNumber,
      btw_nummer: kvkData.vatNumber || ''
    }
  });
}

Integratie met Salesforce

Salesforce gebruikt het Account-object voor bedrijfsgegevens. De integratie volgt een vergelijkbaar patroon:

Veldmapping

KVK-veldSalesforce-veldObject
tradeNameNameAccount
addressBillingStreet, BillingPostalCode, BillingCityAccount
kvkNumberKVK_Number__c (custom)Account
vatNumberVAT_Number__c (custom)Account

Salesforce-voorbeeld (Apex)

// Met JSForce (Node.js)
const jsforce = require('jsforce');

async function enrichSalesforceAccount(accountId, kvkNumber) {
  const kvkData = await kvkbase.lookup(kvkNumber);

  const conn = new jsforce.Connection({
    loginUrl: process.env.SF_LOGIN_URL
  });
  await conn.login(process.env.SF_USERNAME, process.env.SF_PASSWORD);

  await conn.sobject('Account').update({
    Id: accountId,
    Name: kvkData.tradeName,
    BillingStreet: `${kvkData.address.street} ${kvkData.address.houseNumber}`,
    BillingPostalCode: kvkData.address.postalCode,
    BillingCity: kvkData.address.city,
    KVK_Number__c: kvkData.kvkNumber,
    VAT_Number__c: kvkData.vatNumber
  });
}

Integratie met Pipedrive

Pipedrive gebruikt Organizations voor bedrijven:

async function enrichPipedriveOrg(orgId, kvkNumber) {
  const kvkData = await kvkbase.lookup(kvkNumber);

  await fetch(`https://api.pipedrive.com/v1/organizations/${orgId}`, {
    method: 'PUT',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      name: kvkData.tradeName,
      address: `${kvkData.address.street} ${kvkData.address.houseNumber}, ` +
               `${kvkData.address.postalCode} ${kvkData.address.city}`,
      // Custom velden voor KVK en BTW
      'kvk_number_field_key': kvkData.kvkNumber,
      'vat_number_field_key': kvkData.vatNumber,
      api_token: process.env.PIPEDRIVE_TOKEN
    })
  });
}

Best practices voor CRM-verrijking

1. Sla het KVK-nummer op als primaire sleutel

Het KVK-nummer verandert nooit voor een bedrijf. Gebruik het als de stabiele identifier waarmee je records koppelt tussen je CRM en de KVK-database.

2. Log alle wijzigingen

Houd bij wanneer en wat er veranderd is. Dit helpt bij het opsporen van fouten en geeft inzicht in hoe snel data veroudert:

async function enrichWithAuditLog(company, kvkData) {
  const changes = detectChanges(company, kvkData);

  if (changes.length > 0) {
    await crm.updateCompany(company.id, mapKvkToCrm(kvkData));
    await auditLog.write({
      companyId: company.id,
      kvkNumber: company.kvkNumber,
      changes: changes,
      timestamp: new Date()
    });
  }
}

3. Verwerk inactieve bedrijven

Als een bedrijf is uitgeschreven bij de KVK, wil je dat weten. Markeer deze records in je CRM zodat je team niet probeert te verkopen aan niet-bestaande bedrijven.

4. Respecteer rate limits

Bij batch-verrijking van duizenden records, bouw je pauzes in om de API niet te overbelasten. Een vertraging van 200ms per aanvraag is doorgaans voldoende.

5. Valideer voor je verrijkt

Niet elk record in je CRM heeft een KVK-nummer, en niet elk opgeslagen nummer is geldig. Filter eerst op records die een geldig 8-cijferig KVK-nummer hebben.

Conclusie

Automatische CRM-verrijking met KVK-data is een investering die zich snel terugverdient. Je team werkt met actuele gegevens, facturen kloppen, en je voorkomt de stille erosie van je klantenbestand.

Met KVKBase als data-bron en een eenvoudig script voor periodieke verrijking houd je je CRM schoon — zonder handmatig werk.