RevOps byTom Schoorstra.
All case studies·HR Technology50–200 employees

Account-Based CRM · AIHR

Connecting the full customer relationship in HubSpot

At AIHR, one customer could have several company records, licenses, deals, and service projects in HubSpot. Those records weren't consistently connected, which made it difficult to see the full relationship and report on retention.

I led the project to connect them through a custom Account object, including the data model, historical cleanup, and workflows. I also added weekly checks to flag duplicates and missing links after launch.

September 2026: the core setup is live.

0
Automated roll-up paths
Weekly
Account quality control

Why the existing records weren't enough

The data was already in HubSpot, but there was no consistent way to group everything that belonged to the same customer. A deal showed part of the relationship. A license showed another part. Parent companies and subsidiaries added another question: which records belonged together?

That made retention reporting difficult. Before the data team could calculate it at account level, they needed a reliable way to identify the customer across current and historical records.

How I approached it

01

Define what belongs to an Account

I started by defining what an Account represents and how the records should connect. One Company record didn't necessarily represent the full customer relationship, so duplicates and parent-child relationships needed review before the historical records could be linked.

02

Connect the historical data

I backfilled the Account layer across active and historical B2B customers. Keeping the older licenses connected mattered because retention reporting needs the history as well as the current contract.

03

Build the paths for new records

I built workflows to create or find the right Account when new licenses and professional services are added, and to link deals to it. The associated Company provides the matching point between records.

04

Add checks for missing links

New records keep coming in after launch. I added a weekly review to catch possible duplicates and missing associations, so exceptions can be investigated as they appear.

What's in place now

The Account object groups companies, licenses, deals, and professional services under one customer relationship. Three automated paths link new records to Accounts.

That gives the data team a consistent customer identifier for account-level retention reporting.

Keeping the data connected

Each week, I run a check that compares new Accounts with the full account base. It looks for possible duplicates and parent-company relationships using names, domains, and previously reviewed relationships.

The review also flags licenses and professional services without an Account, and signed deals where expected service records are missing. Claude helps me assess the exceptions and put the findings in context.

If the source data is incomplete or the candidate list exceeds the expected range, the run stops for investigation. I review the findings before making changes in HubSpot. The check itself doesn't merge records or change associations.

Technologies used

Stack

HubSpotCustom objectsWorkflowsJavaScriptClaude

Hard to see the full customer picture in HubSpot?

Tell me how your customer records are set up and what you're trying to report on. I can help you work out where the gaps are and what needs to change.