CRM hygiene that keeps B2B attribution trustworthy

CRM hygiene is the quiet work that decides whether B2B attribution is believable. Duplicate Contacts, blank Lead Source fields, campaign memberships stamped with the upload date, and Opportunities with no primary Contact all scramble the same report. The model can be multi-touch and still produce nonsense if the underlying records are wrong.
This playbook is for RevOps (and whoever owns the CRM day to day). It covers the five habits that keep credit tied to the real path: one Contact per person, protected first-touch fields, real campaign dates, Contacts mapped to Accounts, and a short weekly pass before anyone reads the numbers.
Start with one Contact and one Account per person
When the same buyer exists three times in HubSpot or Salesforce, each record owns a slice of history. One has the paid click. Another has the demo. A third has the closed deal. Attribution then looks like three short journeys instead of one complete path.

Merge rules should be boring and written down. Prefer the Contact with the verified work email. Carry over campaign memberships and activities. Keep the earliest Lead Source that is not blank and not a junk default. After the merge, confirm the surviving Contact sits on the Account that owns the Opportunity.
If your CRM report still starts from a single Lead Source field, read why your Lead Source field is misleading you. Hygiene makes that field less wrong. It does not replace a full path.
Stop overwriting first-touch fields on every form fill
Most forms update the Contact. That is fine for title, phone, and marketing consent. It is not fine for Lead Source, Original Source, or whatever field your team treats as first touch. Each later fill rewriting origin is how paid work turns into Direct or into the last webinar someone attended.

Configure forms and workflows so first-touch fields write once. Add campaign membership for the webinar, content download, or demo instead of changing origin. When sales and marketing later argue over credit, when sales and marketing both claim the same deal is easier to settle if the Contact history was not rewritten every week.
Put campaign membership on the real date
Offline lists and delayed imports are where hygiene usually breaks. A badge scan uploaded a week after a show, with today's date as the membership date, slides the event after the demo in the path. The same problem shows up with partner intros, dinner lists, and CSV uploads from CS.
Name an owner and a deadline for every import. Map the real interaction date into the campaign member or activity date yourself. Deduplicate against existing Contacts before you create new ones. Our notes on what offline attribution means in B2B only work when those dates are honest.
Tie every Contact to the Account that owns the deal
B2B deals close on Accounts. Attribution that stops at an orphan Contact cannot join the buying committee. Attach every Contact with recent activity to an Account. For open Opportunities, make sure at least one Contact on the committee is linked, and note the role when you can (champion, economic buyer, user).
This step also catches free-email Contacts that never got company enrichment. Without an Account, channel quality and CAC by Account stay guesswork even when visit data is clean.
Run a weekly hygiene pass before you trust the report
Do not wait for the monthly board deck. A short weekly pass catches the mess while it is still small.

Use the pass to spot Direct spikes that look like broken tags too. UTM mistakes that send B2B deals to Direct lists the tagging habits that create those spikes. Fix the next send, and clean the Contacts that already got scrambled when you still know which campaign they came from.
Self-reported answers help when CRM fields are thin. A short "how did you hear about us" field, collected cleanly, is another check on the path. Our self-reported attribution checklist covers how to keep those answers usable.
How Source sits next to a clean CRM
Source installs with one pixel or Google Tag Manager, with no data warehouse to build. It records each visit from the first one and supports multi-touch, view-through, offline touches, and traffic from ChatGPT, Claude, Perplexity, and Gemini.
A clean CRM still matters. Source can show real CAC, goals, and channel quality, and you can chat with your data, get AI recommendations, and receive daily Slack reports. Those views stay trustworthy when Contacts are merged, first-touch fields are protected, and campaign dates match reality. Source is SOC 2 Type II and ISO 27001 certified, and customer data is not used to train external models.
Start free at dash.source.app/signup and clean the CRM records that your next attribution report will lean on.
Install the pixel and connect your first data source in minutes. Start your free trial