Free: the GTM BlueprintThe stack by funding stage, the CRM data model written down, and a 90-day plan you can run on Monday.Get the blueprint
RevOpsXL
GTM Diagnostic Request the audit
← Recent engagements
Engineering services Software engineering group · multi-brand Measured March to September 2026

The CRM nobody could report on

Seven hundred and twenty-two properties across three objects. Two hundred and three of them had never been filled in once. Several sibling brands ran through one portal, and no two of them meant the same thing by the word “lead.”

GTM audit Data governance Lifecycle design Deduplication Forms architecture

The situation

The portal had been in use for years, across several sibling brands, with no one owning the shape of it. Everyone who ever needed a field had made one, and nobody ever went back to remove the old ones.

The result wasn’t chaos, exactly. Every individual decision had been sensible. It was just that nobody could answer a question about the pipeline without opening three tabs and making a judgement call.

What the audit found

1. 722 properties. 203 of them empty.

Every property on every object was inventoried: fill rate, who created it, what still referenced it, and a recommendation.

332 contact properties -107 at zero per cent fill. 206 deal properties - 41 at zero, meaning one in five deal fields had never been used. 184 company properties - 55 at zero.

Ninety-seven were marked for deletion outright. The rest sorted into keep, review, or native fields that were never the problem. The deletions matter less than the fact that, afterwards, someone can say what each field is for.

2. The duplicates, in three flavours

Thirty companies sharing a domain. Ninety-five fuzzy name matches - the same company spelled differently by different people over two years. Ten records with no name and no contacts at all.

Domains had been typed into the company-name field, so records that were obviously the same company didn’t match on anything. Moving the domains to the domain field first made the duplicates visible, and then enrichment could run against something real. It came down to doing things in the right order.

3. A lifecycle that means something

A stage model from qualified through customer, with written criteria for each transition and triggers that fire automatically instead of waiting for someone to remember.

The interesting one: a stalled stage as a calculated property at sixty days, moving automatically to closed-lost at eighty-one. Before that, a stalled deal looked exactly like a live one, and the forecast was the sum of both.

4. Forms, and where leads actually go

Every form across every brand and both native and non-native handlers, mapped to the workflow it triggers and the routing behind it.

Not glamorous. But a lead can only fall through a handoff that nobody has written down, and until this existed nobody could say which forms fed which pipeline.

The first pass, in March

Duplicate check at the close of the audit: no email duplicates remaining, twenty-two name groups merged. Name formatting ninety-six per cent clean, with a couple of hundred residual records flagged rather than ignored.

A mandatory import template, so the next manual import doesn’t start the cycle again. Most cleanups skip that step, which is why most of them have to be redone every year.

What moved, counted on the same records

We compared exports from 31 March and 30 September, and for deals from 13 July, the earliest deal export that carries associations. Only records present in both exports are counted. Row counts grew between every snapshot, so a plain percentage would have credited new records as cleanup.

MeasureBeforeAfterBasis
Contacts linked to a company79.5%81.6%3,187 contacts in both exports; 69 newly linked, none lost
Deals linked to a company88.0%91.2%933 deals in both exports; 30 newly linked, none lost
Deals marked new or existing customer24.5%86.9%the same 933 deals
Deals tagged product or services63.0%98.1%the same 933 deals
Companies sharing an exact name256 groups4 groupsone counting method on both exports
Companies sharing a domain30 groups4 groupssame
Companies holding deals with no domain on record205 companies, $9.17M of deals132 companies, $4.08M of deals29 to 30 September, across the merge pass
Company records3,3353,023row count, 31 March to 30 September

The company merges did most of it. Just over two hundred were done by hand and by script: 41 domain twins, 157 exact-name pairs, six groups that carried real deal value, and one parent and division pair kept apart on purpose.

The two deal-type jumps came from a validated backfill import on 30 September, checked first against the deals where the answer was already known.

What did not move

No properties have been deleted yet. All 41 deal properties and all 29 company properties marked for deletion are still in the portal, because the records came first and the schema second. Deal owner went from 27% to 30% filled and lead source from 68% to 69%, which is flat.

Companies with no name went from 19 to 38, mostly created by HubSpot’s own auto-create setting. New contacts reach the portal with a company about half the time, which is why the headline contact figure sat near 79% for six months while the old records improved underneath it. A repaired association workflow that skips free-mail addresses is now published, and it only affects contacts created from here on.

What is left is written down and sorted by deal value, starting with the deals that have no contact attached.