CRM Baseline & Cleanup Report
Prepared by Saxestory · Baseline 10 August, delivered 21 August
Contents
| 1 | Baseline audit | What we received |
| 2 | What we did | The work carried out |
| 3 | What we deliver | Validation results and the segments now live |
| 4 | Findings and comments | What the measurement showed |
| 5 | Actions | Split by who decides |
| 6 | Annex | The records to work from |
1. Baseline audit
The database as received, measured 10 August| Measure | Count |
|---|---|
| Contacts | 9,240 |
| Companies | 6,010 |
| Marketing contacts, against a plan limit of 5,000 | 2,840 |
| Contacts with no email address | 1,344 |
| Contacts never emailed | 7,280 |
| Contacts with no company attached | 138 |
| Contacts under two departed colleagues | 64 |
| Contacts with a recorded website visit | 0 |
| Addresses with a known deliverability status | 0 |
| Rule-based suppression segments in place | 0 |
Built over several years from five untracked import sources, and never measured. Nothing was known about whether any address worked.
2. What we did
10 to 21 August- Measured the database in full: volume, bounce rates, ownership, duplicates, orphaned records and import sources.
- Ran syntax, DNS, MX and SMTP validation against all 7,896 addresses in a single pass.
- Queried the public mail records of every domain validation could not resolve. This was added beyond the agreed scope and found 29 further contacts on domains that cannot receive mail at all.
- Ran eleven public DNS checks on the sending domain to establish whether receiving servers trust its mail.
- Built eight rule-based suppression segments that keep working on contacts added later.
- Built working segments for duplicates, orphaned records and departed owners, record by record.
- Switched 156 contacts to non-marketing.
Nothing was deleted and no history was touched.
3. What we deliver
Every segment live in the CRM| Outcome | Contacts | Marketing | Meaning |
|---|---|---|---|
| Valid | 2,214 | 845 | Mailbox confirmed. Safe to send. |
| Catch-all | 1,352 | 512 | Domain accepts everything, mailbox unconfirmed |
| No response | 4,047 | 1,331 | Mail server refused to answer |
| Invalid | 283 | 108 | Mailbox confirmed not to exist |
| Segment | Records | Marketing | Use |
|---|---|---|---|
| Invalid email | 283 | 108 | Exclude always |
| Domain cannot receive mail | 29 | 4 | Exclude always |
| Unsubscribed | 27 | 24 | Exclude always |
| No email address | 1,377 | 44 | Cannot be sent to |
| Unverified | 5,367 | 1,758 | Judgement, see finding b |
| Free or personal email | 162 | 7 | Judgement by campaign |
| Inactive 12+ months | 1,846 | 598 | Judgement by campaign |
| Orphaned, no company | 138 | 74 | Judgement by campaign |
Categories overlap, so the column does not total. All eight are rule-based and keep working on contacts added later.
| Measure | 10 Aug | 21 Aug | What moved it |
|---|---|---|---|
| Contacts | 9,240 | 9,318 | 78 added during the engagement |
| Companies | 6,010 | 6,032 | Added alongside them |
| Marketing contacts, limit 5,000 | 2,840 | 2,840 | 180 suppressed, drops to 2,660 at the next update |
| Contacts with no email address | 1,344 | 1,377 | 30 arrived without one, and 3 existing addresses were deleted |
| Contacts never emailed | 7,280 | 7,358 | The new records, none of them emailed |
| Contacts with no company attached | 138 | 138 | Triaged into three segments, 74 linkable now |
| Contacts under two departed colleagues | 64 | 64 | Split 39 and 25, awaiting reassignment |
| Addresses with a known deliverability status | 0 | 7,896 | Validation, on every contact record |
| Confirmed deliverable | 0 | 2,214 | Safe to send |
| Confirmed undeliverable | 0 | 312 | Invalid and dead domain |
| Held for review, unresolvable by tool | 0 | 5,367 | Unverified |
| Duplicate records identified | 0 | 126 | Annex D |
| Rule-based suppression segments | 0 | 8 | Applied as exclusion lists on every send |
The database now carries a deliverability status on every contact, eight segments that keep themselves current, and a live count against the 5,000 limit. Marketing contacts move to 2,660 at the next update date.
4. Findings and comments
Every large send opens between 7.12% and 8.94%. One curated send of 52 people returned 33.87% from the same domain and the same sender. The content works when the list does. Every hard bounce carries a reason, and 512 of 546, 93.8%, are unknown user: the mailbox does not exist.
5,367 addresses sit behind corporate mail gateways that refuse verification as policy. One top-five device manufacturer returns no response for 204 of its 221 contacts and no invalid results at all. A large biotech's server, by contrast, answers the same check and returns 24 invalid. A domain producing no invalid results is a gateway declining to answer, not decayed data.
Four more of the sector's largest names behave the same way. Thirty-one domains do, covering 902 contacts. No further spend on validation tools changes this.
336 of the 487 contacts carrying a deal sit inside them. Suppressing on an unanswered check would remove the people the client has already sold to. See the split in annex A.
Eight of eleven domain checks pass. SPF is correct and both DKIM keys are published.
The policy reads "none", so a message failing authentication is reported to the client and delivered to the recipient anyway. Anyone can send mail claiming to be from the domain.
No contact in the database has a recorded website visit. The site runs six separate analytics tools and none of them is connected to the CRM. Attribution is impossible until the tracking code is installed.
2,272 of the 2,840 marketing contacts sit with a single owner. Any decision about the plan is a decision about that segment. See ownership in annex C.
78 contacts have been added since validation ran, 26 of them with no email address, against a database average of 14.8%. A cleanup delivered today decays from tomorrow.
5. Actions
Every segment opens in the CRM| Contacts that cannot receive email, set to non-marketing | 156 |
| Unsubscribed contacts, set to non-marketing | 24 |
| Action | Records | What it needs |
|---|---|---|
| Duplicate contacts, merge | 20 | Keep one record, merge the other in. Detail in annex D. |
| Name matches, one person or two | 32 | Only the client can tell which. Detail in annex D. |
| Duplicate companies, merge | 74 | Some are subsidiaries, not duplicates. Detail in annex D. |
| Flagged as duplicates but are not | 15 | Clear the inherited firmographics, do not merge. |
| Reassign: first departed owner | 39 | Name who inherits the segment |
| Reassign: second departed owner | 25 | Name who inherits the segment |
| Orphans, company already exists | 74 | Set the Company property, no decision needed |
| Orphans, company must be created | 51 | Create the company, then link |
| Orphans, nothing to match on | 13 | Leave as is |
| Misspelled supplier domain | 21 | Correct the domain, they return to reach |
| Move DMARC from "none" to enforcement | 1 | Read the aggregate reports first, then tighten |
| Install the CRM tracking code | 1 | Prerequisite for any attribution |
| Action | Records | What it needs |
|---|---|---|
| Resolve the addresses validation could not settle | 5,367 | A controlled send, designed so finding out does not damage the domain |
| Domains with no mail server, mail falls back to the web server | 26 | Include in the controlled send. These are live companies, so mail most likely arrives. |
| Make an email address mandatory before a contact can be saved | 1 | 26 of the 78 contacts added since validation have no address. A required field stops that at source. |
Annex
The evidence behind each finding, and the records to work from| Validation outcome | Contacts with a deal | Share |
|---|---|---|
| Unresolved by validation | 336 | 69.0% |
| Valid address | 128 | 26.3% |
| No email address | 16 | 3.3% |
| Invalid address | 7 | 1.4% |
| Total | 487 | 100% |
| Group | Records | Action |
|---|---|---|
| Address is right, the domain is misspelled | 5 | Correct the domain. These become deliverable again. |
| Mailbox failed the check, company domain still live | 198 | Review before suppressing. The domain still accepts mail, so these are likely people who changed role. |
| No working address at that domain anywhere in the database | 80 | Suppress, and treat the account as cold |
| Total | 283 |
| Owner | Contacts | Share | Marketing | Of their own segment |
|---|---|---|---|---|
| Owner A | 6,062 | 65.1% | 251 | 4.1% |
| Owner B | 2,297 | 24.7% | 2,272 | 98.9% |
| Owner C | 845 | 9.1% | 283 | 33.5% |
| Owner D (deactivated) | 39 | 0.4% | 26 | 66.7% |
| Owner E | 25 | 0.3% | 0 | 0% |
| Owner F (deactivated) | 25 | 0.3% | 0 | 0% |
| Owner G | 9 | 0.1% | 0 | 0% |
| Owner H | 7 | 0.1% | 6 | 85.7% |
| Owner I | 5 | 0.1% | 0 | 0% |
| Owner J | 4 | 0.0% | 2 | 50.0% |
| Total | 9,318 | 100% | 2,840 | 30.5% |
Group A is a straight merge. Group B needs the client to decide whether it is one person who moved or two people who share a name. Nothing has been merged or changed.
| Segment | Records | Action |
|---|---|---|
| Group A: same person, same company | 20 | Straight merge. The record to keep is marked in the CRM. |
| Group B: name matches across employers | 32 | One person who moved, or two people sharing a name. |
| Duplicate companies | 74 | Merge, except where the two are parent and subsidiary. |
| Flagged as duplicates but are not | 15 | Four records inherited another company's firmographics in a single import. Clear the inherited data, do not merge. |
The CRM's own tool flags 71 candidate pairs, and a pair is two records. After review those became 126 records to act on. The record-by-record listing follows.
The record to keep is marked. Open it, use Actions and Merge, and select the other record. The CRM preserves activity and associations from both.
| Person | Company | Keep this record | Why keep it | Merge this one in |
|---|---|---|---|---|
| Contact A1 | Acme Pharma | a1@acme.example keep | has the email address | no email merge in |
| Contact A2 | Contoso Labs | @contoso.example keep | has an associated deal | @contoso.test merge in |
| Contact A3 | Fabrikam Medical | @fabrikam.example keep | domain spelled correctly | @fabrikan.example merge in |
| Contact A4 | Northwind Bio | a4@northwind.example keep | has an associated deal | contact.a4@ merge in |
| Contact A5 | Globex Diagnostics | a5@globex.example keep | has logged activity | a.five@ merge in |
| Contact A6 | Adatum Devices | contact.a6@ keep | full-name address, created first | ca6@ merge in |
| Contact A7 | Litware Health | a7@litware.example keep | has a deal, correct spelling | a7@litwear.example merge in |
| Contact A8 | Proseware Surgical | a8@proseware.example keep | has activity, created first | a8@prosewear.example merge in |
| Contact A9 | Tailspin Labs | a9@tailspin.example keep | has the email address | no email merge in |
| Contact A10 | Woodgrove Health | record 1 decide first | neither has an email, activity, or deal | record 2 decide first |
The CRM flagged these because the names match. Each one is either a single person who changed employer, or two different people who happen to share a name.
Nothing in the data separates the two cases, so none of these carry a recommendation. The client confirms which case applies, and the action follows from that. Do not merge either way: merging a job change destroys a real second relationship, and merging two people corrupts both records.
| Person | Record A | Record B | Action once confirmed |
|---|---|---|---|
| Contact B1 | Acme Pharma | Adatum Devices | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B2 | Contoso Labs | Litware Health | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B3 | Fabrikam Medical | Proseware Surgical | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B4 | Northwind Bio | Tailspin Labs | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B5 | Globex Diagnostics | Woodgrove Health | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B6 | Adatum Devices | Coho Diagnostics | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B7 | Litware Health | Lucerne Medical | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B8 | Proseware Surgical | Trey Research | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B9 | Tailspin Labs | Relecloud Bio | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B10 | Woodgrove Health | VanArsdel Devices | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B11 | Coho Diagnostics | Wingtip Labs | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B12 | Lucerne Medical | Acme Pharma | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B13 | Trey Research | Contoso Labs | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B14 | Relecloud Bio | Fabrikam Medical | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B15 | VanArsdel Devices | Northwind Bio | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
| Contact B16 | Wingtip Labs | Globex Diagnostics | One person who moved: keep the current employer record, retire the older one. Two different people: reject the match in Manage Duplicates. |
Keep the record marked, it carries the domain or the correct spelling. Open it, use Actions and Merge, and select the others.
| Company | Records and action | Why flagged |
|---|---|---|
| Acme Pharma | record 1 keep record 2 merge in | Identical name and domain |
| Contoso Labs | Contoso Labs keep ContosoLabs merge in | Spacing differs |
| Fabrikam Medical | Fabrikam Medical keep fabrikam medical merge in | Capitalisation differs |
| Northwind Bio | record 1 keep record 2 merge in | Identical name |
| Globex Diagnostics | record 1 keep record 2 merge in | Identical name and domain |
| Adatum Devices | record 1 keep record 2 merge in | Identical name and domain |
| Litware Health | record 1 keep record 2 merge in | Identical name and domain |
| Proseware Surgical | record 1 keep record 2 merge in | Identical name and domain |
| Tailspin Labs | tailspin.example keep www. prefix merge in | www prefix and case differ |
| Woodgrove Health | record 1 keep record 2 merge in | Identical name |
| Coho Diagnostics | record 1 keep record 2 merge in | Identical name |
| Lucerne Medical | record 1 keep record 2 merge in | Identical name |
| Trey Research | Trey Research Inc. keep Trey Research, inc. merge in | Punctuation differs |
| Relecloud Bio | record 1 keep record 2 merge in | Identical name |
| VanArsdel Devices | record 1 keep record 2 merge in | Identical name |
| Wingtip Labs | record 1 keep record 2 merge in | Identical name |
| Blue Yonder Health | Blue Yonder keep BLUE YONDER merge in | Capitalisation differs |
| Alpine Medical | Alpine Medical Inc keep Alpine Medical merge in | Short and legal name |
| Margie Diagnostics | Margie Diagnostics keep Margy Diagnostics merge in | Name misspelled |
| Wide World Pharma | Wide World Pharma keep Wide Word Pharma merge in | Name misspelled |
| Example Group | Example Holdings Group keep Example merge in | Short and legal name |
| Sample Bio | Sample Bio keep Sample Bio Diagnostics merge in | Parent and division |
| Placeholder Labs | Placeholder Labs keep Plaeholder Labs merge in | Name misspelled |
| Testco Pharma | has domain keep no domain merge in | One record missing domain |
| Demo Health | Demo Health, has domain keep DEMO HEALTH merge in | Capitalisation differs |
| Acme Devices | acme-devices.example keep www. prefix merge in | www prefix differs |
| Contoso Ortho | ContosoOrtho keep Contoso Ortho merge in | Spacing differs |
| Fabrikam Bio | Fabrikam Bio keep Fabricam Bio merge in | Name misspelled |
| Northwind Diagnostics | Northwind Diagnostics, Inc. keep Northwind Diagnostics merge in | Short and legal name |
| Globex Group | Globex keep Globex Subsidiary (Globex) merge in | Parent and subsidiary |
| Adatum Labs | record 1 keep record 2 merge in | Identical name and domain |
| Litware Pharma | has domain keep Litware Pharma merge in LITWARE PHARMA merge in | Three records |
| Proseware Bio | has domain keep record 2 merge in record 3 merge in | Three records |
| Tailspin Health | has domain keep record 2 merge in record 3 merge in | Three records |
| Woodgrove Labs | has domain keep record 2 merge in record 3 merge in | Three records |
Checking these individually found a single cause behind four of them, and it is not duplication.
Four records were created on the same day in a single import and each one inherited the website, country, city, industry, revenue, and employee count of a completely different company. A pharmaceutical business carries a clothing retailer's domain and is filed under apparel.
A food producer carries a chemical group's data. Merging any of these would destroy a real company record. The correct fix is to clear the inherited domain and firmographic data on the newer record and enter the company's own.
| Correct record | Record with the wrong domain | Shared domain | Action |
|---|---|---|---|
| Northwind Retail | Litware Therapeutics fix domain | northwind-retail.example | Check the record, then clear the inherited domain, industry, revenue, and employee count and enter Litware Therapeutics' own |
| Globex Foods | Proseware Pharma fix domain | globex-foods.example | Check the record, then clear the inherited domain, industry, revenue, and employee count and enter Proseware's own |
| Adatum Chemicals | Tailspin Bio fix domain | adatum-chem.example | Check the record, then clear the inherited domain, industry, revenue, and employee count and enter Tailspin's own |
| Coho Optical | Woodgrove Vision fix domain | coho-optical.example | Check the record, then clear the inherited domain, industry, revenue, and employee count and enter Woodgrove Vision's own |
In all four cases the older record holds every attached contact and the newer record holds none, which is consistent with the newer one being an empty shell created by the import.
| Record 1 | Record 2 | What they actually are | Action |
|---|---|---|---|
| Acme Med, Italy | AcmeMed, Germany | One makes medical refrigeration in Piedmont and has traded since the 1990s. The other makes surgical instruments in Baden-Wurttemberg. Different products, countries, and owners. | reject in Manage Duplicates |
| Contoso Surgical, Belgium | Contoso Robotics, France | One makes craniomaxillofacial implants and has traded around twenty years. The other is a surgical robotics start-up founded in 2023. | reject in Manage Duplicates |
| Records | Attached contacts | Action |
|---|---|---|
| Self-employed Self-employed Freelance delete | None on any record | A job status entered into the company field. All three records are empty. Delete them. |