Enrichir automatiquement les données d'entreprise du CRM avec KVK
Enrichissez automatiquement vos fiches CRM avec des données KVK à jour. Méthodes d'intégration pour HubSpot, Salesforce et Pipedrive.
Votre CRM ne vaut que par les données qu’il contient. Et les données se dégradent vite : les entreprises déménagent, changent de nom, sont rachetées ou ferment. Si votre équipe travaille avec des informations d’entreprise obsolètes, vous vous retrouvez avec du courrier retourné, de mauvaises formules d’appel et des opportunités manquées.
L’enrichissement automatique avec les données KVK maintient votre CRM à jour sans effort manuel.
Pourquoi les données d’entreprise se dégradent
Les données B2B se dégradent à un rythme important chaque année. Les causes :
- Les entreprises déménagent (nouvelle adresse, nouveau code postal)
- Les entreprises changent de nom commercial
- Les formes juridiques évoluent (l’entreprise individuelle devient une BV)
- Les entreprises fusionnent ou sont rachetées
- Les entreprises sont radiées
Si votre CRM contient 5 000 fiches d’entreprise, des centaines auront des informations périmées au bout d’un an. Au bout de deux ans, le problème a doublé.
La solution : un enrichissement périodique
Plutôt que d’importer les données une seule fois en espérant qu’elles restent exactes, mettez en place un processus d’enrichissement périodique. Il existe deux grandes approches :
1. Enrichissement déclenché par des événements
Enrichissez les données d’entreprise au moment de l’interaction :
- Un client se connecte : vérifiez si les données sont toujours à jour
- Un collaborateur ouvre une fiche client : enrichissez en arrière-plan
- Une nouvelle affaire est créée : récupérez les dernières informations
2. Enrichissement par lots
Enrichissez toutes les fiches périodiquement dans un traitement nocturne ou hebdomadaire :
async function enrichAllCompanies() {
const companies = await crm.getCompaniesWithKvkNumber();
for (const company of companies) {
try {
const kvkData = await kvkbase.lookup(company.kvkNumber);
// Vérifier les changements
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);
}
// Respecter les limites de débit
await delay(200);
}
}
function hasChanges(existing, fresh) {
return existing.name !== fresh.tradeName
|| existing.address !== formatAddress(fresh.address)
|| existing.isActive !== fresh.isActive;
}
Intégration HubSpot
HubSpot propose une API étendue pour gérer les fiches d’entreprise. Voici comment y connecter les données KVK :
Correspondance des champs
| Champ KVK | Champ HubSpot | Type |
|---|---|---|
| kvkNumber | kvk_number (personnalisé) | Chaîne |
| tradeName | name | Chaîne |
| address.street + houseNumber | address | Chaîne |
| address.postalCode | zip | Chaîne |
| address.city | city | Chaîne |
| vatNumber | vat_number (personnalisé) | Chaîne |
| legalForm | legal_form (personnalisé) | Chaîne |
| isActive | kvk_active (personnalisé) | Booléen |
Exemple avec l’API HubSpot
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_number: kvkData.kvkNumber,
vat_number: kvkData.vatNumber || ''
}
});
}
Intégration Salesforce
Salesforce utilise l’objet Account pour les données d’entreprise. L’intégration suit un schéma similaire :
Correspondance des champs
| Champ KVK | Champ Salesforce | Objet |
|---|---|---|
| tradeName | Name | Account |
| address | BillingStreet, BillingPostalCode, BillingCity | Account |
| kvkNumber | KVK_Number__c (personnalisé) | Account |
| vatNumber | VAT_Number__c (personnalisé) | Account |
Exemple Salesforce (avec JSForce)
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
});
}
Intégration Pipedrive
Pipedrive utilise les Organizations pour les entreprises :
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}`,
// Champs personnalisés pour le KVK et la TVA
'kvk_number_field_key': kvkData.kvkNumber,
'vat_number_field_key': kvkData.vatNumber,
api_token: process.env.PIPEDRIVE_TOKEN
})
});
}
Bonnes pratiques pour l’enrichissement du CRM
1. Utilisez le numéro KVK comme clé primaire
Le numéro KVK d’une entreprise ne change jamais. Utilisez-le comme identifiant stable pour relier les fiches entre votre CRM et la base KVK.
2. Journalisez tous les changements
Suivez quand et quoi a changé. Cela aide au dépannage et donne une idée de la vitesse de dégradation des données :
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. Gérez les entreprises inactives
Si une entreprise a été radiée de la KVK, vous voulez le savoir. Signalez ces fiches dans votre CRM pour que votre équipe n’essaie pas de vendre à des entreprises qui n’existent plus.
4. Respectez les limites de débit
Lorsque vous enrichissez des milliers de fiches par lots, prévoyez des pauses pour ne pas surcharger l’API. Un délai de 200 ms par requête suffit généralement.
5. Validez avant d’enrichir
Toutes les fiches de votre CRM n’ont pas de numéro KVK, et tous les numéros enregistrés ne sont pas valides. Commencez par filtrer les fiches qui possèdent un numéro KVK valide à 8 chiffres.
Conclusion
L’enrichissement automatique du CRM avec les données KVK est un investissement qui se rentabilise vite. Votre équipe travaille avec des données à jour, les factures sont exactes et vous évitez l’érosion silencieuse de votre base clients.
Avec KVKBase comme source de données et un simple script d’enrichissement périodique, vous gardez votre CRM propre, sans travail manuel.