← Tutti gli insight
HubSpotdata-architectureRevOpsmethodology

Associazione portfolio-to-deal in HubSpot: tre modi per cablarla, e quello che funziona davvero

Primitive native prima degli embed di report prima delle UI extension custom. L'ordinamento regge in praticamente ogni call di architettura HubSpot che facciamo.

Quando i dati di portfolio devono vivere accanto ai record Deal in HubSpot, lo schema quasi mai si allinea come il relationship manager si aspetta. Il portfolio sta sul Contact, il Deal sta a un hop di distanza, e la tabella di associazione nativa sul record Deal restituisce silenziosamente nulla. Tre modi per cablarlo. Due sembrano più puliti. Quello che regge in produzione accetta una superficie più rumorosa in cambio del non perdere mai un record. Native prima, embed di report secondo, UI extension custom per ultima.

Perché conta proprio adesso

Modelli dati in stile financial services e PE compaiono dentro HubSpot più spesso di prima, e l'architettura dati raramente raggiunge il modello operativo nel primo build. Il lavoro di riferimento di McKinsey sostiene che lo stack moderno riesce o fallisce in base a quanto bene i suoi pillar siano connessi, non sulla profondità di un singolo pillar: l'agilità viene dalle join, non dagli oggetti (Castro, Machado, Roggendorf, Soller, «How to build a data architecture to drive innovation: today and tomorrow», McKinsey Digital, giugno 2020). Stessa logica dentro un CRM. Un custom object portfolio pulito e un Deal pulito sono necessari ma non sufficienti, la join è dove vive il modello operativo, e sbagliarla è il failure mode che si nasconde a vista per due trimestri.

Lo stato attuale del sistema

Prima di raccomandare qualcosa, ricostruisca cosa fa davvero lo schema. In un setup tipico di una piattaforma wealth, gli oggetti rilevanti sono circa quattro: Contact, Deal, un custom object Portfolio, e Company. L'investitore è un Contact. La conversazione di vendita attiva: onboarding, top-up, cambio mandato, è un Deal. Il Portfolio è un custom object, uno o più per investitore, che porta lo stato finanziario, fascia AUM, tipo di mandato, data di funding, stato.

Le associazioni di solito sembrano così. Contact ↔ Portfolio è l'associazione fonte di verità: ogni portfolio è di proprietà di esattamente un investor Contact. Contact ↔ Deal è diretta, il Contact primario sul Deal è l'investitore. Deal ↔ Portfolio è dove diventa interessante. Nella maggior parte dei build che ereditiamo, questa associazione o non esiste come primitiva nativa, oppure esiste ma è popolata solo manualmente.

Il che significa che quando un relationship manager apre un Deal e guarda la card di associazione nativa per i portfolio, non vede nulla, anche se l'investitore ha dimostrabilmente tre portfolio a un hop di distanza. I dati sono nel sistema. Il record Deal non li vede.

Tre opzioni per cablare il portfolio sul Deal

Tre opzioni viable, ognuna con un profilo di complessità e un failure mode diverso. Quella giusta è quasi sempre la più nativa che soddisfi il vincolo.

Opzione 1, Tabella di associazione nativa sul Deal

La risposta più pulita in linea di principio. HubSpot supporta un'associazione diretta Deal ↔ Portfolio, la accenda, aggiunga la card di associazione alla sidebar del record Deal, e il relationship manager vede i portfolio sulla pagina del Deal. Niente report, niente extension, niente lavoro dev. Primitive native fino in fondo.

Il rovescio, questa opzione mostra solo record che sono direttamente associati. Un portfolio che vive sul Contact ma non esplicitamente associato al Deal non comparirà, non c'è traversata di associazione di secondo livello nella card sidebar nativa. Quindi la tabella di associazione nativa è la superficie giusta, ma solo se qualcosa è responsabile di popolarla. Lasciata sola, sarà vuota più spesso che no.

Opzione 2, Embed di report-table sul record Deal

Costruisca un report single-object o cross-object che tiri i portfolio filtrati per «Contact primario su questo Deal», poi lo embeddi sul record Deal. Funziona. Usa il reporting nativo, traversa l'hop del Contact, niente codice custom.

I rovesci sono reali. Si legge come un report invece che come una superficie operativa, un relationship manager su un Deal si aspetta una card di associazione con click-through, non una lista tabulare. La logica di filtri sui report embeddati è vincolata, e il comportamento di caricamento sulla pagina Deal è notevolmente più lento di una card di associazione nativa. Lo strumento giusto per dashboard di executive overview, non per la superficie su cui un relationship manager lavora cinquanta volte al giorno.

Opzione 3, UI extension custom

Costruisca una UI extension HubSpot: un componente React nella sidebar del record Deal, che interroga i portfolio via API basandosi sul Contact primario del Deal, li renderizza in una card custom, lega ognuno al record portfolio. Massimo controllo. Il relationship manager ottiene esattamente la superficie che vuole, con qualunque filtro, raggruppamento e gerarchia visiva il workflow richieda.

Il costo è lavoro dev, manutenzione continua, e una dipendenza di deployment per ogni cambio alla superficie. Le UI extension bloccano anche il team in un modello operativo diverso, cambi che altrimenti sarebbero un edit di config in cinque minuti ora richiedono un ticket dev. Per la maggior parte dei team, il carico di manutenzione supera la rifinitura. Le UI extension sono la risposta giusta quando nessun percorso nativo o report-based soddisfa il vincolo, non la prima risposta.

La raccomandazione

Usi l'Opzione 1, tabella di associazione nativa, e la cabli con un workflow. Alla creazione del Deal, iscriva il Deal in un workflow che auto-associa ogni portfolio attaccato al Contact primario del Deal sul Deal stesso. Il record Deal ora mostra la card di associazione nativa, completamente popolata, con click-through a ogni portfolio.

Il trade, alcuni Deal mostreranno quattro o cinque portfolio dove al relationship manager ne interessa solo uno. Va bene così. Meglio averne di più che di meno. Il relationship manager filtra visivamente in due secondi; l'alternativa è una UI pulita e un record mancante, che è il failure mode peggiore ogni volta. Un record mancante è invisibile. Una card più rumorosa è ovvia.

Due dettagli di implementazione contano. Primo, rifaccia girare il workflow su eventi di cambio Contact, non solo creazione, i Contact primari vengono riassegnati durante l'onboarding, e il set di associazione deve seguire. Secondo, mantenga l'associazione Deal-to-Portfolio etichettata (non solo presente) così il reporting può distinguere le auto-associate dalle curate manualmente. L'etichetta è gratis; la sua assenza diventa una tassa di debugging in sei mesi.

Pattern dal campo

Una piattaforma EU di wealth management con un modello dati portfolio-of-portfolios è venuta da noi col record Deal che mostrava zero portfolio per investitori che manifestamente ne avevano diversi. L'istinto del team era l'Opzione 3, una UI extension, perché un dev era disponibile e la superficie era visibile a relationship manager senior. La soluzione vera era un workflow di sei passi costruito in un pomeriggio, trigger su creazione Deal e cambio Contact primario, lookup dei portfolio sul Contact primario, iterare, associare ognuno con un'associazione etichettata, loggare il count su una proprietà Deal per QA. Il team ha validato riconciliando i conteggi Deal-portfolio contro i conteggi Contact-portfolio per i Deal del trimestre precedente; una volta che combaciava, il workflow è girato sull'intero pipeline. Nessuna UI extension spedita. La card di associazione nativa è la superficie operativa, ed è rimasta popolata attraverso due restructure di pipeline.

Risoluzione, il playbook

Se sta cablando portfolio (o qualunque custom object a un hop) su un record Deal in HubSpot:

  1. Ricostruisca prima lo schema. Confermi quali oggetti esistono, quali associazioni sono native, e dove vive l'associazione fonte di verità. Parta dal grafo di join, non dalla raccomandazione.
  2. Abiliti l'associazione nativa Deal-to-Portfolio. Aggiunga la card di associazione alla sidebar del record Deal. Confermi che si renderizzi vuota prima di cablare automazione contro di essa.
  3. Costruisca il workflow di auto-associazione. Trigger su creazione Deal e su cambio Contact primario. Iterare i portfolio sul Contact primario. Associare ognuno al Deal con un'associazione etichettata così il reporting possa distinguere auto da manuale.
  4. Accetti il tradeoff dell'over-association. Alcuni Deal mostreranno quattro o cinque portfolio; quello è il comportamento corretto. Il relationship manager filtra visivamente. L'alternativa è una card pulita e un record mancante.
  5. Riconcili contro il pipeline storico. Prima di andare live, faccia girare il workflow contro i Deal closed del trimestre scorso e riconcili il count portfolio per Deal contro il count portfolio sul Contact primario. I mismatch sono di solito gap di label di associazione, non logica di workflow.
  6. Logghi il count su una proprietà Deal. Un semplice intero, «portfolio associati alla creazione del Deal», dà al team un segnale di debugging gratis sei mesi dopo.
  7. Riservi le UI extension per i casi in cui il percorso nativo davvero fallisce. Se il workflow soddisfa il vincolo, lo spedisca e prosegua. Il lavoro dev di UI extension è l'opzione che si raggiunge per ultima, non per prima.

Dove entra in gioco Checkpoint

La maggior parte del lavoro di architettura HubSpot che facciamo a Checkpoint è esattamente questa forma, uno schema custom-object che quasi funziona, una superficie relationship-manager che quasi mostra i dati giusti, e un'associazione nativa mancante che nessuno vuole essere quello che la cabli. Le primitive native portano più peso di quanto la maggior parte dei team riconosca loro. Se portfolio, contratti, subscription o qualunque altro custom object a un hop manca silenziosamente dai Suoi record Deal, il modo più facile di farlo è quasi sempre quello giusto, e quasi sempre quello da provare per primo.

Fonti

Harmeet Obhrai
Harmeet Obhrai
RevOps & GTM Systems

Sette anni a costruire infrastruttura revenue per aziende in forte crescita. Ex Head of RevOps in SellerX (Amazon roll-up), dove ha guidato la strategia CRM su oltre 30 brand e costruito uno stack HubSpot centralizzato. GTM Systems Lead in Mercari, Foodji e SS Realty. MBA (Quantic), BSc Economics (UCL & Columbia).

LinkedIn

Condividi questo articolo