Intégration API

Fusion HubSpot : retrouver le contact sans recréer le client

Jérémy Chomel Dawap
  • Publié le : 25 octobre 2026
  • Mis à jour le : 27 octobre 2026
  • Temps de lecture : 18 minutes
  1. Pour qui une fusion de contacts devient un incident ERP
  2. Ce que les interfaces HubSpot permettent de distinguer
  3. Conserver les anciens identifiants sans recréer de fiche
  4. Scénario : deux contacts, un client ERP et une nouvelle fiche
  5. Recevoir un ancien événement après une deuxième fusion
  6. Traiter les conflits sans choisir le client au hasard
  7. Exécuter une recette de résolution et de rejeu
  8. Installer la résolution dans le circuit du connecteur
  9. Détecter une identité qui dérive malgré des appels réussis
  10. Erreurs fréquentes après une fusion HubSpot
  11. Plan d’action pour recevoir les fusions sans recréer de clients
  12. Guides complémentaires pour les relations et les reprises CRM
  13. Conclusion : résoudre la personne avant de poursuivre l’opération
Portrait de Jérémy Chomel

Une commerciale fusionne deux fiches HubSpot pour nettoyer son CRM. Quelques minutes plus tard, le connecteur reçoit une modification portant sur l’ancien identifiant et crée un nouveau contact côté ERP. Le nettoyage produit alors un doublon supplémentaire, tandis que les commandes déjà ouvertes restent attachées à une référence différente. Le problème vient du traitement de l’identité après fusion, pas nécessairement de la qualité du rapprochement initial.

En pratique, une notification de fusion doit déclencher une vérification de la fiche actuelle et des correspondances existantes avant toute écriture métier. L’ancien identifiant devient une référence historique à résoudre. Il ne constitue ni une autorisation de recréer une personne, ni une instruction de fusionner les comptes clients financiers qui lui étaient associés.

Nous suivrons un scénario fictif où deux contacts rattachés au même client ERP aboutissent à une nouvelle identité CRM, puis une seconde fusion intervient avant le traitement d’un ancien événement. Une recette téléchargeable vérifie les correspondances, les conflits, les portails distincts et le rejeu. Elle ne contacte pas HubSpot et ne prétend pas valider les droits ou abonnements d’une application réelle.

Le travail d’intégration API entre logiciels métier consiste ici à conserver une identité explicable pendant les changements CRM. Un connecteur HubSpot relié à votre ERP doit aussi connaître les limites de ce qu’il peut modifier : fiche de contact, relation à une société, dossier commercial et compte de facturation ne sont pas des objets interchangeables.

Pour qui une fusion de contacts devient un incident ERP

Repérer les écritures préparées avec une ancienne référence

Le cas concerne un CRM synchronisé avec un logiciel de gestion, un portail B2B ou un outil de service client. Une tâche peut avoir été préparée avant la fusion puis exécutée après. Un événement peut également arriver alors que la table locale contient encore les deux anciens contacts. La bonne question est de savoir comment cette tâche retrouvera la personne et le contexte commercial actuels.

Inventoriez les opérations qui utilisent l’identifiant : mise à jour de coordonnées, rattachement d’un devis, import de contact, synchronisation d’une association. Une fusion peut rendre certaines références historiques tout en laissant le dossier commercial valide. Traiter toute erreur de lecture comme une disparition du client provoquerait une création ou une suspension injustifiée.

Distinguer la personne du compte qui achète

Une personne peut intervenir pour plusieurs sociétés. Deux fiches CRM représentant cette personne peuvent donc porter des relations commerciales différentes sans que les comptes ERP soient des doublons. Avant de parler de « bon client », précisez si le connecteur maintient un contact, un compte facturé ou une relation entre les deux. La politique de correspondance dépend de cette distinction.

La recette proposée suppose un flux qui exige un compte ERP unique déjà qualifié pour poursuivre son opération. Si plusieurs comptes apparaissent, elle demande un arbitrage ; elle ne déclare pas que ces comptes sont erronés. Un modèle autorisant plusieurs relations peut les conserver, mais doit identifier celle qui concerne le devis ou la commande traitée.

Ce que les interfaces HubSpot permettent de distinguer

Ne pas confondre demande de fusion et notification reçue

La référence Merge two contacts décrit une opération POST avec un contact principal et un contact à fusionner. Ce connecteur de diagnostic n’exécute pas cette opération : il traite les conséquences d’une fusion effectuée par ailleurs. Confondre les deux rôles pourrait conduire à refaire une opération destructive pendant une reprise.

La documentation de fusion des fiches précise que le comportement dépend du type d’objet et qu’une fusion ne peut pas être simplement annulée. Elle expose aussi une propriété permettant de consulter les identifiants fusionnés. La décision CRM doit donc être préparée avec les équipes concernées ; réparer une correspondance locale n’équivaut pas à annuler la fusion source.

Lire les identifiants selon leur rôle exact

La documentation des webhooks HubSpot, vérifiée le 25 octobre 2026, distingue primaryObjectId, mergedObjectIds et newObjectId dans les notifications de fusion. Ce dernier peut représenter un nouvel objet issu de l’opération. Cette documentation indique que l’ordre des notifications et leur réception unique ne sont pas garantis.

Il faut donc conserver ces rôles dans l’adaptateur, puis vérifier l’état actuel avant de choisir une cible. Les chemins documentaires consultés portent la mention « legacy » : validez le modèle d’application et la version réellement utilisés. Une propriété connue dans cette documentation ne prouve pas à elle seule que votre abonnement reçoit déjà cet événement.

Conserver les anciens identifiants sans recréer de fiche

Définir une clé de correspondance complète

Dans notre modèle, une référence externe comprend le portail HubSpot, le type d’objet et l’identifiant. Le portail protège contre les collisions entre clients ; le type d’objet empêche de confondre un contact et une société portant des nombres ressemblants. Les identifiants sont traités comme des chaînes opaques, sans leur attribuer une ancienneté ou une priorité commerciale.

La table distingue identifiant historique, identifiant courant confirmé, compte ERP candidat, état de validation et preuve de résolution. Une ancienne référence reste consultable pour expliquer les événements et les documents déjà produits. Elle ne reste pas pour autant une cible autorisée pour un nouvel appel d’écriture.

Faire du silence une attente, pas une permission

Une lecture vide ou refusée peut résulter d’un droit, d’un périmètre, d’une indisponibilité ou d’un identifiant devenu historique. Le traitement conserve alors une attente de résolution. Il n’utilise pas l’adresse email comme échappatoire pour lancer un upsert et créer une fiche qui ressemble à l’ancienne.

La méthode de correction d’un contact HubSpot existant distingue déjà mise à jour et création. Après fusion, il faut d’abord résoudre la cible de cette correction. Le choix de la bonne méthode HTTP ne répare pas une identité mal qualifiée.

Scénario : deux contacts, un client ERP et une nouvelle fiche

Suivre une correspondance qui reste cohérente

Dans le portail fictif P1, les contacts 101 et 102 sont tous deux reliés au compte ERP E42. Une fusion aboutit à la fiche actuelle 201. La confirmation normalisée fournie à l’exercice indique que 101, 102 et 201 appartiennent à la même lignée de contacts. Le résultat attendu est de résoudre ces trois références vers 201 tout en conservant E42.

Cette confirmation est une entrée simulée du programme, pas une réponse copiée de HubSpot. En production, l’adaptateur doit établir cette relation à partir des pièces et lectures disponibles, avec les droits appropriés. Si l’observation reste incomplète, le programme renvoie une demande de relecture au lieu de compléter la lignée par ressemblance de nom.

Référence dans P1Avant résolutionAprès confirmation
Contact 101Client E42Référence historique vers 201, E42 conservé
Contact 102Client E42Référence historique vers 201, E42 conservé
Contact 201Aucune ligne localeIdentité courante reliée à E42

Préserver les pièces commerciales déjà émises

La résolution d’un identifiant ne réécrit pas le destinataire d’une facture ni l’historique d’un devis. Les documents gardent leurs références et leur contexte d’émission ; une vue de consultation peut expliquer à quelle fiche CRM actuelle correspond un ancien identifiant. Toute modification commerciale demande son propre motif et son propre contrôle.

Le risque est de croire que le contact principal désigne automatiquement le compte financier à conserver. Dans notre cas, E42 est conservé parce que les correspondances concordent déjà, pas parce que 201 aurait gagné une priorité comptable. Cette nuance devient déterminante dès qu’un deuxième compte ERP apparaît dans la lignée.

Recevoir un ancien événement après une deuxième fusion

Relire la cible au lieu de rejouer une photographie

Supposons que 201 ait ensuite été fusionné vers une fiche actuelle 301. Une notification plus ancienne mentionnant 101 et 102 arrive après cette opération. Le connecteur qui applique aveuglément la première cible rétablit 201 dans sa table, alors que la lecture qualifiée indique maintenant 301. La cohérence dépend de la résolution actuelle, pas de l’ordre d’arrivée réseau.

Dans l’exercice, l’adaptateur fournit une lignée confirmée contenant 101, 102, 201 et 301. La fonction retourne 301 et E42. Elle n’invente pas cette seconde fusion à partir du seul premier message. Cette frontière est essentielle : le mécanisme de correspondance peut être correct alors que la collecte chargée de confirmer l’identité reste insuffisante.

Ne pas recopier une ancienne valeur de propriété

Un événement de modification reçu tardivement peut contenir une valeur devenue obsolète. Le résoudre vers la bonne fiche ne donne pas le droit d’appliquer cette valeur comme actuelle. Pour les flux qui répliquent l’état courant, le message sert à demander une nouvelle lecture ; les règles de propriété décident ensuite quels champs l’ERP peut recevoir.

Un flux qui doit conserver une succession d’événements métier obéit à un autre contrat. Il peut avoir besoin de l’état à une date précise et d’un ordre contrôlé. Ne faites pas passer une synchronisation d’état courant pour un journal exhaustif de changements : cela masquerait les événements perdus ou les lectures qui ont sauté plusieurs versions.

Traiter les conflits sans choisir le client au hasard

Deux comptes ERP ne deviennent pas un seul par déduction

Dans un deuxième scénario fictif, 101 correspond à E42 et 102 à E99. La fusion CRM est confirmée, mais le flux exige un client unique. La recette renvoie « arbitrer » avec les deux candidats et aucune écriture proposée. Le responsable commercial doit qualifier la relation utile au dossier ; si une opération financière est envisagée, son responsable valide séparément les conséquences.

Le choix ne doit reposer ni sur le premier élément d’une réponse ni sur la fiche créée le plus récemment. Vérifiez la société concernée, le devis, les références contractuelles et les correspondances déjà approuvées. Il est parfois correct de conserver deux relations et de demander le contexte de la prochaine commande plutôt que de chercher à éliminer un compte.

Un autre portail reste un autre périmètre

Le portail fictif P2 possède lui aussi un contact 101, relié à E77. La fusion observée dans P1 ne modifie pas cette correspondance. Le test vérifie cette séparation explicitement. Une clé locale réduite au seul numéro de contact pourrait faire passer une tâche dans le compte d’un autre client sans provoquer d’erreur technique visible.

Lorsque le portail attendu ne correspond pas à celui de l’installation authentifiée, le message est rejeté ou placé en examen selon le contrat de sécurité. La signature, le contexte d’installation et les droits doivent être vérifiés dans le récepteur réel. Le petit programme pédagogique commence après ces contrôles et ne les remplace pas.

Exécuter une recette de résolution et de rejeu

Contrôler les sorties avant toute mutation externe

Le programme de correspondance après fusion s’exécute avec Python et sa bibliothèque standard. Il produit un plan local : prêt, à relire ou à arbitrer. Les écritures proposées concernent seulement une table de correspondance fictive. Aucune création de contact, fusion CRM ou modification de compte ERP n’est exécutée.

La recette vérifie six permutations de la lignée, le traitement répété du même plan, la seconde fusion déjà acquise, le conflit de comptes, l’absence de confirmation et la séparation des portails. Le résultat attendu ne dépend pas de l’ordre des identifiants dans la liste. Les cas négatifs sont aussi importants que le rattachement réussi vers E42.

python3 hubspot-fusion-identites.py
# 101 + 102 : identité courante 201 ; client ERP E42 conservé.
# Ancien événement après seconde fusion : identité courante 301.
# Deux comptes candidats : arbitrage, sans écriture proposée.

Identifier ce que la démonstration laisse à réceptionner

Le script utilise des lectures normalisées et un registre en mémoire. Il ne prouve pas la complétude de l’historique HubSpot, la disponibilité des associations ni la sûreté d’écritures concurrentes dans une base réelle. Ces points appartiennent à la recette du connecteur, avec la version de l’application et les permissions du compte de test.

Ajoutez ensuite une interruption entre lecture et enregistrement, une nouvelle fusion pendant ce délai et deux traitements concurrents de la même identité. L’adaptateur doit revalider ou détecter la version devenue obsolète. Un test qui conserve toujours la même photographie ne révélera pas ce risque de concurrence.

Installer la résolution dans le circuit du connecteur

Persister la réception avant d’accuser le traitement

Le récepteur conserve l’événement utile dans une file durable après validation de sa provenance. L’entrée comprend portail, type d’objet, identifiants et référence de réception ; la sortie du traitement est une correspondance validée ou une exception attribuée. La journalisation distingue réception technique et résolution métier pour que le support ne confonde pas HTTP réussi et tâche terminée.

Le traitement applique ensuite la politique de relecture et verrouille la mise à jour locale selon le modèle de concurrence choisi. Son contrat définit les responsabilités : l’intégrateur garantit la traçabilité des alias, le métier qualifie les comptes candidats, l’exploitation surveille les attentes. Une dépendance CRM indisponible ouvre un repli en attente, jamais un mode de création permissif.

Prévoir un budget de relecture et des reprises bornées

Le middleware conserve un payload minimal pour pouvoir reprendre la résolution sans recopier toutes les données personnelles du contact. Une erreur d’autorisation OAuth demande de réparer l’installation ; répéter le même appel ne résout pas un droit manquant. À l’inverse, une indisponibilité temporaire peut ouvrir un retry avec backoff et une date limite. Le compteur reste attaché à la résolution, pas à une nouvelle création de client.

Fixez également un timeout et un nombre maximal de lectures par tentative. Si les associations nécessitent une pagination, une page manquante rend l’observation incomplète : elle ne prouve pas l’absence d’un second compte. La politique d’idempotence protège les écritures locales lors du rejeu. L’observabilité doit ensuite rapprocher la référence reçue, les lectures terminées et la décision obtenue, sans exposer les secrets d’accès dans les traces.

Rendre l’arbitrage utilisable sans ouvrir les logs

L’écran d’exception doit montrer la fiche courante confirmée, les références historiques, les comptes candidats et le dossier qui a déclenché la demande. Il propose une décision bornée à ce dossier ou à une règle de correspondance explicitement approuvée. Un bouton général « prendre le principal » serait ambigu et difficile à justifier ensuite.

La décision conserve son auteur, sa portée et les pièces utilisées. Si l’équipe choisit E42 pour un devis précis, cette validation ne doit pas devenir silencieusement une règle pour toutes les sociétés liées au contact. La reprise des tâches en attente doit vérifier cette portée avant d’appliquer le choix.

Détecter une identité qui dérive malgré des appels réussis

Observer les créations et les attentes de résolution

Premier signal faible : les créations de contacts ERP augmentent juste après une campagne de fusion CRM. Rapprochez-les des anciens identifiants avant de conclure à une hausse commerciale. Deuxième signal : les tâches obtiennent des réponses HTTP normales, mais restent plus longtemps sans compte qualifié. Le problème peut être une perte de correspondance plutôt qu’une panne de transport.

Suivez le nombre de références historiques résolues, de conflits ouverts et de lectures impossibles, avec leurs effectifs et leur ancienneté. Fixez un seuil d’escalade adapté à la prochaine opération bloquée. Une demande de mise à jour non urgente et un devis attendu pour confirmation n’exigent pas la même réaction, même si le message technique est identique.

Évaluer le coût de la réparation manuelle

Par exemple, douze doublons fictifs demandant chacun vingt minutes de vérification représentent quatre heures. Avec un coût interne hypothétique de 40 € par heure, la charge atteint 160 €, hors correction des documents et échanges commerciaux. Ce calcul illustre une méthode de mesure ; il ne démontre ni votre fréquence d’incident ni une économie garantie.

Mesurez séparément les tâches reprises automatiquement avec preuve et celles qui restent soumises au métier. Chercher à supprimer tous les arbitrages peut augmenter le risque de mauvais rattachement. Une automatisation utile absorbe les cas concordants et rend les autres plus faciles à décider, sans cacher leur complexité dans un score de confiance.

Erreurs fréquentes après une fusion HubSpot

Employer une valeur pratique comme identité universelle

L’email peut changer, être partagé ou se retrouver parmi plusieurs adresses conservées. Un nom n’est pas une clé et un numéro d’objet sans portail n’est pas suffisant. Le contrat doit identifier la personne et la relation commerciale séparément. Les raccourcis paraissent efficaces jusqu’au premier cas qui traverse plusieurs sociétés ou installations.

  • Utiliser systématiquement le contact principal sans examiner le nouvel identifiant et la lecture actuelle.
  • Recréer une fiche après un échec de recherche sur une ancienne référence.
  • Rejouer les anciennes valeurs de propriété sur la nouvelle identité.
  • Réaffecter des factures parce que le CRM a fusionné deux personnes.
  • Fusionner les consentements ou les droits d’accès par simple union des profils.

Confondre correspondance technique et autorisation

Retrouver la personne ne prouve pas qu’une opération est encore autorisée. Une tâche préparée avant un retrait d’accès ou une modification de dossier doit repasser ses contrôles. Le traitement d’un contact archivé répond à un problème voisin, mais une fusion ne doit pas devenir un moyen de contourner la suspension portée par une ancienne référence.

Conservez les raisons de blocage indépendamment de l’alias. Une identité désormais lisible peut rester interdite pour une action donnée. Cette séparation évite qu’une correction du mapping réactive automatiquement un envoi, une synchronisation ou une consultation dont l’autorisation avait été retirée.

Le cas de la notification différée après retrait des droits montre cette séparation sur un envoi de document : retrouver la personne ne suffit pas à autoriser sa prochaine réception.

Plan d’action pour recevoir les fusions sans recréer de clients

Qualifier une famille d’opérations avant de nettoyer tout le CRM

Choisissez un flux précis, par exemple la mise à jour des contacts de devis. Décrivez ce qu’il peut lire, ce qu’il peut modifier et la correspondance attendue avec le compte ERP. Recensez les tâches préparées à l’avance et les lieux où un échec de lecture déclenche aujourd’hui une création. Cette carte fournit les points de contrôle à corriger en premier.

Préparez ensuite un compte de test autorisé et des objets fictifs. Vérifiez une fusion simple, une seconde fusion, un événement répété et un conflit de comptes. Conservez les pièces sources expurgées ainsi que les décisions attendues avant d’exécuter la recette. Une configuration d’abonnement différente de la production doit apparaître dans les réserves, pas disparaître du rapport final.

Ouvrir progressivement et conserver une reprise maîtrisée

Commencez par calculer les correspondances proposées sans écritures métier, puis faites relire les cas ambigus. Autorisez ensuite les seuls cas concordants dont les contrôles sont éprouvés. L’ancien traitement reste désactivé sur ce périmètre pour éviter deux décisions concurrentes. La bascule conserve une liste des tâches en attente et de leur version.

Avant d’étendre, vérifiez qu’une interruption ne perd pas les alias et qu’une ancienne notification ne rétablit pas une cible dépassée. Contrôlez également l’écran d’arbitrage, la portée des validations et les documents déjà émis. Le critère de sortie est une identité expliquée et une action autorisée ; un taux de succès API élevé ne suffit pas.

Guides complémentaires pour les relations et les reprises CRM

Une résolution d’identité correcte laisse deux vérifications distinctes : la relation commerciale à utiliser et l’autorisation de reprendre une tâche. Ces approfondissements permettent de traiter ces frontières sans élargir la fusion à tous les objets métier.

Choisir la relation avec la société concernée

L’analyse de la société primaire d’un contact HubSpot décrit la sélection d’une association sans se fier à l’ordre de la réponse. Elle aide à qualifier le contexte qui restera nécessaire après fusion.

Reprenez cette vérification lorsqu’un même contact intervient pour plusieurs entreprises. La fiche courante ne désigne pas à elle seule la société à facturer pour le prochain dossier.

Empêcher une reprise de ressusciter un contact retiré

Le diagnostic du contact HubSpot archivé qui revient après synchronisation examine les tâches préparées avant un retrait. Il complète le contrôle des anciennes références par celui des autorisations encore valides.

Les deux situations peuvent se croiser dans un historique. Une table d’alias doit donc préserver les motifs de suspension utiles au traitement, sans transformer la nouvelle identité en permission générale.

Conclusion : résoudre la personne avant de poursuivre l’opération

Une fusion HubSpot change les références avec lesquelles les autres logiciels reconnaissent un contact. Le connecteur doit retrouver la fiche courante, conserver les anciennes références et expliquer la correspondance utilisée. Recréer automatiquement une fiche après une lecture infructueuse contourne le problème au lieu de le résoudre.

Le scénario montre qu’un nouveau numéro CRM peut conserver le même compte ERP et qu’une ancienne notification peut devoir conduire à une identité plus récente. Il montre aussi la limite de l’automatisation : plusieurs comptes candidats demandent un contexte métier que le choix du contact principal ne fournit pas.

La recette locale éprouve cette décision sur des données fictives. La réception du connecteur doit encore couvrir provenance des messages, lectures réelles, concurrence, droits et écrans d’arbitrage. Les pièces commerciales existantes restent protégées par leurs propres règles de modification.

Dawap peut vous aider à construire ces correspondances et à sécuriser les reprises entre CRM et ERP. Notre expertise en intégration API relie les événements techniques aux décisions métier, pour que le nettoyage du CRM améliore les opérations sans créer de nouveaux clients par erreur.

Portrait de Jérémy Chomel

Vos fusions CRM créent-elles des doublons dans l’ERP ?

Examinons les identifiants, les associations et les tâches en attente pour sécuriser les échanges entre vos logiciels.

Articles recommandés

HubSpot API : webhooks, CRM et intégrateur HubSpot API Intégration API HubSpot API : webhooks, CRM et intégrateur HubSpot API Lire l'article
  • 4 septembre 2024
  • Lecture ~25 min

Connecter HubSpot via API ne consiste pas à brancher plus de formulaires ! Il faut décider quelle source crée un contact, laquelle enrichit l’entreprise, qui ferme un deal et quand un webhook doit être bloqué. Sans ce cadre, le CRM produit des doublons, des responsables incohérents et des reprises manuelles qui coûtent cher.

Relations contact vers sociétés HubSpot qualifiées avant le compte de gestion Intégration API HubSpot : choisir la société depuis sa relation Lire l'article
  • 11 octobre 2026
  • Lecture ~14 min

Le contact est correct, mais le dossier ERP vise une autre société. Douze associations fictives testent ordre, catégorie, direction, collecte incomplète et correspondance de compte. La sélection primaire reste distincte de l’autorisation de facturation ; 52 assertions locales, sans accès HubSpot ni création ERP.

Illustration du choix entre modification PATCH et upsert pour un contact HubSpot relié à l’ERP Intégration API HubSpot : corriger un contact existant Lire l'article
  • 22 août 2025
  • Lecture ~15 minutes

Une correction ERP change l’email du contact, puis le connecteur ouvre une nouvelle fiche. Choisissez entre modification seule et création autorisée. Un préparateur local de 48 contrôles conserve aussi la différence entre champ absent, valeur inconnue et effacement volontaire, sans envoyer de requête à HubSpot.

Illustration du blocage des anciennes tâches après le retrait d’un contact HubSpot Intégration API HubSpot : un contact archivé revient Lire l'article
  • 23 août 2025
  • Lecture ~16 minutes

Le commercial retire une fiche HubSpot, puis l’import ERP la recrée. Distinguez recherche vide, archivage confirmé et reprise autorisée. Un exercice local de 48 contrôles éprouve une barrière qui retient les tâches anciennes, y compris après restauration, sans appeler HubSpot ni supprimer les données de gestion.

Construisons une synchronisation CRM explicable

Examinons les identifiants, les associations et les tâches en attente pour sécuriser les échanges entre vos logiciels.