List building / Playbook

CRM cleanup and data hygiene for outbound teams

A CRM that supports outbound has one record per person and per company, a short list of required fields, one owner per account and a verification date on every contact. Standardize the fields you match on, merge duplicates, fill the gaps, then assign owners. Plan to re-verify contacts every few months, because HubSpot's own decay simulator assumes B2B data loses 22.5 percent a year.

How fast CRM data goes bad

HubSpot's Database Decay Simulation says email marketing databases degrade by about 22.5 percent every year. Its footnote says that Marketing Sherpas research shows B2B data decays at 2.1 percent per month, which it annualizes to 22.5 percent. The page names no report title, date, sample or link for that research, and its headline refers to email marketing databases while the footnote refers to B2B data (HubSpot, checked 18 October 2026). Compounding 2.1 percent a month does give about 22.5 percent over 12 months, and about 12 percent over six. By the same assumption, a quarter costs roughly 6 percent. That arithmetic is ours.

Treat it as an order of magnitude. We found no independent primary figure for contact decay, only vendor blogs repeating each other, so this is the only decay number we use.

The US Bureau of Labor Statistics gives some context. Median tenure with a current employer was 4.1 years in January 2026, up from 3.9 years in January 2024, and 3.0 years for workers aged 25 to 34 (BLS Employee Tenure release, 24 September 2026). BLS measures workers, not contact records, so it is a proxy. It still suggests that a share of your titles and work emails are wrong in any given year, and a list that has sat for a year is the likeliest place to find them.

Our working default: re-verify any contact whose last-verified date is older than 90 days before it enters a send.

Dedupe rules that hold up

Decide the match keys before you touch the merge button. We suggest these.

Suggested match keys for outbound CRMs (our recommendation)
ObjectExact match keyFuzzy match to review by hand
ContactEmail, lowercased and trimmedFull name plus company domain, LinkedIn URL if you store it
CompanyRoot domain without protocol or "www"Company name plus country

Standardize those keys first. "Sales@Acme.com" and "sales@acme.com" are one address, and a tool that compares them as text will not see it.

What HubSpot does

All HubSpot facts here were checked on 18 October 2026. HubSpot matches contacts on email and companies on primary company domain name. A manual duplicate is blocked with an alert. On import, a contact whose email matches an existing one updates that record and changes only the mapped properties, and if several existing records share the email, the row fails with an error. A file with no unique identifier creates a new record for every row. Companies created through the API are not deduplicated by domain, including those from installed third-party sync apps (HubSpot: deduplicate records).

For records already in the system, HubSpot's duplicate tool compares contacts on first name, last name, email, IP country, phone, zip code and company name by default, and companies on domain name, company name, country or region, phone number and industry. It compares values daily and calculates results as new records are created. You can define up to two custom rules per object using up to nine properties. Managing individual duplicates needs Professional or Enterprise, and custom rules need Data Hub Professional or Enterprise. Displayed pairs are capped at 10,000, 30,000 or 100,000 depending on plan (HubSpot: manage duplicates).

What Salesforce does

Salesforce splits the job in two. Matching rules identify possible duplicates, and duplicate rules decide what happens next. An active matching rule does nothing until a duplicate rule uses it, and a duplicate rule can hold up to three matching rules. You choose whether to block users from creating duplicates or to warn them and let them save, and admins can report on the duplicates created after a warning was bypassed (Salesforce Trailhead, checked 18 October 2026).

Our rule of thumb for either system: block on an exact email match for contacts and an exact domain match for companies, and warn on the fuzzy keys. Blocking fuzzy matches rejects legitimate people who share a surname and an employer.

Merge mechanics: what survives

Merging is where data gets lost, so read what each system keeps before you run one. Facts below were checked on 18 October 2026.

What happens when you merge, by system
QuestionHubSpotSalesforce
How many records at onceTwo records of the same objectUp to three leads at once in Lightning Experience (leads page)
Which record staysYou choose the primary recordYou choose the principal lead, or the primary contact
Conflicting valuesPrimary's values generally win, and the secondary's fill empty onesYou choose the value to keep for each field on leads
Created dateOldest create date keptContacts keep Created By and Created Date from the oldest record
Activity historyTimelines of both records appear on the new recordRelated items such as campaigns and activities move, with exceptions
EmailSecondary contact's email becomes a secondary email addressNot covered on the pages we read
UndoNot possibleNot covered on the pages we read

Further HubSpot details: the merged record gets a new Record ID, the lifecycle stage furthest down the funnel is kept, merges fail when the two records have a combined total of 250 or more merges, activities can take up to 30 minutes to sync, and the user needs Merge records or Super Admin permission (HubSpot: merge records). The page states that it is not possible to unmerge records.

Salesforce details: merging leads needs Delete permission on leads (Salesforce Help: merge duplicate leads). For contacts, Chatter feeds come only from the primary record, hidden and read-only field data such as sharing settings is kept from the primary, and if a non-master contact has a portal user, that user is deactivated (Salesforce Help: considerations for merging duplicate contacts).

Because HubSpot cannot unmerge, export the affected records first. Pick the primary record as the one with the most complete history and the correct owner, not the newest. Merge exact matches in bulk and fuzzy matches in small reviewed batches.

Required fields, standardization and enrichment

A required field is one you cannot send or route without. Keep the list short, or people will fill it with junk to get past the form.

Suggested required fields and formats (our recommendation)
FieldFormat ruleRequired at creation
EmailLowercase, trimmed, verification status storedYes
Company domainRoot domain, no "https://" and no "www"Yes
SourceCampaign, list or tool that created the recordYes
OwnerA named user or queueYes
Job titleRaw title kept, plus normalized function and seniorityNo
CountryTwo-letter ISO codeNo
PhoneE.164 format, such as +14155550123No
Last verifiedDate of the last email checkSet by the tool
Suppression statusYes or no, plus the reason and dateSet by the workflow

Normalize titles into a function (sales, marketing, operations) and a seniority level. Segmenting on raw titles misses "Head of Revenue Operations" when you search for "RevOps".

Enrichment

Fill gaps from tools, and set a source order so an enriched value never overwrites one a person typed. We use Clay, Prospeo and enrichment APIs for this, with Sales Navigator and Crunchbase as inputs on some builds. Verify every email before it enters a sequence, and stamp the last-verified date when you do. Our Clay list-building playbook covers the waterfall approach in detail.

Two engagements show the scale we have worked at. A marketing agency got 10K+ leads a month with 80% better data accuracy (our work). A UK B2B SaaS company ended up with 50K+ verified leads and 3x campaign performance, built with Sales Navigator, Crunchbase and enrichment tools (our work). Our list building and CRM cleanup service covers this work.

Ownership and routing rules

Without an owner, a record has nobody responsible for its follow-up. With two owners, the same prospect gets two emails. Write the rules down so they can be tested.

Example ownership rules (illustration, adjust to your team)
SituationRule
New company enters from a campaignThe campaign owner owns the company, and contacts inherit that owner
A new contact appears at an owned companyThe company's owner gets the contact
No owner after one business dayThe record goes to a named queue manager
Owner leaves or changes roleOpen records move to the successor in one batch
Two reps claim the same companyThe earlier recorded touch wins
Contact asks to stopSuppression overrides every owner and every sequence

Reply routing uses the same fields. When a positive reply arrives, the workflow needs the owner and the fit score on the record or it has nobody to notify. The build for that is in the AI qualification and routing playbook.

A one-week cleanup plan

This plan assumes a CRM of up to a few hundred thousand records and one person doing the work. Larger databases need more days for the review steps.

Five working days (suggested schedule)
DayWorkOutput
MondayExport all contacts, companies and deals. Count records missing required fields and count duplicate emails and domains. Agree the match keys and the rule for choosing a primary record.Backup file and a baseline count
TuesdayStandardize emails, domains, countries and phone formats. Then run the duplicate tool and merge exact matches.Exact duplicates removed
WednesdayReview fuzzy duplicates in batches and merge the confirmed ones. Set the system to block exact duplicates on create.Fuzzy duplicates reviewed, creation rule live
ThursdayEnrich missing required fields. Verify emails and stamp the last-verified date. Move records that fail verification to a quarantine view instead of deleting them.Required-field coverage up, quarantine list
FridayAssign owners to every unowned company. Switch on the ownership and routing rules. Save the views you will use for the monthly audit.Zero unowned companies, audit views saved

The following Monday, repeat Monday's counts and compare. Four numbers are worth tracking each month: duplicate pairs per 1,000 records, the share of records with every required field, the share verified in the last 90 days, and the share of companies with an owner. If the duplicate count climbs again within a month, the cause is almost always an import or an API integration that bypasses your rules, so check those first. The HubSpot import and API behavior described above is a common source.

Questions

How often does B2B contact data go out of date?

HubSpot's decay simulation cites Marketing Sherpas research at 2.1 percent a month, which it annualizes to 22.5 percent, but gives no link to the underlying study. We treat it as an order of magnitude and re-verify contacts older than 90 days before sending.

What should I use to match duplicate contacts?

Lowercased email for exact matches, and full name plus company domain for fuzzy matches that a person reviews. For companies, use the root domain first and company name plus country second.

Can I undo a HubSpot merge?

No. HubSpot's documentation states it is not possible to unmerge records, so export the affected records before you merge anything.

Do I need a paid HubSpot tier to manage duplicates?

For HubSpot's duplicate management tool, the documentation says Professional or Enterprise is required, and custom duplicate rules need Data Hub Professional or Enterprise (checked 18 October 2026). The deduplication page also says HubSpot blocks you from manually creating a contact with an existing email or a company with an existing domain.

Sources

Worked examples are illustrations unless a case study is linked. How we write and check these pages.

Related service

List building and CRM cleanup

Enriched, verified prospect lists and a CRM you can trust.

See how it works ↗

Next step

Tell us who you sell to.

A 30-minute call. You get a plan for your outbound, whatever you decide about working with us.

Book a strategy call Or email salih@tibexa.com