Office hours: Build your self-driving GTM engine·Oct 29, 9:00am PT, onlineRegister→
Cargo
  • ProductAgentsReduce manual effort and close more deals with AIPlaysAutomate every stage of lead management so you can move fasterToolsAutomate repetitive tasks so your team can focus on what drives impactData ModelsUnify, organize, and activate your revenue dataAppsCustom interfaces for your team, wired to your live GTMTerritoriesModel your team, territories, and capacity in one placeContextOne shared knowledge base for your team and agents
    Add-onsChrome ExtensionSell faster, right in your browserButtonTrigger AI agents inside your CRMFormTurn any tool into an embeddable formSlackTag Cargo in Slack. It does the GTM workGitHubPlan on every pull request, deploy on merge
    MoreProjectsDefine your entire GTM in codeCLIUse Cargo from your terminalMCPUse Cargo from Claude and ChatGPTDeveloper resourcesCargo API docs, OpenAPI spec, auth docs, webhooks, MCP serverAPI ReferenceExplore the Cargo APIDocumentationLearn how to use CargoIntegrationsConnected to your entire GTM stack
  • VeriffHow Veriff replaced MuleSoft with Cargo under NetSuite, Stripe and SalesforceAugmentHow Augment Code routes developer sign-ups to reps in under an hourWeights & BiasesHow Weights & Biases ships a new purchase signal in 2 days on CargoSee all
  • Pricing
  • Cookbooks
  • Blog
Sign in
Blog

Customer Data Unification: Strategies and Implementation

22 Apr11min read
MaxMax

The average B2B company has customer data scattered across 15-20 different systems. The same account appears in your CRM, marketing automation, product analytics, billing system, and support platform, often with different names, conflicting data, and no clear connection between records.

Data unification solves this by creating a single, authoritative view of each customer. This guide covers how to implement customer data unification that actually works.

The Unification Challenge #

Why Data Gets Fragmented

Multiple Entry Points

  • Website forms with different fields
  • Sales creating records manually
  • Marketing importing lists
  • Product signups
  • Support ticket creation

Different Identifiers

  • Email addresses (work vs. personal)
  • Company names (variations, subsidiaries)
  • Phone numbers (formats)
  • Domain names

System Silos

  • Each tool maintains its own database
  • Limited synchronization
  • Different data models
  • Conflicting updates

Business Impact

ProblemConsequence
Duplicate accountsWrong targeting, wasted spend
Missing dataIncomplete personalization
Conflicting dataWrong decisions
Delayed syncStale information
No single viewManual research required

Unification Fundamentals #

Entity Resolution

Matching records across systems to the same real-world entity:

Account Matching

  • Company name normalization
  • Domain matching
  • Subsidiary mapping
  • Alias handling

Contact Matching

  • Email matching
  • Name + company matching
  • Phone matching
  • LinkedIn ID matching

Data Hierarchy

When data conflicts, which source wins?

Source Priority Example

FieldPriority 1Priority 2Priority 3
Company nameEnrichmentCRMMarketing
Employee countEnrichmentUser-providedCRM
Contact emailUser-providedEnrichmentMarketing
RevenueBillingCRMEnrichment
EngagementMarketingProductCRM

Golden Record

The authoritative, unified record combining all sources:

text
Golden Account Record:
├── Core Identity (from resolution)
│   ├── account_id (generated)
│   ├── domain (canonical)
│   └── company_name (normalized)
│
├── Firmographics (from enrichment)
│   ├── industry
│   ├── employee_count
│   ├── annual_revenue
│   └── location
│
├── Engagement (aggregated)
│   ├── total_engagement_score
│   ├── last_activity_date
│   ├── engagement_by_channel
│   └── key_activities
│
├── Revenue (from CRM + billing)
│   ├── pipeline_value
│   ├── closed_revenue
│   ├── subscription_status
│   └── renewal_date
│
└── Relationships (linked)
    ├── contacts[]
    ├── opportunities[]
    └── activities[]

Unification Architecture #

Approach 1: Warehouse-Centric

text
Sources → ETL → Warehouse → Transformation → Golden Records → Activation

Process

  1. Ingest raw data from all sources
  2. Store in warehouse
  3. Apply matching logic via SQL/dbt
  4. Create unified models
  5. Push to operational systems

Pros

  • Full control over logic
  • Flexible transformations
  • Cost-effective at scale

Cons

  • Latency (batch processing)
  • Technical expertise required
  • Complex to maintain

Approach 2: CDP-Centric

text
Sources → CDP → Unified Profiles → Activation

Process

  1. Connect sources to CDP
  2. CDP handles identity resolution
  3. Profiles unified automatically
  4. Activate to destinations

Pros

  • Faster implementation
  • Built-in identity resolution
  • Real-time capabilities

Cons

  • Vendor dependency
  • Less customization
  • Higher cost at scale

Approach 3: Operational Layer

text
Sources → Operational Platform → Unified View → Actions

Process

  1. Connect sources to operational platform
  2. Real-time unification
  3. Immediate action capabilities
  4. Bi-directional sync

Pros

  • Real-time unification
  • Action-oriented
  • Purpose-built for GTM

Cons

  • May duplicate warehouse capabilities
  • Integration requirements

Identity Resolution Techniques #

Deterministic Matching

Exact matches on unique identifiers:

text
Match Conditions:
- Email exact match
- Domain exact match
- LinkedIn ID match
- Phone number (normalized) match

Strengths: High confidence, no false positives Weaknesses: Misses variations, case sensitivity issues

Probabilistic Matching

Fuzzy matching based on multiple signals:

text
Match Scoring:
- Company name similarity: 0-30 points
- Domain similarity: 0-25 points
- Location match: 0-15 points
- Industry match: 0-10 points
- Employee count proximity: 0-10 points
- Contact overlap: 0-10 points

Threshold: 70+ points = match

Strengths: Catches variations, more complete Weaknesses: Risk of false positives, requires tuning

Hierarchical Matching

Handle parent/subsidiary relationships:

text
Company Hierarchy:
├── Ultimate Parent: Acme Corp
│   ├── Subsidiary: Acme EMEA Ltd
│   ├── Subsidiary: Acme APAC Pte
│   └── Subsidiary: Acme Canada Inc

Options:
1. Roll up to parent (enterprise view)
2. Keep separate (regional view)
3. Both (flexible analysis)

Implementation Guide #

Step 1: Source Inventory

Document all customer data sources:

SourceEntity TypesKey FieldsVolumeUpdate Frequency
SalesforceAccount, ContactDomain, Email50K accountsReal-time
HubSpotCompany, ContactDomain, Email80K contactsHourly
SegmentUser, GroupEmail, GroupID100K usersReal-time
ClearbitCompany, PersonDomain, EmailOn-demandN/A

Step 2: Identity Key Design

Define your matching keys:

Account Keys

  • Primary: Domain (canonical)
  • Secondary: Company name (normalized)
  • Tertiary: External IDs

Contact Keys

  • Primary: Email (lowercase)
  • Secondary: LinkedIn URL
  • Tertiary: Name + Company

Step 3: Matching Rules

Define how records match:

text
Account Matching Rules:

Rule 1: Domain Match (Deterministic)
IF source1.domain = source2.domain
THEN match (confidence: 100%)

Rule 2: Name + Location Match (Probabilistic)
IF similarity(source1.name, source2.name) > 0.9
AND source1.city = source2.city
THEN match (confidence: 85%)

Rule 3: Name Only Match (Low confidence)
IF similarity(source1.name, source2.name) > 0.95
THEN potential_match (confidence: 60%)
→ Human review

Step 4: Conflict Resolution

Define rules for conflicting data:

text
Conflict Resolution Rules:

Employee Count:
- If enrichment.employees EXISTS: use enrichment
- Else if crm.employees EXISTS: use crm
- Else: null

Company Name:
- If enrichment.name EXISTS: use enrichment (most standardized)
- Else if crm.name EXISTS: use crm
- Else: use first source

Last Activity Date:
- Use MAX(all_sources.last_activity)

Engagement Score:
- Aggregate from all sources

Step 5: Build Unified Model

Create the golden record model:

sql
-- Unified Account Model
CREATE TABLE unified_accounts AS
WITH matched_accounts AS (
  -- Matching logic here
),
merged_data AS (
  -- Field selection with priority
)
SELECT
  unified_account_id,
  canonical_domain,
  company_name,
  industry,
  employee_count,
  -- ... more fields
  source_ids, -- Keep track of source records
  updated_at
FROM merged_data;

Step 6: Ongoing Maintenance

Unification is not a one-time project:

Daily

  • Process new records
  • Update existing matches
  • Handle conflicts

Weekly

  • Review potential matches
  • Audit match quality
  • Address duplicates

Monthly

  • Analyze match rates
  • Tune matching rules
  • Review source quality

Unification with Cargo #

Cargo provides native data unification:

Real-Time Unification

text
Workflow: Record Unification

Trigger: New record from any source

→ Extract: Key identifiers
→ Match: Against existing records
→ If match found:
  → Merge: New data with existing
  → Resolve: Conflicts by priority
→ If no match:
  → Create: New unified record
  → Enrich: With external data
→ Update: All connected systems

Continuous Enrichment

text
Workflow: Unified Enrichment

Trigger: New unified record OR refresh schedule

→ Query: Enrichment providers
→ Merge: Results with unified record
→ Update: Connected systems
→ Track: Data freshness

Bi-Directional Sync

text
Workflow: System Synchronization

Trigger: Unified record updated

→ Identify: Connected systems
→ Map: Fields to each system
→ Update: Each connected record
→ Handle: Sync conflicts
→ Log: Sync status

Measuring Unification Quality #

Quality Metrics

MetricDefinitionTarget
Match rate% records matched> 85%
False positive rate% incorrect matches< 2%
Data completeness% fields populated> 90%
Duplicate rateDuplicate records found< 3%
FreshnessAvg data age< 24 hours

Quality Monitoring

Track over time:

  • Match rate trends
  • New duplicate detection
  • Conflict frequency
  • Source quality by system

Common Unification Challenges #

Challenge 1: Company Name Variations

“Acme Corp” vs “Acme Corporation” vs “ACME” vs “Acme, Inc.”

Solutions:

  • Name normalization algorithms
  • Domain as primary key
  • Alias management

Challenge 2: Multiple Domains

Large companies with multiple domains (acme.com, acme.io, acme.co.uk)

Solutions:

  • Domain graph relationships
  • Parent company mapping
  • Enrichment data for hierarchy

Challenge 3: Personal vs. Work Email

User signs up with personal email, then uses work email

Solutions:

  • Multi-email support per contact
  • Company email extraction
  • Progressive linking

Challenge 4: Data Decay

People change jobs, companies get acquired

Solutions:

  • Regular enrichment refresh
  • Job change monitoring
  • Acquisition tracking

Best Practices #

  1. Start with high-value use cases - Unify for specific needs first
  2. Use domain as anchor - Most reliable account identifier
  3. Preserve source data - Keep original records accessible
  4. Monitor continuously - Data quality degrades over time
  5. Document decisions - Why specific rules were chosen

Data unification is foundational to effective revenue operations. Get it right, and everything downstream, scoring, routing, personalization, analytics, becomes dramatically more effective.

Ready to unify your customer data? Cargo’s data unification engine creates a single view of every account and contact across all your systems.

Key Takeaways #

  • Unification enables everything downstream: scoring, routing, personalization, and analytics all depend on having a unified customer view
  • Domain is your anchor: email domain is the most reliable account identifier in B2B, use it as the primary matching key
  • Identity resolution is complex: same person may exist as multiple records across systems with different emails, names, and companies
  • Preserve source data: unification creates a golden record but should preserve original data for audit and edge cases
  • Continuous monitoring required: data quality degrades over time, build processes to detect and fix degradation

Frequently Asked Questions #

Customer data unification is the process of combining customer data from multiple sources (CRM, marketing automation, product analytics, enrichment providers) into a single, consistent view of each account and contact. This creates a “golden record” that represents the best available information about each customer, resolving conflicts between sources and filling gaps. Unified data enables accurate scoring, intelligent routing, and personalized engagement.

B2B identity resolution matches records at two levels: account level and contact level. Account matching typically uses domain as the primary key (most reliable B2B identifier), with fuzzy matching on company name for records without domain. Contact matching combines email address (most reliable), domain + name matching, and phone number where available. Rules handle conflicts when sources disagree about attributes like company size or contact title.

Source records are the original data as it exists in each system, CRM, marketing automation, product database, etc. The golden record is a unified, deduplicated view that combines the best data from all sources into a single authoritative record. Golden records use priority rules (e.g., “CRM company size beats enrichment company size”) to resolve conflicts. Best practice: preserve source records alongside golden records for auditability and edge case handling.

B2B account hierarchies (parent companies, subsidiaries, divisions) create complexity.

Options:

  1. Flatten to single entity (simplest but loses hierarchy context)
  2. Build hierarchy model with parent/child relationships (preserves structure but complex)
  3. Create both unified entity and roll-up views (flexible but maintenance overhead)

Consider your use case, sales engagement often needs subsidiary level, while reporting may need parent roll-ups.

Common failure modes:

  1. Poor matching logic creating false merges (different companies merged incorrectly)
  2. Over-strict rules leaving duplicates (same company appearing as multiple entities)
  3. Missing identifiers (records without domain or reliable matching keys)
  4. Data decay (information becomes stale but isn’t refreshed)
  5. New source integration breaking existing unification.

Build monitoring for match rates, duplicate rates, and data completeness to catch degradation early.

MaxMaxApr 22, 2025
On this page
  • The Unification Challenge
  • Unification Fundamentals
  • Unification Architecture
  • Identity Resolution Techniques
  • Implementation Guide
  • Unification with Cargo
  • Measuring Unification Quality
  • Common Unification Challenges
  • Best Practices
  • Key Takeaways
  • Frequently Asked Questions

Stay Informed with our
weekly Newsletter

Related articlesSee all articles
Data & Infrastructure
Sync Enriched Records to Pipedrive with Cargo: Create, Update or Upsert

Cargo's Pipedrive connector creates, updates and upserts organizations, persons, deals and leads natively. How it matches on the one field you choose, how to make it fail instead of overwriting when several records match, and the cargo-ai commands to run the sync.

AurelienAurelien·Oct 23, 2026
Data & Infrastructure
Sync Enriched Accounts to HubSpot with Cargo: Create, Update or Upsert

Cargo's HubSpot connector creates, updates and upserts company records natively. How to match by record ID, then domain, then name, fail on ambiguous matches instead of overwriting duplicates, and run the sync from the cargo-ai CLI.

AurelienAurelien·Oct 22, 2026
Data & Infrastructure
Sync Enriched Records to Salesforce with Cargo: Create, Update or Upsert

Cargo's Salesforce connector creates, updates and upserts records natively. How to match accounts by record Id, then website, then name, fail on ambiguous matches instead of overwriting duplicates, and run the sync from the cargo-ai CLI.

AurelienAurelien·Oct 22, 2026

Build the self-driving GTM engine

Your coding agents build it on Cargo.Or our team builds, operates and improves it with you.

Start building
Cargo
Backed byY CombinatorSOC 2 Type IICertified
LinkedinX

Product

AI AgentsPlaysToolsData ModelsAppsTerritoriesContextEnrichmentRoutingIntegrationsPricing

Add-ons

Chrome extensionButtonFormSlackGitHub

Build

DocsDeveloper resourcesCargo API docsCargo OpenAPI specCargo auth docsCargo webhooksCargo MCP serverProjectsClaude Code

Resources

ReportsBlogCustomer storiesCookbooksGTM skillsGTM EngineeringGlossaryCompareCargo x ClayCargo x WorkatoCargo x n8nCargo x DeeplineCargo x DefaultCargo x LeanDataCargo x UnifyCargo x ValleyCargo x Gojiberry

Company

ManifestoCommunityEventsJobsPartners DirectoryPartner Program

Legal

SecurityTerms of servicePrivacy PolicyRefundsDPASupport
© 2026 Cargo
 ////////    ///////    ////////     ////////    ///////
///         ///   ///   ///   ///   ///         ///   ///
///         ///   ///   ///   ///   ///         ///   ///
///         /////////   ////////    ///  ////   ///   ///
///         ///   ///   /// ///     ///   ///   ///   ///
///         ///   ///   ///  ///    ///   ///   ///   ///
 ////////   ///   ///   ///   ///    ///////     ///////

$ npm install -g @cargo-ai/cli