# Lead Enrichment and CRM Cleanup SOP — [Company name]

Template status: [Draft / In review / Approved] · Applies from: [date]

## Purpose

Turn a raw inbound lead into a record a salesperson can act on without
re-researching it, and keep the CRM free of the duplicates, dead domains and
mis-assigned owners that make routing and reporting untrustworthy.

## Scope

New leads arriving from [web forms], [events] and [list uploads], plus the
[weekly] hygiene sweep over records touched in the last [7] days.

Out of scope: outbound prospecting list building, opportunity management after
qualification, and any bulk import over [1,000] rows, which follows
[Bulk import SOP] because of its blast radius.

## Owner

Accountable: [Revenue Operations Specialist].
Supporting: [Sales Manager] for territory rules, [Data Protection Contact] for
E5 and A3.

## Trigger

Event: a lead record is created in [CRM] by any source.
Scheduled: the hygiene sweep runs [weekly on Monday 07:00] over records created
or modified in the previous [7] days.

## Inputs

| Input | System of record | Required |
| --- | --- | --- |
| Submitted form fields, raw | [CRM] / [form tool] | Yes |
| Capture context: source, campaign, page, timestamp | [CRM] | Yes |
| Existing accounts, contacts and open opportunities | [CRM] | Yes |
| Enrichment response for the company domain | [Enrichment source, named] | Best effort |
| Suppression list: do-not-contact, unsubscribes, erasure requests | [Suppression register] | Yes |
| Territory and routing rules, current version | [Sales ops sheet] | Yes |

## Prerequisites

- A written ideal-customer-profile definition with thresholds, not adjectives.
- A field dictionary stating the canonical format of every field you normalise
  (country codes, industry values, employee bands).
- The suppression register is authoritative and reachable before any record is
  routed. If it is unavailable, routing stops.
- Merge rights restricted to [Revenue Operations Specialist]; nobody else merges
  records.

## Steps

1. **Capture the raw submission unchanged** into an immutable field before
   normalising anything. Every later dispute about "the form said X" is settled
   here.
2. **Check the suppression register first.** A match ends processing: no
   enrichment, no routing, no sequence. Suppression is checked before enrichment
   so you do not buy data about someone who asked you to stop.
3. **Normalise fields** to the field dictionary: trim whitespace, lowercase the
   email, resolve the company domain from the email where the company field is
   blank, map country to [ISO 3166-1 alpha-2], map free-text industry to the
   controlled list.
4. **Classify the email domain.** → Decision **D1**. Personal domains,
   competitor domains and known throwaway domains take different paths and must
   not be silently enriched.
5. **Search for an existing record** before creating anything: by email, then by
   company domain, then by normalised company name plus country. → Decision
   **D2**.
6. **Enrich the company, not the person, by default.** Employee band, sector,
   country, and any published funding or headcount signal you actually use in
   routing. Enriching personal attributes you do not use in a decision is data
   you have to justify holding.
7. **Reconcile enrichment against self-reported data.** → Exception **E3**.
   Self-reported wins on job title and intent; enrichment wins on domain-level
   firmographics. Never overwrite a field the prospect typed themselves.
8. **Score against the ICP definition** and record the inputs to the score, not
   only the number. A score nobody can explain gets ignored within a quarter.
9. **Route.** → Decision **D3**. Assign the owner from the territory rules,
   stamping the rule version used. If no rule matches, route to the [unassigned]
   queue with an owner and a [4]-hour clock, never to a default person.
10. **Decide on sequence enrolment.** → Decision **D4** and approval **A2** for
    contacts in jurisdictions where your legal basis for outbound contact
    requires it.
11. **Run the hygiene sweep** over the [7]-day window: unresolvable domains,
    records with no owner, contacts whose account was merged away, and
    duplicates created since the last sweep. Produce a proposed change list.
12. **Apply the change list.** Anything above the bulk threshold goes to
    approval **A1**, and the pre-change export is kept so it can be reversed.

## Decisions

| ID | Decision | Criteria | Default |
| --- | --- | --- | --- |
| D1 | Domain class | Free-mail provider list → personal. Domain on [competitor list] → competitor. Domain on [disposable list] or MX record absent → invalid. | Business |
| D2 | Merge or keep separate | Same email → merge. Same company domain and same normalised name → merge accounts, keep both contacts. Same name, different country → keep separate. | Keep separate and flag for review |
| D3 | Routing target | ICP score ≥ [n] and employee band ≥ [x] → [named sales segment]. Below → nurture. Existing open opportunity → the opportunity owner, always. | Nurture |
| D4 | Enrol in an outbound sequence | Not suppressed, business domain, legal basis recorded for the contact's jurisdiction | Do not enrol |
| D5 | Discard as non-ICP | Domain class invalid, or explicitly out-of-scope sector, or student/personal-research intent stated | Keep in nurture |

## Exceptions

- **E1 — Personal email domain on an otherwise good lead.** Do not discard and
  do not guess a company. Route to nurture with a task to ask for a work address
  on first contact.
- **E2 — Competitor domain.** Flag, do not enrol, and notify [Sales Manager].
  Do not add commentary to the record that you would not want read aloud.
- **E3 — Enrichment contradicts self-reported data.** Keep both: the submitted
  value in the immutable capture, the enriched value in a clearly named
  `enriched_*` field. Never merge them into one field.
- **E4 — Duplicate detected after an opportunity exists on one record.** Do not
  merge automatically. The opportunity's history is the record of truth; merge
  into it manually and re-point activities.
- **E5 — Erasure or objection request.** Route to [Data Protection Contact] the
  same day, add to the suppression register immediately, and stop all processing
  of that record including enrichment. This exception overrides every other rule
  in this document.
- **E6 — Enrichment source unavailable.** Route on self-reported data alone and
  queue for re-enrichment. Never hold a lead in a queue waiting for enrichment.

## Approvals

| ID | What is approved | Who approves | Why it stays with a person |
| --- | --- | --- | --- |
| A1 | Bulk merge or delete affecting more than [50] records | [Revenue Operations Specialist] with [Sales Manager] | Irreversible at scale; the pre-change export is checked as part of the approval |
| A2 | Outbound enrolment where legal basis depends on jurisdiction | [Data Protection Contact] | Contact rules differ by jurisdiction and the risk is not the salesperson's to carry |
| A3 | Adding a new enrichment source or new enriched field | [Data Protection Contact] | New data collection needs a stated purpose |
| A4 | Change to territory or routing rules | [Sales Manager] | Routing determines compensation |

## Output

- Lead records with normalised fields, a preserved raw capture, an explainable
  score, an owner and a stamped routing-rule version.
- A suppression check recorded on every processed record.
- A weekly hygiene change list with before/after counts and a reversible export.
- A queue of records that could not be routed, each with an owner and a clock.

## SLA / KPI

- Enrichment and routing complete within [60] minutes of creation for business
  domains: target [95%].
- Duplicate rate among records created in the period: target under [2%].
- Records with no owner after the sweep: target zero.
- Percentage of routed leads where the routing rule version is recorded: [100%].

## Audit record

Retain for [24] months: the raw capture, the suppression check result and
timestamp, every enriched field with its source and retrieval date, the score
inputs, the routing rule version, and every bulk change with its A1 approval and
the pre-change export. Erasure requests and their completion dates are retained
separately per [Data retention policy].

> Simulated example data
>
> Form submission [2026-05-11 09:14], email `ops@[northwind-freight].example`,
> company field blank. D1 → business domain, resolved from email. D2 → existing
> account matched on domain, contact created against it. Enrichment returned
> employee band [201–500]; self-reported title [Head of Operations] kept
> unchanged. ICP score [72] (band [+30], sector [+25], region [+17]). D3 →
> routed to [Mid-market EMEA], rule version [2026-04].

## Revision log

| Version | Date | Author | Change |
| --- | --- | --- | --- |
| v1.0 | 2026-07-24 | [Your name] | initial draft |
