You ask which campaigns produced customers. Marketing exports contacts, sales exports closed deals, and finance supplies a customer list that matches neither.
The CRM may be working exactly as configured. The problem is that nobody agreed on what a customer means, which record represents one, or how a closed deal connects to a payment.
I would start the repair with the question the business needs answered. This article shows how to trace that question through definitions, records, and ownership, then build a cleanup plan that improves a decision instead of polishing the entire database.
TL;DR & Takeaways
- Choose one unanswered growth question before changing CRM fields or buying another reporting tool.
- Define the unit, stage, date, and exclusions behind the answer. Contacts, opportunities, paying accounts, and invoices are different objects.
- Repair the relationships and source conflicts that affect the decision before fixing cosmetic inconsistencies.
- Preserve original values and history, test changes on a bounded sample, and assign an owner to the checks that prevent recurrence.
Start CRM reporting with a business question
“Clean the CRM” is an open-ended project. “Show which acquisition sources produced new paying accounts last quarter” gives the work a boundary.
Write the question, the decision it supports, and the person accountable for acting on it. In this example, the decision might be whether to continue funding a particular acquisition source.
Then specify the answer before building the report. Does new paying mean first successful collection, a signed contract, or the start of a billable subscription?
Those events can occur on different dates. Choose the definition appropriate to the decision, and keep the other events available rather than forcing them into the same field.
For a sales performance report, contract signing may be the relevant milestone. For cash planning, finance needs actual collections and adjustments, not a salesperson's expected close date.
You can maintain both views without declaring one team wrong. Name them precisely and reconcile their relationship.
Define the unit before joining the records
A contact is a person. An account represents an organization or customer relationship, and a deal represents a commercial opportunity under your CRM's model.
Billing may add customer records, subscriptions, invoices, payments, and credits. A single organization can have several contacts, multiple deals, and more than one subscription.
That structure matters because joining tables can multiply rows. If each account has several contacts, counting every joined row as a customer inflates the result even when every underlying record is accurate.
For an account-level acquisition report, establish one reporting row per account and acquisition event. Aggregate billing details to the intended unit before attaching them to that report.
Use durable identifiers where possible. Names are useful for human review, but spelling, trading names, and organizational changes make them weak join keys.
HubSpot's deduplication documentation illustrates why implementation details matter: contacts can be matched by email, companies by domain, and imports by Record ID or supported unique properties. It also notes that companies created through the API are not automatically deduplicated by company domain.
That is a product-specific behavior, not permission to merge every matching domain. Parent companies, subsidiaries, shared domains, and separate commercial relationships still need explicit rules.
Separate lifecycle stage from sales activity
A lifecycle stage should tell you where the relationship sits in the process. An activity status should tell you what happened or what needs to happen next.
Mixing them creates confusing reports. “Attempted contact” does not establish that someone is qualified, and “customer” does not necessarily establish that cash has arrived.
HubSpot distinguishes lifecycle stage from lead status, with lead status describing sub-stages within its sales-qualified stage. Its default customer definition is a contact or company with at least one closed deal.
If your report needs paying customers, that default alone is insufficient. You need the billing evidence and the agreed payment definition as well.
Write a compact contract for every stage used in the report: entry condition, qualifying evidence, responsible owner, timestamp, and exit condition. Include rejected, recycled, and reopened paths so ordinary exceptions do not become free-text improvisation.
Keep event history when the process needs it. A current-stage field tells you where the record is now; it cannot, by itself, reconstruct every transition that happened last quarter.
Also verify which timestamps your CRM preserves when records move backward. HubSpot documents different behavior for legacy lifecycle dates and newer calculated properties, so a bulk stage correction can change more than the visible label.
Reconcile the discrepancy before changing the system
Consider a hypothetical software business with 120 closed-won deal records. Its team wants a count of new paying accounts from that acquisition cohort.
The investigation finds that 15 deals are expansions of existing accounts and five are duplicate administrative deals. After excluding those mutually exclusive categories, 100 candidate new accounts remain.
Of those 100, billing confirms 82 as meeting the agreed first-payment rule. Ten have not yet paid, and eight cannot be matched confidently to a billing account.
| Reconciliation step | Count | Treatment |
|---|---|---|
| Closed-won deal records | 120 | Starting population |
| Existing-account expansion deals | 15 | Report separately |
| Duplicate administrative deals | 5 | Exclude from acquisition count |
| Candidate new accounts | 100 | Account-level denominator |
| Confirmed first-payment accounts | 82 | Verified paying count |
| Matched but not yet paid | 10 | Payment follow-up view |
| Unmatched accounts | 8 | Exception queue, not zero revenue |
The verified paying share is 82% of candidate new accounts. Among the 92 matched accounts, it is approximately 89.1%, but that narrower denominator excludes the unresolved records.
Report both if useful, with their denominators. Do not quietly publish the more attractive percentage or label all unmatched accounts unpaid.
Stripe's invoice lifecycle documentation distinguishes draft, open, paid, void, and uncollectible invoices. It also describes out-of-band payments and credits, which is why a simple status flag should not substitute for finance's collection policy.
This example does not show that marketing underperformed. It shows that a closed-deal total cannot answer a first-payment question until the objects, exclusions, and joins are reconciled.
Build a revenue-impact-led cleanup plan
Prioritize defects by the decision they distort. An incorrect owner on an active inquiry may need attention before inconsistent capitalization on a dormant account.
Use the following plan as a working sheet. Replace the example priorities with your actual report and exposure.
| Priority | Defect | Correction | Accountable role | Acceptance check |
|---|---|---|---|---|
| First | New-account count includes expansions | Define acquisition versus expansion at deal and account level | Revenue operations | Reconcile the selected cohort to underlying records |
| First | CRM accounts cannot join to billing | Add reviewed durable ID mapping | Revenue operations with finance | Every candidate is matched or explicitly unresolved |
| Next | Stage definitions conflict | Agree entry evidence and timestamp rules | Marketing and sales leaders | Sample records satisfy the same definition |
| Next | Imports recreate duplicates | Fix matching and source precedence | CRM administrator | Test imports update intended records only |
| Later | Cosmetic field inconsistencies | Standardize values where reports need them | Field owner | Valid values without unintended history changes |
Give each correction a small, reviewable change set. Preserve the original export, record IDs, proposed values, and reason for each change before touching live records.
A preview should show what will change, what will remain unchanged, and which ambiguous records are excluded. Obtain the appropriate business approval before merges, deletions, or bulk updates.
Do not promise that every merge can be undone. Confirm the product's recovery behavior, retain evidence, and prefer reversible field repairs when identity is uncertain.
Decide which system owns each field
Two integrations writing to the same field can undo a cleanup quickly. Decide which system owns the value and what happens when another source disagrees.
The CRM may own the sales owner and opportunity stage. Billing may own subscription state, while accounting owns the ledger and the finance-approved revenue treatment.
These are proposed boundaries, not universal architecture rules. Your actual contract process may use a separate system, and the data design should reflect that.
For each reporting field, record its definition, authoritative source, allowed writers, refresh expectation, and exception owner. Include whether a blank means unknown, not applicable, or deliberately cleared.
Protect acquisition history from casual overwrites. A newly imported campaign should not replace an original source merely because it was the latest system to send an update.
Keep first-touch, later engagement, and manually reported discovery information separate when the business needs those distinctions. A single source field cannot represent every useful attribution question.
Make quality maintenance part of the workflow
After the repair, run the same reconciliation again. Confirm the account count, billing matches, exclusions, and unresolved exceptions against the preserved baseline.
Then add targeted checks at the points where defects enter. Examples include missing account IDs on new deals, duplicate integration IDs, impossible timestamp order, and active records with departed owners.
A completeness check alone is weak. A field can contain a value and still be wrong, so inspect a sample against actual activity or source records.
Assign an owner to every exception report and a response expectation suited to its risk. A daily alert that nobody is responsible for resolving only creates another place to ignore the problem.
You can automate detection and prepare proposed corrections without granting an agent authority to rewrite customer history. Start read-only, test on known examples, and retain human review for ambiguous identity and financially consequential changes.
At MakeReality, Fractional CMO work covers the priorities and accountability behind this process. The AI Growth Operator engagement can add selected hands-on systems work, with the build scope and ownership agreed explicitly.
Restore one answer you can trust
The CRM Hygiene Scorecard can help organize an initial self-assessment. Treat its score as a heuristic prompt for investigation, not an audit of your actual database or proof that automation is safe.
Choose one business question and trace a small cohort from the original inquiry to the relevant commercial event. Document the definitions and exceptions, then fix the defect that most changes the answer.
A useful first milestone is a report whose totals reconcile and whose unknowns are visible. Once that answer is dependable, extend the same discipline to the next decision.
More from the manifest.
Nov 4, 2026 · 9 min
Which Marketing Channel Should You Invest In Next?
Choose your next marketing channel using buyer behavior, readiness gates, customer economics, and a bounded test scorecard.
Read essayNov 2, 2026 · 11 min
Marketing Dashboard: KPIs, Examples and Build Guide
Build a marketing dashboard around decisions: illustrated examples, CAC, LTV:CAC, payback, data integrations, AI build steps and reporting tools.
Read essayOct 30, 2026 · 10 min
Fractional CMO, Agency, or Marketing Hire?
Choose a fractional CMO, agency, or marketing hire by the leadership, capacity, and expertise you need. Compare costs, ownership, and fit.
Read essayOct 28, 2026 · 10 min
Growth Bottleneck: Find It Before Spending More
Find your growth bottleneck before spending more. Diagnose demand, qualification, conversion, delivery, and retention, then test the right intervention.
Read essayOct 26, 2026 · 13 min
Marketing Automation: What to Keep Human
Decide what to automate in marketing with a practical scorecard for data quality, risk, judgment, human review, and measurable time savings.
Read essayOct 14, 2026 · 11 min
Fractional CMO: What to Expect in the First 90 Days
What a fractional CMO should deliver in 90 days, and how MakeReality’s AI Growth Operator adds hands-on systems, testing, and handover.
Read essayOct 8, 2026 · 10 min
How to Set a Marketing Budget
Work backward from revenue goals to a marketing budget, then test acquisition costs, cash, and capacity with a worked example and scenario comparison.
Read essayOct 7, 2026 · 11 min
The 3 Most Important Metrics for SaaS Growth & Marketing
Understand CAC, LTV:CAC, and CAC payback, calculate your SaaS acquisition economics, and improve growth efficiency without straining cash flow.
Read essayApr 24, 2026 · 6 min
Why "The Manifest" exists
Content has gotten sloppy. I don’t just mean “AI slop” either… even though that is a major contributing factor. The ability to generate content at scale and cover topics in days that in aggregate…
Read essay