Contact-To-Account Matching SOP
Every incoming contact routes to the correct CRM account using a defined priority rule set, with clear exception handling for subsidiaries, personal email domains, and duplicate account records.
Before You Start
60 to 90 minutes setup: prerequisites and expected output
Output: A documented matching SOP with a priority rule set, exception-handling logic, and a defined review process for unmatched records. All incoming contacts route to the correct account before entering any sequence or CRM pipeline.
Time required: 60 to 90 minutes on first setup. Under 10 minutes per batch once the process runs in your enrichment tool or CRM workflow automation.
HubSpot or Salesforce with existing account records, an ICP company or domain list, access to an enrichment tool (Apollo, Clay, ZoomInfo, or Clearbit), and a defined review queue owner (RevOps or Sales Ops). Align on parent and subsidiary handling before the first run.
Workflow Overview
The 6-step contact-to-account matching SOP at a glance
| Step | Action | Tool / System | Output |
|---|---|---|---|
| 1 | Define matching priority rule set | Notion, Confluence, or Google Doc | Written rule order: domain first, company name second, manual third |
| 2 | Run domain-based account lookup | CRM automation, Apollo, Clay, or ZoomInfo | Contacts matched where email domain equals company domain |
| 3 | Run fuzzy company name match on unmatched records | Clay conditional logic or CRM dedup rules | Secondary matches resolved for personal emails and domain variants |
| 4 | Apply exception rules for subsidiaries and shared domains | CRM parent/child account structure | Subsidiary contacts routed to child account, not parent |
| 5 | Flag and review unmatched records | CRM queue or Google Sheet review list | Unmatched contacts held in review, not pushed to active sequences |
| 6 | Deduplicate and route matched contacts to account owner | CRM dedup workflow, HubSpot or Salesforce automation | Clean contact records assigned to the correct owner with no duplicates |
Step by Step
All 6 steps: complete contact-to-account matching SOP
- Step 1: Define your matching priority rule set in writing
Document the rule order before configuring any CRM automation: email domain first (most reliable), fuzzy company name second, manual review third. Without a written rule set, different team members resolve the same edge case differently, creating inconsistent account assignment across your database.
- Step 2: Run domain-based account lookup against existing CRM accounts
Domain matching compares the incoming contact's email domain against the Website or Company Domain Name field on your CRM account records. Configure your CRM dedup rules, Apollo CRM enrichment, or Clay workflow to run this lookup automatically on every new contact creation event.
- Step 3: Run fuzzy company name matching on records without a usable domain
For contacts with personal email domains (gmail.com, outlook.com), normalize both company name strings to lowercase, strip legal suffixes, then compare. Auto-assign at 85%+ similarity; route scores between 70% and 85% to the manual review queue rather than auto-assign.
- Step 4: Apply exception rules for subsidiaries, shared domains, and holding companies
Document handling rules for three structures before they appear in your data: subsidiaries with shared parent domains, enterprise divisions sharing one domain, and solo consultants whose domain is their company. In HubSpot, use parent-child company relationships; in Salesforce, use the Parent Account field and configure territory rules at the child level.
- Step 5: Flag unmatched records to a dedicated review queue
Any contact failing both domain and fuzzy matching enters a review queue and is suppressed from all active outreach until resolved. The queue owner resolves each record within 48 hours: assign to an existing account or create a new one if the company is genuinely new to your CRM.
- Step 6: Deduplicate and route matched contacts to the account owner
Before confirming the match, check whether a contact with this email already exists on the account; if so, merge or discard the incoming duplicate. Log the match method (domain, fuzzy, or manual) as a contact property to audit match quality over time. See the Duplicate Records guide when duplicate volumes spike.
A contact from "Acme Digital Services" matching "Acme Services Group" at 78% is not a safe auto-assign. Route borderline matches to a review queue with a 48-hour SLA for human resolution.
After 30 days, filter contacts by match method and compare reply rates: domain-matched contacts consistently outperform fuzzy-matched ones because the data is cleaner and account context is more reliable.
Common Failures
What breaks in contact-to-account matching and how to fix it
Tool Fit
Apollo, Clay, ZoomInfo, or Clearbit: which tool runs each step
The SOP runs in any CRM with account deduplication rules. The tools below handle enrichment, matching logic, and normalization at volume.
| Role in the SOP | Tool | How it fits |
|---|---|---|
| Contact enrichment before matching | Apollo | Enriches contacts with company domain before CRM push. Matches on domain automatically when pushing to HubSpot or Salesforce. |
| Multi-source waterfall enrichment + conditional match logic | Clay | Runs domain normalization, fuzzy name comparison, and conditional routing across 150+ data providers. Handles Steps 2 through 4 without custom code. |
| Enterprise CRM matching and territory assignment | ZoomInfo | CRM enrichment and territory planning include matching across parent and subsidiary structures. Best for large enterprise account lists with complex hierarchy rules. |
| Enrichment-driven domain matching in HubSpot | Clearbit | Now part of HubSpot. Enriches incoming contacts with company domain and firmographics, feeding the Company Domain Name property that drives HubSpot's native dedup matching. |
Once contacts are matched to the correct account, the Segmentation and Routing SOP covers how to assign them to the right territory, sequence, or deal stage based on ICP tier and account intent.
FAQ
5 common questions on contact-to-account matching
What is the difference between contact-to-account matching and deduplication?
+Matching assigns a contact to the correct account; deduplication removes duplicate contact records from the same account. Step 6 of this SOP handles deduplication after matching is confirmed.
What should I do with contacts who have a Gmail or personal email address?
+Personal email domains cannot be matched via domain lookup. Fall back to fuzzy company name matching using the enriched company name field, or route to manual review if no company name is available.
How do I handle a contact from a subsidiary when only the parent company exists in my CRM?
+Create a child account record for the subsidiary and assign its specific domain to that record before running the match. Configure matching to prefer the child account over the parent when both share the same top-level domain.
How often should I run the contact-to-account matching SOP?
+For continuous imports, configure matching to run automatically on every new contact creation event. For batch imports, run the SOP on each batch before any contact enters a sequence; the manual review step in Step 5 runs weekly regardless.
Can Clay automate the full contact-to-account matching SOP?
+Clay automates Steps 2 through 4: domain normalization, domain lookup, fuzzy matching with a configurable threshold, and conditional routing. Steps 5 and 6 still require a CRM connection via Clay's native push integrations or a webhook step.
Matching SOP in place. Next: route contacts to the right sequence.
The Segmentation and Routing SOP covers how to assign matched contacts to the correct territory, ICP tier, and outbound sequence based on account signals and deal stage.