Part V · Systems that run themselves · Chapter 14
The CRM as the source of truth
Objects, ownership, routing and hygiene: making the CRM trustworthy enough that reports mean something.
12 min read
The CRM is where the company decides what is true about its customers and pipeline. Every other tool in a GTM stack either feeds it or reads from it. If the CRM is full of duplicates and stale data, routing goes wrong, reports mislead, and outbound can't prove its worth. GTM engineers often end up as its most important caretakers.
What you'll take away
- 01The core CRM objects and how they relate.
- 02What it means in practice for the CRM to be the source of truth.
- 03How to design routing rules, including when data is missing.
- 04Automated hygiene: deduplication, standardisation and decay.
- 05How to record where pipeline came from, so outbound gets credit.
The objects and how they connect
Each object has properties, or fields. Before writing to a CRM, learn which fields exist, which are required, which other tools write to them, and which ones reports depend on. Creating a new field is easy. Knowing whether an existing one already does the job is the skill.
What "source of truth" really means
- One home per fact. Decide which system owns each field. Say company size comes from the enrichment provider, deal stage from the rep, lifecycle stage from your automation. Other tools read it; they don't overwrite it.
- Match on stable keys. Accounts by website domain, contacts by email. Names are unreliable keys.
- Don't overwrite good data with blanks. Syncs should only fill empty fields or replace data that is older and from a less trusted source.
- Record where data came from. A field for the source and date of each enrichment makes problems traceable.
Routing: who gets which lead
Routing rules decide which rep owns each new lead or account. Bad routing loses deals: a hot reply sits with someone on holiday, two reps contact the same company, an enterprise lead lands with a junior rep. Agree the rules with sales leadership in writing, then automate them.
| Rule | Example |
|---|---|
| Existing owner first | If the account already has an owner, the new contact goes to them |
| Territory | By country or region |
| Segment | Accounts over 1,000 employees go to the enterprise team |
| Fairness | Round-robin within a team, adjusted for who is away |
| Missing data | If size or country is unknown, route to a review queue, not to a default rep |
The missing-data rule is the one teams forget. Without it, every lead with an empty field quietly goes to whoever the system picks by default, often one overwhelmed rep. Route unknowns to a queue that someone checks daily.
Every routing rule needs an answer for "and if we don't know?"
Keeping it clean automatically
- 1
Prevent duplicates at the door
Every integration checks for an existing record before creating one. - 2
Merge what slips through
A weekly job finds likely duplicates by domain and email, and merges or flags them. - 3
Standardise values
Country names, job titles, industries: map variants to a fixed list so reports group correctly. - 4
Handle decay
People change jobs and companies close. Re-check key contacts on a schedule, and mark bounced emails as invalid immediately. - 5
Watch a hygiene dashboard
Duplicates found, fields missing, records with no owner. Numbers that move tell you something broke.
Getting credit: attribution and reporting
If the CRM doesn't record where a deal came from, outbound can't show its value, and its budget is the first to be cut. Set source fields at creation time, automatically, and protect them from being overwritten later.
- Original source: outbound, inbound, referral, event, partner.
- Campaign or play: which signal play or sequence produced it.
- First-touch date, and the date it became a meeting and an opportunity.
- Report pipeline and won revenue by source and play monthly, alongside cost, to give cost per meeting and cost per opportunity.
Try it
Plan a CRM sync
Your enrichment table produces 500 new contacts a week for outbound. Design how they get into the CRM without creating duplicates, overwriting good data or losing attribution.
Write your answer down first, then reveal the worked answerWorked answer
Matching: for each row, look up the account by website domain and the contact by email. If the account exists, attach to it; if the contact exists, update rather than create.
Field rules: only fill empty fields, or overwrite enrichment-owned fields like company size when the new data is newer. Never touch rep-owned fields like deal stage or notes.
Ownership: new contacts at owned accounts go to the account owner; others go through the routing rules, with unknowns to a review queue.
Attribution: set original source to outbound and the campaign name at creation, and protect both from later edits.
Checks: log created, updated and skipped counts each week, and alert if created contacts jump unexpectedly, which usually means matching broke. A strong answer handles existing owners first.