# CRM Cleanup Checklist

**SoftwareGlimpse resource** · Stage: Optimize · Kind: Checklist  
**Last reviewed:** 2026-08-14

Live-CRM **hygiene**: contact/account **duplicates by email/domain**, **inactive opportunity owners**, unused opportunity fields, and **orphan stage automations** — in safe batches with validation and merge survivorship rules. Do not invent data-quality percentages; track batch counts and samples.

**Related:** [Optimization checklist](/resources/crm-optimization-checklist.md) · [Security checklist](/resources/crm-security-checklist.md) · [Data migration template](/resources/crm-data-migration-template.md)  
**Guides:** [Implementation](/guides/crm-implementation/) · [Total cost](/guides/crm-total-cost-guide/)  
**Tools:** [Finder](/tools/crm-finder/) · [TCO Calculator](/tools/crm-tco-calculator/)

---

## How to use

1. **Snapshot** — export accounts, contacts, opportunities, activities; list reports/integrations on cleanup targets.
2. **Announce** a cleanup window; freeze non-essential schema changes; define **merge survivorship** rules.
3. Work in order: inactive users → reassign open opps → contact/account dupes by email/domain → opportunity fields/views → orphan automations.
4. **Validate samples** (including forecast/stuck-deal views) after each batch.
5. Document changes; schedule the next light hygiene pass (e.g. quarterly).

**Safety rule:** know dependencies before delete. Prefer archive/filter over reckless hard-delete of history you may need (especially FS retention).

---

## Cleanup header

| Field | Value |
| --- | --- |
| Cleanup owner | |
| Window dates | |
| Export location / date | |
| Survivorship rules (email master / newest activity / open opp keeps stage) | |
| Validation sample list | |
| Rollback approach | |
| Next hygiene pass date | |

---

## A. Prepare & protect

- [ ] Export accounts, contacts, opportunities, activities (dated)
- [ ] List reports / integrations that use fields or stage automations you may remove
- [ ] Define validation samples (10–20 records + forecast/stuck-deal views)
- [ ] Define merge survivorship rules before any merge
- [ ] Send cleanup window notice to sellers (what to do / not do; pause bulk imports)
- [ ] Agree rollback / restore approach (even if “restore from export + support”)

---

## B. Users, access & opportunity ownership

- [ ] Deactivate departed / unused users; review licenses
- [ ] Reassign **open opportunities** owned by inactive users
- [ ] Reassign open accounts / contacts from inactive owners (dual-owned / coverage gaps)
- [ ] Find ownerless opportunities and accounts — assign or archive per policy
- [ ] Spot-check roles / permission leftovers (queue deep review on security checklist; FS access reviews)
- [ ] Review integration / API users — each has an owner; restrict or rotate if stale

---

## C. Contact & account duplicates (email / domain)

- [ ] Define **contact** duplicate rules (primary: email) and confidence levels
- [ ] Define **account** duplicate rules (primary: domain / normalized name)
- [ ] Lead vs contact duplicate policy (or N/A if lead-less) — prevent recycled-lead doubles
- [ ] Merge **high-confidence** duplicates in small batches (e.g. 25–50) with spot checks
- [ ] Queue ambiguous duplicates for human review (do not auto-merge low confidence)
- [ ] Opportunity merge / link rule when accounts merge (which open opp survives; activity rollup)
- [ ] Archive or mark stale inactive records per retention policy (pilot segment first)
- [ ] Clean obsolete picklist values (stage reasons, sources) after dependency check

---

## D. Opportunity fields, views & orphan automations

- [ ] Identify unused / duplicate **opportunity** fields (usage or layout audit + manager confirm)
- [ ] Remove fields from layouts first; delete/archive only after a quiet period (watch forecast breaks)
- [ ] Archive abandoned list views / dashboards; keep ritual stuck-stage and forecast views
- [ ] Inventory automations with owners (stage triggers especially; no owner = disable candidate)
- [ ] Disable orphan / failing stage-based automations; changelog why
- [ ] Reduce activity / task spam from old auto-rules
- [ ] Retire obsolete email / task templates
- [ ] Fix blocking blank required fields on **live open deals** only where fields still matter
- [ ] Re-run validation samples and key forecast views; get ops/manager sign-off
- [ ] Publish changelog; put next hygiene pass on the calendar (SMB: smaller batches)

---

## Batch log (copy per batch)

| Batch # | Type (merge / reassign / field / automation) | Count | Validated? | Notes |
| --- | --- | --- | --- | --- |
| 1 | | | | |
| 2 | | | | |
| 3 | | | | |

---

## Tips

- Inactive opportunity owners and email/domain duplicates restore trust faster than cosmetic field deletion alone.
- Silent bad merges destroy trust faster than living with duplicates — keep a human review queue and written survivorship rules.
- Cleanup overlaps user deactivation with security work; it is **not** a full security audit.
- If sellers still refuse the CRM after hygiene, switch to the [optimization checklist](/resources/crm-optimization-checklist.md) for next-step/stage themes — or reopen evaluation if must-haves are missing.
