Goodwood Consulting
All Case Studies
ASSET MANAGEMENT

Lyrical Partners

Custom HubSpot CRM for a multi-strategy firm managing wirehouse advisor relationships at scale

$8.5B AUMNew York, NY
8
Custom Objects
45K+
Advisor Records Processed
Automated
Branch-Office Matching
Unified
Multi-Strategy Data Model

Lyrical Partners: Engineering a Multi-Strategy CRM on HubSpot

Client Overview

Lyrical Partners is a New York-based multi-strategy investment firm founded in 2004. Operating from the 37th floor of 250 West 55th Street, the firm manages approximately $8.5B across traditional equity, real estate, private equity, venture capital, and hedge fund vehicles. Its primary distribution channel runs through wirehouse financial advisors — salespeople at firms like Morgan Stanley and Wells Fargo who recommend Lyrical's strategies to high-net-worth clients. Managing those advisor relationships at scale, across thousands of contacts, dozens of branch offices, and multiple strategy lines, demanded a CRM purpose-built for the job.

The Problem

When Lyrical came to Goodwood in early 2023, their advisor relationship data lived in Salesforce — and the problems were structural. Salesforce's data model didn't naturally accommodate the hierarchical relationship between an individual financial advisor, their wirehouse team, the branch office they sit in, and the AUM they bring to Lyrical's strategies. Records had accumulated inconsistencies: duplicate call and meeting objects from years of manual entry, contacts associated with the wrong branch, team names that had been renamed or split, and CRD numbers (the unique identifiers assigned to registered advisors by FINRA) stored in multiple legacy fields.

At the same time, Lyrical was evaluating AdvisorPro — an industry data platform that tracks advisor firm changes, new registrations, and branch movements — as a source of truth for contact enrichment. The native AdvisorPro HubSpot connector could sync data automatically, but the risk of overwriting carefully curated CRM properties on sensitive Morgan Stanley records made a raw integration untenable. Lyrical needed a mediated approach: one that pulled AdvisorPro signals into HubSpot on a controlled schedule without clobbering existing data.

Layered on top of all this was a reporting gap. Gary, Lyrical's sales manager, needed dashboards that categorized meeting activity by relationship type, tracked deal pipeline across six distinct deal stages, and surfaced which strategies had been discussed in each advisor meeting — requirements that standard HubSpot configurations couldn't satisfy out of the box.

What Goodwood Built

Custom Object Architecture

The foundation of the engagement was a custom object model designed to mirror Lyrical's actual distribution structure. Goodwood deployed eight custom HubSpot objects alongside the standard contacts, companies, and deals schema:

  • Teams (118 properties): Wirehouse advisor teams, each linked to one or more contacts and a parent Branch Office. The team object became the primary unit of AUM attribution.
  • Branch Offices (74 properties): Physical office locations for wirehouse firms, carrying address fields that were later used as matching keys in the AdvisorPro pipeline.
  • AUM Balances (37 properties): Point-in-time AUM records associated with Teams, enabling trend reporting over time.
  • Strategies (32 properties): Lyrical's investment strategies, associated with meetings to track which products were discussed in each advisor interaction.
  • Wirehouse Transactions (48 properties): Transactional records tied to wirehouse relationships.
  • Private Deals (47 properties): Pipeline tracking for Lyrical's private investment vehicles, separate from the wirehouse deal flow.
  • SF Notes (38 properties): A migration artifact preserving note records from Salesforce that didn't cleanly map to HubSpot's native activity model.
  • Travel, Time Off, and Events (62 properties): Internal calendar and event tracking for the distribution team.

Across standard HubSpot objects, Goodwood built 318 custom contact properties and 91 custom company properties — reflecting the depth of advisor and firm metadata Lyrical needed to track.

Salesforce Migration and Data Remediation

The Salesforce-to-HubSpot migration was not a lift-and-shift. Years of CRM activity had produced duplicate call and meeting records — some originating as duplicates in Salesforce, others created by the migration process itself. Goodwood built deduplication logic that matched on meeting name, date, description, and associated contact, producing staged merge files that Lyrical's team could review before applying. Edge cases — meetings with missing contact associations, records where Salesforce had split a team into two — were handled in manual review rounds rather than automated away.

CRD field cleanup was a parallel workstream. Multiple legacy Salesforce fields had carried CRD numbers into HubSpot in inconsistent formats. Goodwood consolidated these into a single authoritative field per record type, providing the clean identifier layer that the AdvisorPro integration would later depend on.

Firebase Integration Layer

As the CRM's workflow complexity grew, Goodwood hit a practical constraint: HubSpot Operations Hub custom code actions are subject to execution rate limits that become binding when tens of thousands of contact records need to be updated in near real-time. The solution was to move the heaviest compute outside of HubSpot entirely.

Goodwood built `lyrical-core-apps` — a Firebase Cloud Functions project running on Node.js 22 in GCP's `us-central1` region — as an external compute layer for CRM logic. HubSpot workflows trigger the Firebase functions via POST webhook rather than running custom code inline. This architecture decouples HubSpot's workflow engine from the execution of expensive operations, allowing Goodwood to scale each function independently and monitor it directly through GCP logging.

The first production use of this infrastructure was the Recent Activity function suite. When a meeting record is created or updated in HubSpot, a workflow fires a webhook to one of four Cloud Functions — one per object type — that queries HubSpot's API for the most recent meeting associated with that object and writes a standardized set of `recent_*` properties back to the record. This keeps the `recent_activity_date`, `recent_activity_type`, `recent_activity_attendees`, and `recent_activity_description` fields current on Contacts, Companies, Teams, and Branch Offices simultaneously, without requiring complex multi-branch workflow logic inside HubSpot.

A second function, `meetingCreatorSync`, runs on a 15-minute schedule and ensures that meeting records created by Lyrical team members are properly associated with the correct employee contact in HubSpot — a gap that emerged from how HubSpot handles meeting creator attribution.

AdvisorPro Integration Pipeline

Integrating AdvisorPro required a staged, conservative approach. Goodwood first recommended syncing AdvisorPro into a HubSpot sandbox environment to observe how the native connector behaved before touching production data. The production integration was then designed as a shadow property model: AdvisorPro values sync into dedicated shadow fields in HubSpot, and a button-triggered workflow — rather than an automatic rule — promotes those values into the live properties when a Lyrical team member approves the update. This gave the distribution team control over which AdvisorPro changes were reflected in their active CRM records.

The deeper challenge was branch office association: matching the roughly 45,000 AdvisorPro advisor contacts to the correct Branch Office records in HubSpot. Because addresses in AdvisorPro and HubSpot were formatted inconsistently — varying suite notations, abbreviations, floor designations — Goodwood built a normalization pipeline that strips address strings down to numeric components (street number and zip code) and combines them with firm CRD to generate a fuzzy match key. Matches were verified in Excel-based review files before being applied via HubSpot record ID imports. The team processed Wells Fargo (~8,000 records) and RBC contacts as priority cohorts, validating the matching logic before extending it across the full contact population.

Reporting and Marketing Automation

Across all six deal pipelines, Goodwood configured reporting dashboards for the Lyrical sales team — tracking meeting activity by relationship type, quality meetings by outcome, and team-level AUM attribution. The auto-populate script that writes `Lyrical Strategies Discussed` from associated Strategy objects into meeting records ensures that every advisor interaction is tagged with the investment products in play, enabling strategy-level conversion analysis.

On the marketing side, Goodwood operates HubSpot Marketing Pro for Lyrical's distribution campaigns: segmented email sends to wirehouse contact lists, mutual fund factsheet distributions, quarterly webinar workflows with compliance-gated registration forms, and Lyrical Insight content sends. A recurring operational challenge here is that many Morgan Stanley wirehouse advisors cannot be emailed directly through standard channels due to firm email policies, requiring creative list segmentation and LinkedIn Events as alternative outreach paths.

Ongoing Engagement

Lyrical Partners remains an active retainer client. Biweekly working sessions with Goodwood continue to address data quality improvements, AdvisorPro sync refinements, and CRM feature development. The Firebase infrastructure is actively maintained and expanding — as HubSpot's native tooling encounters platform limits, the external compute layer absorbs more of the CRM's operational logic, keeping the system performant as the advisor contact database continues to grow.

HubSpot CRMSalesforce MigrationFirebase Integration LayerAdvisorPro IntegrationData PipelineMarketing Automation

Want a walkthrough of this engagement?

We can share detailed system architectures and outcomes from similar work in your vertical.

Schedule a Walkthrough