Quand les données de portefeuille doivent vivre à côté des enregistrements Deal dans HubSpot, le schéma s'aligne presque jamais comme le relationship manager s'y attend. Le portefeuille est sur le Contact, le Deal est à un saut, et la table d'association native sur l'enregistrement Deal renvoie silencieusement rien. Trois façons de câbler. Deux semblent plus propres. Celle qui tient en production accepte une surface plus bruyante en échange de ne jamais perdre un enregistrement. Native d'abord, embed de rapport ensuite, UI extension personnalisée en dernier.
Pourquoi cela compte maintenant
Les modèles de données financial-services et PE-style apparaissent dans HubSpot plus souvent qu'avant, et l'architecture de données rattrape rarement le modèle opérationnel au premier build. Le travail de référence McKinsey défend que le stack moderne réussit ou échoue sur la qualité de connexion entre ses piliers, pas sur la profondeur d'un pilier seul: l'agilité vient des jointures, pas des objets (Castro, Machado, Roggendorf, Soller, « How to build a data architecture to drive innovation: today and tomorrow », McKinsey Digital, juin 2020). Même logique dans un CRM. Un objet portefeuille propre et un objet Deal propre sont nécessaires mais pas suffisants , la jointure, c'est là que vit le modèle opérationnel, et la rater, c'est le mode d'échec qui se cache à la vue de tous pendant deux trimestres.
L'état actuel du système
Avant toute recommandation, reconstruisez ce que le schéma fait réellement. Dans un setup wealth-platform typique, les objets pertinents sont à peu près quatre : Contact, Deal, un objet personnalisé Portefeuille, et Company. L'investisseur est un Contact. La conversation commerciale active: onboarding, top-up, changement de mandat, est un Deal. Le Portefeuille est un objet personnalisé, un ou plusieurs par investisseur, portant l'état financier , tranche AUM, type de mandat, date de funding, statut.
Les associations ressemblent généralement à ça. Contact ↔ Portefeuille est l'association source de vérité : chaque portefeuille appartient à exactement un Contact investisseur. Contact ↔ Deal est direct , le Contact principal sur le Deal est l'investisseur. Deal ↔ Portefeuille, c'est là que ça devient intéressant. Dans la plupart des builds que nous héritons, cette association soit n'existe pas comme primitive native, soit existe mais n'est peuplée que manuellement.
Ce qui veut dire qu'un relationship manager ouvrant un Deal et regardant la carte d'association native pour les portefeuilles ne voit rien, alors même que l'investisseur a manifestement trois portefeuilles à un saut. La donnée est dans le système. L'enregistrement Deal ne la voit pas.
Trois options pour câbler le portefeuille sur le Deal
Trois options viables, chacune avec un profil de complexité et un mode d'échec différents. La bonne est presque toujours la plus native qui satisfait la contrainte.
Option 1 , Table d'association native sur le Deal
La réponse la plus propre en principe. HubSpot supporte une association directe Deal ↔ Portefeuille, activez-la, ajoutez la carte d'association à la sidebar de l'enregistrement Deal, et le relationship manager voit les portefeuilles sur la page Deal. Pas de rapports, pas d'extensions, pas de dev. Primitives natives jusqu'au bout.
Le hic , cette option ne fait surfacer que les enregistrements directement associés. Un portefeuille vivant sur le Contact mais pas explicitement associé au Deal n'apparaîtra pas, il n'y a pas de traversée d'association de second niveau dans la carte sidebar native. Donc la table d'association native est la bonne surface, mais seulement si quelqu'un est responsable de la peupler. Laissée seule, elle sera vide plus souvent qu'autre chose.
Option 2 , Embed de table de rapport sur l'enregistrement Deal
Construisez un rapport mono-objet ou cross-objet qui sort les portefeuilles filtrés par « Contact principal sur ce Deal », puis embarquez-le sur l'enregistrement Deal. Ça marche. Utilise le reporting natif, traverse le saut Contact, pas de code personnalisé.
Les inconvénients sont réels. Ça se lit comme un rapport plutôt qu'une surface de travail, un relationship manager sur un Deal s'attend à une carte d'association avec click-through, pas une liste tabulaire. La logique de filtre sur les rapports embarqués est contrainte, et le comportement de chargement sur la page Deal est sensiblement plus lent qu'une carte d'association native. Le bon outil pour les dashboards d'overview exécutifs, pas pour la surface qu'un relationship manager travaille cinquante fois par jour.
Option 3 , UI extension personnalisée
Construisez une UI extension HubSpot: un composant React dans la sidebar de l'enregistrement Deal, qui interroge les portefeuilles via l'API selon le Contact principal du Deal, les rend dans une carte personnalisée, lie chacun à l'enregistrement portefeuille. Contrôle maximum. Le relationship manager obtient exactement la surface que vous voulez, avec quels que soient les filtres, regroupements et hiérarchie visuelle dont le workflow a besoin.
Le coût, c'est du travail dev, de la maintenance continue, et une dépendance de déploiement pour chaque changement à la surface. Les UI extensions enferment aussi l'équipe dans un modèle opérationnel différent , des changements qui seraient sinon une édition de config de cinq minutes nécessitent maintenant un ticket dev. Pour la plupart des équipes, le poids de maintenance dépasse le polish. Les UI extensions sont la bonne réponse quand aucun chemin natif ou basé sur rapport ne satisfait la contrainte, pas la première réponse.
La recommandation
Utilisez l'Option 1, table d'association native, et câblez-la avec un workflow. À la création du Deal, enrôlez le Deal dans un workflow qui auto-associe chaque portefeuille attaché au Contact principal du Deal sur le Deal lui-même. L'enregistrement Deal montre maintenant la carte d'association native, pleinement peuplée, avec click-through vers chaque portefeuille.
Le compromis , certains Deals feront surfacer quatre ou cinq portefeuilles là où le relationship manager ne se soucie que d'un. C'est très bien. Mieux vaut trop que pas assez. Le relationship manager filtre visuellement en deux secondes ; l'alternative, c'est une UI propre et un enregistrement manquant, ce qui est le pire mode d'échec à chaque fois. Un enregistrement manquant est invisible. Une carte plus bruyante est évidente.
Deux détails d'implémentation comptent. D'abord, re-tournez le workflow sur les événements de changement de Contact, pas seulement à la création, les Contacts principaux sont réassignés pendant l'onboarding, et le set d'association doit suivre. Ensuite, gardez l'association Deal-vers-portefeuille labellisée (pas seulement présente) pour que le reporting puisse distinguer auto-associé de manuellement curé. Le label est gratuit ; son absence devient une taxe de debugging dans six mois.
Cas observé sur le terrain
Une plateforme de wealth-management européenne avec un modèle de données portefeuille-de-portefeuilles est venue nous voir avec l'enregistrement Deal montrant zéro portefeuille pour des investisseurs qui en avaient manifestement plusieurs. L'instinct de l'équipe était l'Option 3, une UI extension, parce qu'un dev était disponible et que la surface était visible aux relationship managers seniors. Le vrai correctif, c'était un workflow en six étapes construit en un après-midi , trigger sur création de Deal et changement de Contact principal, lookup des portefeuilles sur le Contact principal, itération, association de chacun avec un label d'association, log du compte sur une propriété Deal pour QA. L'équipe a validé en réconciliant les comptes Deal-portefeuille contre les comptes Contact-portefeuille pour les Deals du trimestre précédent ; une fois ça matché, le workflow a tourné sur le Pipeline. Aucune UI extension livrée. La carte d'association native est la surface de travail, et elle est restée peuplée à travers deux restructures de Pipeline.
Résolution , le playbook
Si vous câblez du portefeuille (ou tout objet personnalisé à un saut) sur un enregistrement Deal dans HubSpot :
- Reconstruisez le schéma d'abord. Confirmez quels objets existent, quelles associations sont natives, et où vit l'association source de vérité. Commencez par le graphe de jointure, pas la recommandation.
- Activez l'association native Deal-vers-portefeuille. Ajoutez la carte d'association à la sidebar de l'enregistrement Deal. Confirmez qu'elle s'affiche vide avant de câbler de l'automatisation contre.
- Construisez le workflow d'auto-association. Trigger sur création de Deal et sur changement de Contact principal. Itérez les portefeuilles sur le Contact principal. Associez chacun au Deal avec une association labellisée pour que le reporting puisse distinguer auto de manuel.
- Acceptez le compromis de sur-association. Certains Deals feront surfacer quatre ou cinq portefeuilles ; c'est le comportement correct. Le relationship manager filtre visuellement. L'alternative, c'est une carte propre et un enregistrement manquant.
- Réconciliez contre le Pipeline historique. Avant la mise en production, tournez le workflow contre les Deals fermés du trimestre passé et réconciliez le compte de portefeuille par Deal contre le compte de portefeuille sur le Contact principal. Les écarts sont généralement des trous de label d'association, pas de la logique de workflow.
- Loguez le compte sur une propriété Deal. Un simple entier, « portefeuilles associés à la création du Deal », donne à l'équipe un signal de debugging gratuit six mois plus tard.
- Réservez les UI extensions aux cas où le chemin natif échoue réellement. Si le workflow satisfait la contrainte, livrez-le et passez à autre chose. Le travail dev d'UI extension est l'option vers laquelle vous tendez en dernier, pas en premier.
Là où Checkpoint intervient
L'essentiel du travail d'architecture HubSpot que nous faisons chez Checkpoint est exactement de cette forme , un schéma d'objet personnalisé qui marche presque, une surface relationship-manager qui montre presque la bonne donnée, et une association native manquante que personne ne veut câbler. Les primitives natives portent plus de poids que la plupart des équipes ne leur en accordent. Si des portefeuilles, contrats, abonnements, ou tout autre objet personnalisé à un saut manquent silencieusement de vos enregistrements Deal, la façon la plus simple de faire est presque toujours la bonne, et presque toujours celle à essayer en premier.
Sources
- Castro, Antonio ; Machado, Jorge ; Roggendorf, Matthias ; Soller, Henning. « How to build a data architecture to drive innovation, today and tomorrow. » McKinsey Digital, 3 juin 2020. mckinsey.com
- Lemkin, Jason. « Which CRM in 2026/2027? » SaaStr, avril 2026. saastr.com
