RevOps Playbook: Deduplication, Data Hygiene, and Identity Resolution for HubSpot–Salesforce
Duplicates quietly drain pipeline productivity. Reps chase the wrong record, marketing engages the same person twice, attribution fragments, and forecasts skew. This playbook establishes a practical approach to identity resolution across HubSpot and Salesforce so your team can trust people, companies, and opportunities to be unique, complete, and current.
What Good Looks Like
Healthy systems share three traits:
- Deterministic identity rules (email and domain) cover most cases; probabilistic signals supplement only when necessary.
- Duplicates are prevented at creation time, not cleaned later.
- Merge behavior is consistent, audited, and reversible for a short window.
Make this your standard before tackling edge cases.
Deterministic Identity Rules
Start with clear, machine‑enforceable rules.
- People: Email is the primary key. Lowercase, trim whitespace, strip test disposable domains, and reject obvious bogus patterns. If your motion includes personal and corporate emails for the same person, choose one as canonical and document the exception.
- Companies: Use company domain as the key for B2B. Maintain an alias table for known brand variants (e.g.,
google.comandalphabet.com). For domain‑less small businesses, pair exact Account Name with Country/State to reduce collisions. - Opportunities: Tie to the Account and primary Contact. Prohibit duplicate open Opportunities with the same product for the same Account unless a clear multi‑threading policy exists.
Write these rules in plain language and keep them where operators work.
Prevention at the Door
It is far cheaper to block a duplicate than to merge one later.
- Salesforce Duplicate Rules: Configure matching rules on Leads and Contacts using exact email and fuzzy name; for Accounts, use domain and clean name comparisons. Choose Block + Alert for end users, Allow + Report for system processes with a triage queue.
- HubSpot Duplicate Management: Turn on email‑based prevention and schedule periodic dedupe reviews. Build workflows that flag records with suspicious domains or missing names.
- Forms and Integrations: Normalize emails (lowercase, trim) and validate domains before record creation. For imports, run a pre‑dedupe step in a spreadsheet or middleware.
Add a RevOps Slack alert for any blocked creation from critical sources (e.g., demo form) so you can intervene quickly.
Safe Merges and Auditability
Merging is necessary but irreversible in many cases. Create a safe pattern:
- Export both records before merge and store a 30‑day snapshot in secure storage.
- Choose a winning record deterministically: last activity wins for people, revenue‑bearing record wins for companies, most complete record wins as a tie‑breaker.
- Merge in Salesforce first (if Salesforce is the commercial source), then re‑link the surviving ID back to HubSpot via the external ID.
- Rebuild associations: Campaign Members, Tasks, and Opportunities should point to the survivor.
Record the merge event (who, when, why, winner) in a merge log for audit.
Hygiene Routines That Actually Stick
Hygiene is not a one‑time project. Run lightweight jobs that keep entropy low.
- Weekly: New duplicate queue triage, blocked creation review, picklist value exceptions, missing owner fixes.
- Monthly: High‑risk domain review (free webmail for enterprise targets), enrichment gaps on ICP accounts, stale Opportunities with no activity.
- Quarterly: Reconciliation against product telemetry or billing system to ensure customers are represented accurately in both platforms.
Track hygiene SLAs (e.g., duplicate lifetime under seven days; enrichment coverage over 90% for ICP accounts).
Identity Enrichment and Normalization
Enrichment improves matching and segmentation—if it’s well governed.
- Normalize company names (strip
Inc,LLC, punctuation). Use the normalized name only for matching; keep the display name intact. - Consolidate job titles into personas (e.g., “VP Marketing” and “Head of Growth” → “Marketing Leadership”).
- Translate industries from enrichment provider taxonomy to your Salesforce picklist.
Store raw provider fields in a separate namespace and only map normalized fields to core objects. This prevents provider‑specific churn from polluting your schema.
Reconciling HubSpot and Salesforce Records
When you discover drift between systems, resolve with a clear preference.
- If both have a record for the same email, Salesforce wins on status/ownership; HubSpot wins on behavioral and consent fields.
- If HubSpot has a Contact and Salesforce has a Lead for the same email, convert the Lead or link to the Contact—do not allow both to persist. Use a workflow that raises a task for RevOps when this happens.
- For Accounts/Companies, prefer Salesforce’s Account as the authority; link HubSpot Company records to the surviving Account by external ID.
Automate a weekly reconciliation report that lists conflicts and proposed winners for human approval.
Handling Edge Cases
No set of rules covers everything. Expected edge cases include:
- Shared inboxes (e.g.,
info@): Treat cautiously; restrict creation or flag for manual review unless your motion explicitly targets them. - Personal emails for enterprise buyers: Allow but mark as “Non‑Canonical” and attempt to append corporate email when available.
- M&A/brand changes: Maintain an alias table for domains and names; bulk update associations once the change is confirmed.
Document each new pattern, add it to your runbook, and refine prevention rules when an edge case repeats.
Observability for Identity
Measure what matters:
- Duplicate creation rate per 1,000 net new contacts.
- Percentage of Accounts without a domain.
- Percentage of Opportunities without a primary Contact.
- Percentage of Campaign Members tied to contacts lacking email.
Alert on spikes and assign an owner to respond within a defined SLA.
FAQ
Should we dedupe in HubSpot or Salesforce first?
Salesforce should be the first line for deduplication because it owns sales process and forecasting. Mirror merges back to HubSpot via external IDs. For marketing‑sourced duplicates before Salesforce creation, HubSpot’s prevention rules should block and queue for RevOps.
Can we trust fuzzy matching on names?
Use it as a secondary signal only. Deterministic matching (email, domain) should gate creation. Fuzzy matching drives review queues and enriches confidence, but it should not create or auto‑merge without a human in the loop.
How do we merge Leads and Contacts properly?
Prefer conversion of Leads to existing Contacts when identity overlaps. If a Contact exists for a Lead’s email, convert and attach to the Account; do not keep both. Update HubSpot to reference the surviving Salesforce Contact via external ID.
What about duplicates across subsidiaries and parent brands?
Maintain an account hierarchy and an alias table for domains. Decide whether subsidiaries are distinct Accounts or roll up to a parent for routing and reporting. Apply the same rule consistently and document it.
How do we avoid duplicate Opportunities?
Block creation of a second open Opportunity for the same Account and product unless a multi‑threading policy is active. If allowed, require a reason code and a distinct buying group identifier.
More RevOps Playbooks from Bles Software
- Attribution & Pipeline Reporting Setup | Bles Software
- Field Governance & Picklists | Bles Software
- Data Mapping Checklist (Leads/Contacts/Opportunities) | Bles Software
- Sync Rules: Deduping, Owners, Lifecycle | Bles Software
- HubSpot ↔ QuickBooks Integration Playbook | Bles Software
- Security, Consent, PII Flow | Bles Software
- HubSpot ↔ Salesforce: Cost & Timeline Drivers | Bles Software
- HubSpot ↔ Salesforce Integration: Executive Guide | Bles Software
- Daily AI Roundup: AI agent, model and enterprise AI news