CRM Hygiene
CRM Hygiene is a seven-step outbound and inbound play for your CRM, from “Audit, read-only” to “Keep it on”. It uses HubSpot, Salesforce, Clay, Explorium, Prospeo and five more tools.
- Motion
- Outbound, Inbound
- Channel
- CRM
- Steps
- 7
- Tools
- 10
The workflow
CRM Hygiene
Export first, measure every field, and trace which integration created each record.
HubSpot
SalesforceA name match only counts when the domain matches too.
A switchboard number or a common firm name is never the key.
A person's name stamped on info@ is a field to fix, not a merge.
The change setSaved as a list view or report the owner can open.
Backup exportEvery record in the change set, before anything moves.
Every change is logged with its old value, so any field can be restored.
Enrichment waterfallOnly the misses move on. Fill blanks, never overwrite a value someone set on purpose.
Explorium
Prospeo
Findymail
BounceBan
Twiliolookup, dead numbers clearedCurrent-employer scan, customers first. The same company under another domain is not a move.
Clay
LinkedIn
Same rules, every new record
Slack
HubSpot
Salesforce
Clay
Explorium
Prospeo
Findymail
BounceBan
Twilio
LinkedIn
Slack
The diagram as text
- 1
Audit, read-only
Snapshot and fill rates (0 records written): Title, LinkedIn, Country, Email validity, Phone validity and Segment. Export first, measure every field, and trace which integration created each record. Export: HubSpot and Salesforce.
- 2
Detect the dirty sets
Dirty set → Fix
- Duplicate person or company → Merge, survivor picked by rule
- Contact not linked to its account → Link to the account
- Job changer → New contact, old one marked gone
- Bounced email or dead number → Replace and verify
- Missing fields → Fill blanks only
- Lead with no account → Match on domain
- 3
Match duplicates carefully
Gate 1: Same company domain. A name match only counts when the domain matches too. Rejected: Different people.
Gate 2: Not a shared key. A switchboard number or a common firm name is never the key. Rejected: Shared line.
Gate 3: Not a role inbox. A person's name stamped on info@ is a field to fix, not a merge. Rejected: Fix the field.
- 4
Approve, back up, then write
The change set: Saved as a list view or report the owner can open. Tool: Salesforce.
Backup export: Every record in the change set, before anything moves. Tool: HubSpot.
Labeled connection: Then.
Owner approves the exact list (yes unlocks the write)
Write unlocked: Every change is logged with its old value, so any field can be restored..
- 5
Fill blanks, catch job changers
Enrichment waterfall: Only the misses move on. Fill blanks, never overwrite a value someone set on purpose. Profile: Explorium. Email: Prospeo and Findymail. Verify: BounceBan. Phone: Twilio and lookup, dead numbers cleared. Tool: Clay.
Job changers: Current-employer scan, customers first. The same company under another domain is not a move. Scan: Clay and LinkedIn. Create: New contact, history kept.
- 6
Keep it on
Same rules, every new record: New inbound, Rep-added records, Job-change signals and Weekly sweep. Report: Slack. Tool: Slack.
Outcome: A CRM that stays clean, with every change undoable. Tools: HubSpot.
Feedback loop: The weekly sweep re-runs the audit and posts the fill rates.
The stack: HubSpot, Salesforce, Clay, Explorium, Prospeo, Findymail, BounceBan, Twilio, LinkedIn and Slack.
Open the diagram full size (1180 px wide)
The play in seven steps
- 01
Step 1: Audit, read-only
The first pass never writes. It measures how dirty the CRM really is, so every later fix has a number behind it.
- Export a snapshot of HubSpot or Salesforce: contacts, companies, leads, owners and the fields that matter.
- Measure fill rates on title, LinkedIn, country, email validity, phone validity and segment.
- Find which integration or import created each record. Duplicates come back unless the source is fixed.
- Treat default picklist values such as 'pending' as blank.
- Prove nothing was written: count records last modified by your own user.
- 02
Step 2: Detect the dirty sets
Messy CRMs break in the same handful of ways, and each one needs its own rule and its own fix.
- Duplicates: two records for the same person or company.
- Contacts at a company that has an account but are not linked to it.
- Job changers: LinkedIn shows a different current employer.
- Bounced or invalid emails, and phone numbers that no longer connect.
- Missing fields, and leads with no account.
- Never size a duplicate problem from a tool's suggestion count. Re-count it per matching rule.
- 03
Step 3: Match duplicates carefully
Most records that look like duplicates are different people sharing a name, a phone line or a company name.
- A name match only counts when the company domain matches too.
- Never key on a shared phone or a company name. Colleagues share a switchboard, and many firms share a name.
- Blank directory and link-in-bio domains before any domain rule, or unrelated companies merge.
- A role inbox with a person's name on it is a field to fix, not a merge.
- Pick the survivor by rule: furthest through the funnel, then has an email, then most recently active.
- 04
Step 4: Approve and back up before anything writes
Nothing touches the CRM without a human yes and a way back.
- Take a backup export of every record in the change set.
- The CRM owner approves the exact list, as a saved list view or report.
- Check the workflows, validation rules and two-way syncs that will fire on the write.
- Estimate enrichment credits before the run.
- Log every change with its previous value before it is written, so any field can be restored.
- 05
Step 5: Fill the blanks with a waterfall
Enrichment fills what is missing and leaves alone what someone entered on purpose.
- Clay runs the providers in order: Explorium for title, LinkedIn and country, then Prospeo and Findymail for email.
- Only the misses move to the next provider.
- BounceBan verifies every email before it lands. A Twilio Lookup clears phone numbers that are disconnected or invalid.
- Fill blanks only. The exceptions: bad emails and dead numbers get replaced, and job changers get a new contact.
- 06
Step 6: Catch the job changers
A contact who left is still worth something: the history stays, and the person becomes a lead at the new company.
- Scan current employers for the records that matter, customers first, through Clay and LinkedIn.
- Check the new company is not the same company under another domain or another account record before moving anyone.
- Create a new contact at the new company and mark the old one as gone. Never overwrite the old record.
- 07
Step 7: Keep it on
A cleanup decays the day it ends. A pipeline every new record runs through does not.
- New inbound leads, records reps add by hand and job-change signals all run through the same rules.
- A weekly sweep re-checks fill rates, bounces and dead numbers.
- Post the weekly numbers and anything held for review to Slack.
Tools used
The ten tools this play names. Each links to the other plays that use it.
Related plays
Contact Data Refresh Before Every Send
Contacts queued for next week's sendsLists and sequencesCompare the current LinkedIn role with the CRM record.
LinkedIn
ApifyRe-verify on send week, not on the day it was found.
BounceBan
ZeroBounceLook up carrier and line type, drop disconnected numbers.
TwilioThe new person in the same seat inherits the account context.
Apollo
Clay
Findymail
ProspeoA past champion who moved is often the warmest lead you have.
LinkedIn
FullEnrichAnything still unverified is held for the next cycle.



HubSpot
LinkedIn
Apify
BounceBan
ZeroBounce
Twilio
Clay
Apollo
Findymail
Prospeo
FullEnrich
Smartlead
Contact Data Refresh Before Every Send
4 steps · Email, LinkedIn, Call, CRM





+6 moreSignals in the CRM, with Decay
Every signal carries a date, a one-line summary and the source URL.
Clay
Claude Code
Trigify
HubSpot
SalesforceEach signal adds its weight, then decays on its own curve. A new signal lifts the score again.
Watched, no outreach yet.
The owner works it today.
Decayed out on its own.
Every buyer at the account, checked and pushed to the CRM.
AI Ark
Prospeo
Findymail
LinkedIn
BounceBan
Brief and alertWhy it is hot, written only from copy-safe signals, plus a task for the owner.
Claude
HubSpot
Slack
Clay
Claude Code
Trigify
HubSpot
Salesforce
AI Ark
Prospeo
Findymail
LinkedIn
BounceBan
Slack
Claude
Signals in the CRM, with Decay
6 steps · CRM, Email, LinkedIn





+6 moreClosed-Lost Revival
Closed-lost dealsWhy they said noAccounts that became customers since, or have another open deal, are left out.
HubSpot
Salesforce
Clay
Explorium
ClaudeEvery contact from the old deal. A champion who left goes to champion tracking at the new company.
LinkedIn
Prospeo
Findymail
BounceBanon send dayMore changes and a resolved loss reason score highest. Nothing new means no outreach.


“What changed since we spoke”
Old championDay 0First touch, from the rep who ran the deal, naming the change.
HeyReach
Nooks
WhatsApp
Twilioif they texted before
New peopleDay 2The new buying committee hears the same angle by email.
Smartlead


HubSpot
Salesforce
Clay
Explorium
Claude
LinkedIn
Prospeo
Findymail
BounceBan
HeyReach
Nooks
WhatsApp
Twilio
Smartlead
Slack
Closed-Lost Revival
7 steps · Email, LinkedIn, Call, WhatsApp, SMS, CRM





+9 more