A business opens its customer relationship management system and sees 5,000 customer records.
Its billing platform reports 4,200 customer accounts.
The marketing dashboard reports 5,600 customers.
Which number is correct?
Possibly all three—if they measure different things.
The CRM may count contacts. The billing system may count accounts. The marketing dashboard may count a mixture of leads, contacts, and customers identified through different systems.
Some individuals may appear more than once. Others may have changed email addresses. One business account may contain several contacts, while one person may maintain multiple billing accounts.
The problem is not necessarily that one system contains incorrect data.
The systems may represent different entities and use different identifiers.
Before an organization can report how many customers it has, it must decide what a customer means and how records across systems should be connected.
That is the purpose of customer identity resolution.
The Short Answer: Customer Records Are Not Necessarily Customers
Customer identity resolution is the process of determining which records from one or more systems refer to the same underlying entity.
That entity might be:
- An individual person.
- A business organization.
- A household.
- A customer account.
- Another entity defined by the business.
The distinction matters.
A CRM contact is not automatically a unique customer.
A billing account is not necessarily a unique person.
An email address is not a permanent customer identifier.
And a website visitor is not automatically a known CRM contact.
A useful identity-resolution system establishes explicit relationships between source records and a defined analytical entity.
For example:
CRM Contact C101 → Customer K1
CRM Contact C102 → Customer K1
Billing Account B201 → Customer K1
These three records may describe one customer.
Counting the records produces three.
Counting the resolved customer identity produces one.
Neither number is inherently incorrect.
They answer different questions.
Why Do CRM and Billing Systems Use Different Customer Identifiers?
Operational systems are generally designed around the processes they support.
A CRM manages sales relationships, contacts, opportunities, and communication history.
A billing platform manages accounts, invoices, subscriptions, payments, and related financial activity.
A website analytics platform records digital interactions using its own identity and session mechanisms.
Each system may generate identifiers independently.
Consider a customer who initially contacts a business through a website form.
The CRM creates contact C101.
The customer later submits another form using a different email address.
The CRM creates C102.
After purchasing a service, the billing platform creates account B201.
The organization now has three records associated with one person.
Unless the systems share a reliable identifier or an approved matching process, an analytics pipeline may treat these as three unrelated entities.
The result can be inflated customer counts, fragmented customer histories, or incorrect acquisition reporting.
Microsoft's Customer Insights documentation describes data unification as a process involving source data preparation, deduplication, matching conditions, and unified customer profiles.
The general principle applies beyond any particular software product.
Source:
Microsoft Learn. Data unification overview.
https://learn.microsoft.com/en-us/dynamics365/customer-insights/data/data-unification
First Define What the Business Means by Customer
Before matching records, determine the entity being counted.
Consider a B2B consulting firm.
One client organization may have:
- Three employees recorded as CRM contacts.
- One billing account.
- Two active consulting projects.
- Several invoices.
How many customers does the firm have?
If the business defines a customer as a contracting organization, the answer may be one.
If it reports CRM contacts, the answer is three.
If it reports active projects, the answer is two.
If it reports invoices, the answer depends on the number of invoices.
These are different metrics.
A reliable customer model should explicitly distinguish them.
| Metric | Unit Being Counted | Example |
|---|---|---|
| CRM contacts | Contact records | Five contact rows |
| Unique people | Resolved individuals | Four people |
| Billing accounts | Billing account identifiers | Four accounts |
| Paying customers | Resolved entities with qualifying billing activity | Four people |
| Client organizations | Distinct contracting businesses | One organization |
| Transactions | Individual business events | Multiple invoices |
The appropriate definition depends on the business question.
Customer acquisition analysis may require unique people or organizations.
Accounts receivable reporting may require billing accounts.
Sales activity reporting may require CRM contacts.
No universal customer-count definition is appropriate for every business.
A Worked Example: Five CRM Records, Four Billing Accounts, Six Customers
Consider a hypothetical business with five CRM contact records.
The records have already been reviewed using an approved identity-resolution process.
The organization determines that two CRM records belong to the same person.
CRM Records
| CRM Record | Resolved Customer |
|---|---|
| C101 | K1 |
| C102 | K1 |
| C103 | K2 |
| C104 | K3 |
| C105 | K4 |
The CRM contains five contact records.
However, those records represent four distinct people:
K1, K2, K3, and K4.
Now consider the billing system.
Billing Accounts
| Billing Account | Resolved Customer | Billing Amount |
|---|---|---|
| B201 | K1 | $1,200 |
| B202 | K2 | $800 |
| B203 | K5 | $500 |
| B204 | K6 | $300 |
| Total | $2,800 |
All values are hypothetical.
For this example, assume each billing account has been reliably associated with one individual, each account appears once in the billing summary, and the amounts represent comparable billed amounts rather than necessarily recognized accounting revenue.
The billing system contains four accounts representing four people.
Two of those people also appear in the CRM.
Two do not.
What Is the Correct Customer Count?
Across both systems, the distinct resolved customers are:
K1, K2, K3, K4, K5, K6.
That produces six distinct people.
The counts can now be reconciled.
| Measurement | Count |
|---|---|
| CRM contact records | 5 |
| Distinct people represented in CRM | 4 |
| Billing accounts | 4 |
| Distinct people represented in billing | 4 |
| People present in both systems | 2 |
| People present only in CRM | 2 |
| People present only in billing | 2 |
| Distinct people across both systems | 6 |
The combined count follows the inclusion-exclusion principle.
Unique customers across both systems:
4 + 4 - 2 = 6.
The overlap must be subtracted because K1 and K2 appear in both systems.
Adding the source record counts would produce:
5 + 4 = 9.
But nine is the number of source records, not the number of distinct people.
This example also assumes that the identity mapping is complete and correct.
If B203 or B204 actually belongs to someone already represented in the CRM but the match was missed, the apparent count of six would be too high.
Identity-resolution results therefore depend on matching quality.
How an Incorrect Join Can Inflate Revenue
Identity problems can affect more than customer counts.
They can also distort financial reporting.
Return to customer K1.
The CRM contains two records for this person:
C101 and C102.
The billing system contains one account:
B201.
That account has a billing amount of $1,200.
Suppose an analyst joins billing accounts to the identity mapping and then joins every matching CRM contact.
The billing account for K1 now matches two CRM rows.
Its $1,200 amount appears twice.
If the analyst sums the billing amounts after that join, the result can be inflated.
Assume all billing accounts remain in the result, including accounts without matching CRM contacts.
The calculation becomes:
K1: $1,200 × 2 = $2,400
K2: $800 × 1 = $800
K5: $500 × 1 = $500
K6: $300 × 1 = $300
Incorrect total:
$2,400 + $800 + $500 + $300 = $4,000.
Correct total:
$2,800.
Overstatement:
$4,000 - $2,800 = $1,200.
Percentage overstatement:
$1,200 / $2,800 × 100 = 42.86%.
The business did not generate additional billing activity.
The analytical join duplicated an existing amount.
This is why customer identity resolution must be combined with an explicit understanding of data grain.
A related UAD Consulting article explains how joins can duplicate measures when tables represent different levels of detail:
How Data Grain and Joins Can Double-Count Dashboard Measures
The important rule is that customer records, billing accounts, and financial transactions should not be treated as interchangeable rows.
What Is a Customer Identity Crosswalk?
An identity crosswalk is a mapping table that connects source-system identifiers to a common analytical identifier.
In the hypothetical example, the crosswalk contains:
| Source System | Source ID | Customer Key |
|---|---|---|
| crm | C101 | K1 |
| crm | C102 | K1 |
| crm | C103 | K2 |
| crm | C104 | K3 |
| crm | C105 | K4 |
| billing | B201 | K1 |
| billing | B202 | K2 |
| billing | B203 | K5 |
| billing | B204 | K6 |
The customer key represents the resolved entity.
It should not depend solely on an email address or another attribute that may change.
The crosswalk allows multiple source records to map to one customer.
However, the mapping must have clear rules.
For this simplified model, each source-system record should map to at most one current resolved customer key.
The pair:
(source_system, source_id)
should therefore be unique within the current mapping table.
Multiple source records may legitimately share the same customer key.
The customer key itself must not be unique within the crosswalk.
That distinction is essential.
A database constraint that incorrectly requires customer_key to be unique would prevent legitimate many-to-one identity mappings.
More complex systems may also need effective dates, mapping versions, match confidence, review status, and merge or split history.
A Reproducible PostgreSQL Example
The following SQL recreates the hypothetical identity mapping and billing data.
It uses PostgreSQL-compatible common table expressions.
The example is self-contained and does not require access to customer data.
WITH identity_map(source_system, source_id, customer_key) AS (
VALUES
('crm', 'C101', 'K1'),
('crm', 'C102', 'K1'),
('crm', 'C103', 'K2'),
('crm', 'C104', 'K3'),
('crm', 'C105', 'K4'),
('billing', 'B201', 'K1'),
('billing', 'B202', 'K2'),
('billing', 'B203', 'K5'),
('billing', 'B204', 'K6')
),
billing_accounts(billing_account_id, amount_usd) AS (
VALUES
('B201', 1200.00),
('B202', 800.00),
('B203', 500.00),
('B204', 300.00)
),
billing_with_identity AS (
SELECT
b.billing_account_id,
b.amount_usd,
m.customer_key
FROM billing_accounts b
JOIN identity_map m
ON m.source_system = 'billing'
AND m.source_id = b.billing_account_id
)
SELECT
COUNT(DISTINCT customer_key) AS paying_customers,
SUM(amount_usd) AS total_billed_usd
FROM billing_with_identity;
Expected result:
| paying_customers | total_billed_usd |
|---|---|
| 4 | 2800.00 |
The query joins each billing account to its resolved customer key without joining to CRM contact rows.
As a result, the two CRM records belonging to K1 do not duplicate the billing amount.
The query assumes that:
- Each billing account appears once in the billing summary.
- Every billing account has exactly one valid identity mapping.
- The mapping does not contain duplicate source-system identifiers.
- The amounts use consistent monetary units.
- The included accounts satisfy the business definition of a paying customer.
These assumptions require validation in a production system.
If billing accounts can contain multiple transactions, the transactions must be aggregated or otherwise modeled at an appropriate grain.
If multiple billing accounts belong to one customer, COUNT(DISTINCT customer_key) can still count that customer once while preserving the amounts associated with their accounts.
If some billing accounts are unmatched, an inner join would exclude them.
A production reconciliation should explicitly detect those records rather than silently accepting the reduced total.
Why Email Addresses Are Not Reliable Customer Keys
Email addresses are useful matching attributes.
But they are not guaranteed to identify unique people.
One person may use multiple email addresses.
A customer may change their email address after changing employers.
Several people may share a family email address.
A business may use a shared inbox for purchasing or billing.
A customer may also enter an email address incorrectly.
Consider two individuals using the same billing email address.
If an identity-resolution process assumes:
Same email = Same person
it may incorrectly merge them.
This is a false-positive match.
Now consider one person who changes email addresses.
If the system requires identical emails, it may fail to connect the records.
This is a false-negative match.
Both errors matter.
False positives can combine unrelated customer histories.
False negatives can inflate customer counts and fragment transactions.
Microsoft's data unification guidance recommends carefully designed matching rules, normalization, and consideration of cases in which people share identifiers.
Source:
Microsoft Learn. Data unification best practices.
https://learn.microsoft.com/en-us/dynamics365/customer-insights/data/data-unification-best-practices
Deterministic vs. Probabilistic Identity Matching
There are two broad approaches to matching customer records.
Deterministic Matching
Deterministic matching uses explicit rules.
Examples include:
- The same verified customer identifier.
- A documented relationship between CRM and billing IDs.
- A trusted account-to-contact mapping.
- A verified identity reference supplied by an authorized system.
A deterministic rule produces a match when its specified conditions are satisfied.
However, deterministic does not automatically mean correct.
An exact email match can still connect two different people who share an address.
The reliability of the rule depends on the reliability and meaning of the underlying identifier.
Probabilistic Matching
Probabilistic matching evaluates evidence that records may describe the same entity.
Possible attributes include:
- Name similarity.
- Address similarity.
- Email similarity.
- Telephone information.
- Other permitted identifying attributes.
A matching system may estimate a score or probability based on the available evidence.
But a high matching score is not automatically a verified identity.
The model can make mistakes.
The appropriate threshold depends on the consequences of incorrect matches.
For example, merging two unrelated customers may be particularly damaging when their financial records or sensitive information could become associated.
An organization should define which matches can be accepted automatically, which require review, and which must remain unresolved.
Why More Matching Is Not Always Better
It may seem desirable to connect as many customer records as possible.
But maximizing the match rate can produce false positives.
Suppose a system initially matches 80% of records.
A more aggressive matching rule increases the apparent match rate to 95%.
That sounds like an improvement.
However, if the additional matches frequently combine unrelated people, the resulting customer profiles may become less trustworthy.
A useful identity-resolution evaluation should consider both:
Precision: Among records identified as matches, how many are truly matches?
Recall: Among genuine matching relationships, how many did the system identify?
These metrics require a suitable labeled evaluation set.
They cannot be calculated reliably from the number of records merged alone.
A match rate is not the same as matching accuracy.
The business should also examine the cost of false-positive and false-negative decisions.
For some applications, unresolved records may be preferable to confidently assigning the wrong identity.
How Should Unmatched Customer Records Be Handled?
Not every source record can be resolved immediately.
A billing account may arrive before its corresponding CRM contact.
A CRM record may contain incomplete identifying information.
A source system may change identifiers during a migration.
A useful identity-resolution pipeline should distinguish:
Matched records.
Unmatched records.
Ambiguous matches.
Rejected matches.
Records awaiting review.
These categories should be visible in quality reporting.
Do not silently drop unmatched billing accounts from financial totals.
Doing so can understate the activity represented in the source.
Instead, preserve the source record and clearly indicate its unresolved identity status.
For financial reconciliation, the business may need to report the full billing total while separately showing how much of that amount is associated with resolved customers.
This separates the completeness of financial reporting from the completeness of customer identity matching.
A useful related UAD article discusses how completeness, uniqueness, validity, and reconciliation checks protect analytical pipelines:
Data Quality Checks for Analytics Pipelines
Customer Identity Resolution Needs Governance
A unified customer identifier is not merely a technical convenience.
It becomes part of the organization's analytical definition of a customer.
That creates governance responsibilities.
The business should document:
- Which entity the customer key represents.
- Which systems contribute records.
- Which matching rules are approved.
- Which attributes may be used.
- How ambiguous matches are reviewed.
- How incorrect merges are reversed.
- How source identifiers are retained.
- How historical changes are recorded.
- Who owns the matching policy.
The system should also account for profile merges and splits.
Two previously separate customer profiles may later be recognized as the same person.
Alternatively, a profile may have been incorrectly merged and need to be separated.
Microsoft's documentation notes that unified customer identifiers can change when profiles are merged or split.
This illustrates why identity history and downstream dependencies matter.
Source:
Microsoft Learn. Data unification overview.
https://learn.microsoft.com/en-us/dynamics365/customer-insights/data/data-unification
For analytical reporting, changes to identity mappings can revise historical customer counts.
Organizations should decide whether they need current-state reporting, historical as-of reporting, or both.
Those approaches answer different questions.
Privacy and Security Are Part of the Design
Customer identity resolution often involves personal information.
That does not mean every analytical system should receive every available identifying attribute.
A privacy-conscious design should minimize unnecessary data collection and access.
Where possible, separate sensitive matching information from general reporting tables.
Use appropriate access controls.
Retain only the information necessary for authorized business purposes.
Apply relevant retention and deletion policies.
Do not expose raw identity mappings containing personal information through public dashboards, logs, or shared reports.
Pseudonymous customer keys can reduce unnecessary exposure of direct identifiers.
However, pseudonymization does not automatically make a dataset anonymous.
A customer key that can be linked back to an identifiable person may still represent personal information.
The appropriate legal and technical requirements depend on the organization's jurisdiction, data types, and processing purposes.
Can Unified Customer Data Prove Which Marketing Channel Generated Revenue?
Identity resolution can improve the connection between marketing records, CRM activity, and billing outcomes.
For example, a verified identity mapping may establish that a CRM contact associated with a marketing campaign later became a paying customer.
That is valuable observational information.
However, it does not automatically establish that the campaign caused the purchase.
The customer may have encountered several marketing channels.
The purchase might have occurred without the campaign.
Other factors may have influenced the decision.
Identity resolution improves the ability to connect records.
Attribution assigns credit according to a defined measurement rule.
Causal inference attempts to estimate what would have happened without an intervention.
These are different analytical tasks.
A reliable customer identity model can support attribution and causal analysis, but it does not replace a credible causal research design.
A Practical Customer Identity Reconciliation Scorecard
An organization should monitor the identity-resolution process rather than relying only on the final customer count.
Consider the following reporting framework.
| Metric | Business Question |
|---|---|
| Source record count | How many records entered the process? |
| Distinct source identifiers | Are source keys unique as expected? |
| Resolved customer count | How many analytical entities were identified? |
| Match coverage | What share of eligible records received an accepted mapping? |
| Ambiguous match count | How many relationships require review? |
| Duplicate source-key count | Does one source identifier have conflicting mappings? |
| Billing reconciliation | Were all qualifying billing amounts preserved? |
| Identity merge/split count | How much has the customer mapping changed? |
| Unresolved record age | How long have records remained unmatched? |
These metrics should not be collapsed into one arbitrary data-quality score.
A pipeline can achieve high match coverage while producing damaging false-positive matches.
A pipeline can also preserve financial totals while leaving customer identities unresolved.
The appropriate release criteria depend on how the data will be used.
For example, a financial reporting process may require exact reconciliation of included billing amounts.
A marketing segmentation project may require sufficiently reliable customer matching for its intended audience definition.
Different decisions require different controls.
When Does a Business Need a Unified Customer Identity Layer?
Not every organization needs a sophisticated customer data platform.
A small business with one CRM, one billing system, and reliable shared customer identifiers may be able to use a simple SQL mapping table.
More elaborate identity resolution becomes useful when:
- Customer records exist across several systems.
- Duplicate contacts are common.
- Billing and CRM identifiers do not align.
- Customers frequently change identifying information.
- Multiple business units maintain separate customer databases.
- Customer lifetime value requires cross-system histories.
- Marketing and sales reporting need consistent customer definitions.
- Merges and splits must be tracked over time.
- Different teams repeatedly reconcile customer counts manually.
The architecture should match the business need.
A well-governed mapping table may be sufficient.
A more complex organization may require an identity-resolution service, matching workflows, review processes, and historical mapping management.
The goal is not to implement the most sophisticated technology.
It is to establish a customer definition that supports reliable reporting and decisions.
A Six-Step Implementation Framework
1. Define the Analytical Customer
Decide whether the relevant entity is a person, organization, account, or household.
Document the definition before matching records.
2. Inventory Source Systems
Identify the CRM, billing, marketing, and other systems involved.
Document source identifiers, expected uniqueness, and relevant relationships.
3. Establish Matching Rules
Prioritize reliable identifiers and verified relationships.
Use additional matching attributes only when appropriate.
Document ambiguity and exception handling.
4. Build the Identity Crosswalk
Create a governed mapping between source records and resolved customer keys.
Preserve source identifiers.
Validate uniqueness at the source-key level.
5. Reconcile Counts and Financial Measures
Compare source record counts, resolved entities, unmatched records, and billing totals.
Ensure that joins do not multiply financial measures.
6. Monitor Changes Over Time
Track newly matched records, unresolved identities, merges, splits, and mapping revisions.
Review whether identity changes affect historical reporting.
These steps provide a foundation for trustworthy customer analytics.
The Bottom Line: A Customer Count Is Only as Reliable as Its Identity Definition
When CRM and billing customer counts disagree, the problem may not be a broken dashboard.
The systems may simply count different entities.
A contact is not necessarily a customer.
An account is not necessarily a person.
An email address is not a reliable universal identifier.
And a join that connects records correctly can still duplicate financial measures when the underlying grain is ignored.
Customer identity resolution makes those relationships explicit.
A well-designed identity layer connects source records to clearly defined entities, preserves unmatched records, supports reconciliation, and makes assumptions auditable.
The objective is not to force every system to display the same number.
It is to ensure that every number represents the business concept it claims to measure.
References and Methodological Notes
- Microsoft Learn. Data unification overview.
- Microsoft Learn. Remove duplicates before unifying data.
- Microsoft Learn. Data unification best practices.
- Microsoft Learn. Matching rules for data unification.
Methodological note
All customer records, customer identifiers, billing amounts, and calculations in this article are original hypothetical illustrations.
They are not real UAD Consulting client records.
The PostgreSQL example demonstrates a simplified, fully resolved identity mapping.
It is not a complete production identity-resolution system.
Real implementations require appropriate matching rules, privacy controls, reconciliation, exception handling, and governance.
The worked example assumes that each billing account represents one person and that the stated identity mappings have already been validated.
The example does not establish the accuracy of any commercial identity-resolution product.
Build More Reliable Customer Analytics
Reliable customer reporting starts with consistent identifiers, clear business definitions, and validated data relationships.
UAD Consulting helps organizations connect databases, data engineering, SQL, and business analytics to build more trustworthy reporting foundations.
Explore our Data Engineering & Database Analytics services or get in touch to discuss your project.
Explore ServicesGet in Touch