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.
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-veld | HubSpot-veld | Type |
|---|---|---|
| kvkNumber | kvk_nummer (custom) | String |
| tradeName | name | String |
| address.street + houseNumber | address | String |
| address.postalCode | zip | String |
| address.city | city | String |
| vatNumber | btw_nummer (custom) | String |
| legalForm | rechtsvorm (custom) | String |
| isActive | kvk_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-veld | Salesforce-veld | Object |
|---|---|---|
| tradeName | Name | Account |
| address | BillingStreet, BillingPostalCode, BillingCity | Account |
| kvkNumber | KVK_Number__c (custom) | Account |
| vatNumber | VAT_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.