> Enrich.chat gives AI agents verified work emails and mobiles. To use it from an agent, read https://enrich.chat/agents.md . This is the Markdown version of https://enrich.chat/blog/database-hygiene/

# Database hygiene: a CRM cleanup checklist, a 30-minute monthly run and the five numbers to track

Hygiene is a routine, not a one-off project. Here are the jobs, who owns them, how often to run them, what to delete, fix or enrich, and what each number in your monthly report should trigger.

By Enrich.chat Editorial. Updated October 16, 2026.

**Short answer:** Database hygiene is the routine upkeep that keeps a CRM or contact database accurate, unique, reachable and lawful to use. Its six jobs are standardise, dedupe, validate, refresh, suppress and monitor. Run a 30-minute check each month, and act on published limits such as [Google's](https://support.google.com/a/answer/81126) 0.10% spam-rate target and the 5% hard bounce rate at which [Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/reputationdashboardmessages.html) reviews an account.

## Key takeaways

- Run six jobs in order: standardise, dedupe, validate, refresh, suppress, monitor. Formats come first, because duplicates and opt-outs cannot be matched across inconsistent values.
- Sender limits are published. Google asks for a spam rate under 0.10% and never 0.30%, Yahoo asks for under 0.3%, and Amazon SES reviews an account at a 5% hard bounce rate.
- Use the shortest opt-out clock. CAN-SPAM allows 10 business days, Yahoo asks for 2 days and Google lists 48 hours.
- No rule sets one retention period. The UK ICO leaves it to you to justify, and France's CNIL points to 3 years from a prospect's last contact.
- HubSpot cannot unmerge records, and Salesforce's merge call deletes the other records, so export before you merge.

## What is database hygiene, and which jobs does it include?

Database hygiene is the routine upkeep that keeps a CRM or contact database accurate, unique, reachable and lawful to use. It is a schedule, not a clean-up project. Six jobs make it up: standardise, dedupe, validate, refresh, suppress and monitor.

Order matters. Standardise first, because a duplicate cannot be found while "US", "USA" and "United States" share one column. Dedupe second, so you validate and refresh each person once. Suppression works more like a gate than a step: check your suppression list before every import and every send. Figure 1 gives the order and the reason for each job.

**Figure 1: The six database hygiene jobs, in the order to run them.** A list of six jobs in order. Standardise at entry and monthly, dedupe from a monthly queue, validate before the first send, refresh quarterly and yearly, suppress before every send, and monitor with a monthly report. Each job has a one-line reason.

*The six jobs and when each one runs. The order and the cadences are our suggested workflow, not a standard. Suppression is highlighted because it also runs before every import.*

Hygiene is not the same as enrichment. Hygiene fixes and protects the records you hold. Enrichment adds details from outside. Clean first, then enrich, as our guides to [what data enrichment is](https://enrich.chat/blog/what-is-data-enrichment/) and [CRM data enrichment](https://enrich.chat/blog/crm-data-enrichment/) explain. This page is the maintenance routine around both.

## What belongs on a database hygiene checklist?

A checklist lists each job once, with a cadence, an owner and a test for done. The table is our suggested setup. It follows the rules and sender limits cited in this guide, but the cadences and owners are our choice, not a standard. On a small team one person can hold several jobs, but name one person accountable for the whole list.

| Job | How often | Owner | Tool category | What good looks like |
| --- | --- | --- | --- | --- |
| **Standardise** | At entry, then monthly for new records | RevOps or CRM admin | CRM validation and format tools | One rule per field. New records arrive clean |
| **Dedupe** | Monthly queue, quarterly full scan | RevOps or CRM admin | CRM native dedupe, data ops platform | One record per person and per domain. Duplicate rate flat or falling |
| **Validate** | Before the first send, again after 90 days | Marketing or sales ops | Email verifier, phone line check | Hard bounces under your line. Role and catch_all addresses held back |
| **Refresh** | Quarterly for worked accounts, yearly for the rest | Sales ops with reps | Enrichment API or CRM enrichment | Every worked record has a checked date under 90 days old |
| **Suppress and comply** | Same day for opt-outs and bounces, yearly retention review | Marketing ops with a privacy lead | One shared suppression list, CRM retention rules | Opt-out lag of 2 days or less in every tool. A written retention schedule |
| **Monitor** | Monthly report, quarterly review | RevOps | CRM data quality dashboard or a spreadsheet | Five numbers reported, each with an action |

## How do you standardise and dedupe records?

Write one rule for each field, enforce it where records enter, and fix old records in bulk. Then match duplicates on the cleaned values. Both steps are cheap, and every later step depends on them.

### Which formats should you standardise?

- **Case and spaces.** Trim spaces, lowercase emails and domains, and capitalise names. [HubSpot's formatting issues tool](https://knowledge.hubspot.com/records/manage-property-format-issues) proposes fixes for values such as JOHN or a mixed-case email. Its automatic fixes need a Data Hub Professional or Enterprise subscription.
- **Phone numbers.** Store E.164: a plus sign, the country code and the number, [15 digits at most](https://www.twilio.com/docs/glossary/what-e164) in total. [HubSpot's phone validation](https://knowledge.hubspot.com/properties/phone-number-property-validation) can require that format on entry.
- **Countries and states.** Pick one list, names or two-letter codes, and use a picklist so nobody types a new spelling.
- **Job titles.** Free text will not standardise. Keep the raw title and add two mapped fields, seniority and function. This is our suggestion.
- **Company domains.** Lowercase, no `www`, no path. Our [company data enrichment](https://enrich.chat/blog/company-data-enrichment/) guide has the full cleaning table.

Our [contact enrichment](https://enrich.chat/blog/contact-enrichment/) guide shows how to normalise emails, LinkedIn URLs and phones before you match.

### Which keys identify a duplicate?

Match on identifiers first and names last. These rules are our suggestion.

- **Contacts.** The same LinkedIn URL or the same lowercase work email is one person: merge. The same name and company domain alone is a likely match: review. A shared phone number is only a hint, because switchboards are shared.
- **Companies.** The same primary domain is one company. Keep alias and subdomain names on that record. [HubSpot deduplicates contacts by email address and companies by domain name](https://knowledge.hubspot.com/records/deduplication-of-records), but companies created through its API are not deduplicated by domain.
- **Accounts with parents.** A parent and its subsidiary can share a domain. Link them with a parent field instead of merging them, so each keeps its own deals.

Your CRM's own matching is wider than a key. [HubSpot's duplicates manager](https://knowledge.hubspot.com/records/manage-duplicate-records) compares first name, last name, email, IP country, phone, zip code and company name on contacts, and domain, name, country, phone and industry on companies. It needs a Professional or Enterprise subscription. Salesforce allows [five active duplicate rules per object](https://help.salesforce.com/s/articleView?id=sales.duplicate_rules_overview.htm&language=en_US&type=5), and it lists its data import tools and APIs among the cases where duplicate rule settings are overridden. So scan for duplicates after every import, not only before it.

### Which record should survive a merge?

Choose the survivor by a written rule, so merges are repeatable. [HubSpot's bulk merge](https://knowledge.hubspot.com/records/manage-duplicate-records) offers five rules: most recent engagement, oldest engagement, created first, created last and most recently updated. Our suggestion: keep the record with the latest engagement or an open deal, fill its blanks from the other record, and prefer a verified email over a catch_all one. Know what a merge does before you run it.

- [HubSpot](https://knowledge.hubspot.com/records/merge-records) keeps the primary record's values, fills blanks from the secondary record, keeps the oldest create date and adds the other email address as a secondary email. The lifecycle stage furthest down the funnel wins. Merged records **cannot be unmerged**.
- Salesforce's [`merge()` call](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_merge.htm) combines up to three records of one type into a main record and deletes the others. Related records move to the main record.

So export both records before you merge. HubSpot also keeps the most marketable marketing contact status when it merges contacts, so check opt-out and consent fields by hand afterward.

## How do you validate contacts and keep them fresh?

Validate in layers, from cheapest to dearest: syntax, domain, mail server, address type, then bounces. Refresh on a calendar and on triggers. Each layer catches a different kind of failure.

| Check | What it catches | What the sources say |
| --- | --- | --- |
| **Syntax** | Typos, spaces, a missing @ | [RFC 5321](https://www.rfc-editor.org/rfc/rfc5321.html) caps a local part at 64 octets and a domain at 255 |
| **Domain and MX** | Misspelled or dead domains | RFC 5321 says a lookup tries MX records first and falls back to the domain's address record. A domain can publish a [null MX](https://www.rfc-editor.org/rfc/rfc7505.html) to say it accepts no mail |
| **Role addresses** | info@, sales@, postmaster@ | [Spamhaus](https://www.spamhaus.org/resource-hub/deliverability/spamtraps-fix-the-problem-not-the-symptom/) says role addresses published in registration records, such as postmaster@ and abuse@, should almost never be on a marketing list |
| **Catch-all** | Domains that accept any address, so the mailbox cannot be confirmed | In [Hunter's test](https://hunter.io/email-verification-guide/accept-all-catch-all/), 100 accept-all addresses bounced at 27% against 1% for 100 valid ones. Hunter suggests keeping them to 2 to 5% of a list. Test a domain with our [catch-all checker](https://enrich.chat/tools/catch-all-checker/) |
| **Bounces** | Addresses that fail at send | Suppress hard bounces at once. [Google](https://support.google.com/a/answer/81126) advises automatically unsubscribing recipients with multiple bounced messages |
| **Phone line type** | Mobile, landline or VoIP | [Twilio's Line Type Intelligence](https://www.twilio.com/docs/lookup/v2-api/line-type-intelligence) identifies the carrier and line type, such as mobile, landline, fixed VoIP and non-fixed VoIP. A type is not consent: see our [TCPA guide](https://enrich.chat/blog/tcpa-b2b-cold-calling/) |

Contact data ages because people change jobs. The [US Bureau of Labor Statistics](https://www.bls.gov/news.release/tenure.nr0.htm) reported that 20.6 percent of wage and salary workers had been with their employer 12 months or less in January 2026, and that median tenure was 4.1 years. That count includes every kind of new hire, so read it as a ceiling on job-to-job moves, not as a decay rate.

We give no single decay rate here, because published figures run from about 12% to 70% depending on what each study counts. Our [B2B data decay guide](https://enrich.chat/blog/b2b-data-decay/) compares them and shows how to measure your own with a 200-record sample.

Refresh by calendar and by trigger. Re-check title and employer every quarter for the accounts you work, and the rest once a year. Re-check early after a hard bounce, an auto-reply saying the person has left, or a campaign about to start. Stamp each refreshed field with a checked date. The [CRM data enrichment](https://enrich.chat/blog/crm-data-enrichment/) guide has field-by-field schedules, and the [email bounce rate](https://enrich.chat/blog/email-bounce-rate/) guide covers hard and soft bounces.

## What must you suppress, delete or keep?

Suppress anyone who opted out or bounced, delete only when a rule or a request requires it, and keep the minimum needed to stop contacting them. This is general information, not legal advice, and no tool makes your outreach compliant.

| Rule | What it asks | Clock |
| --- | --- | --- |
| **[Yahoo](https://senders.yahooinc.com/best-practices/), bulk senders** | Honor unsubscribes. Remove invalid recipients promptly | 2 days |
| **[Google](https://support.google.com/a/answer/14229414), Gmail** | One-click unsubscribe on marketing mail if you send more than 5,000 messages a day. Its FAQ lists unsubscribe requests not honored within 48 hours among the issues that cost a sender delivery support | 48 hours |
| **[CAN-SPAM Act](https://www.ftc.gov/business-guidance/resources/can-spam-act-compliance-guide-business)** | Honor opt-outs. The opt-out must work for 30 days after sending, cost nothing, and you may not sell or transfer opted-out addresses. No exception for B2B email | 10 business days |
| **[GDPR Article 5](https://gdpr-info.eu/art-5-gdpr/)** | Data accurate and kept up to date. Inaccurate data erased or corrected without delay. Kept no longer than necessary | Without delay |
| **[GDPR Article 17](https://gdpr-info.eu/art-17-gdpr/)** | Erasure when data is no longer needed or the person objects to direct marketing. The right is not absolute | One month, per the [ICO](https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/individual-rights/individual-rights/right-to-erasure/) |
| **[CCPA](https://oag.ca.gov/privacy/ccpa)** | Respond to a California resident's request to delete | 45 calendar days |

Use the shortest clock for every list. Yahoo's 2 days and Google's 48 hours are the tightest here, so a process that meets them meets the rest. Every sender and your CRM should read one suppression list. For accuracy, the [ICO says](https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/data-protection-principles/a-guide-to-the-data-protection-principles/accuracy/) to take reasonable steps to correct or erase wrong data and to keep the source and status of each record clear. So store a source and a checked date with every value. The ICO says you can extend an erasure answer by two further months for complex requests, and California allows another 45 days with notice.

### Why suppress instead of delete?

A deleted contact can return on the next import, and then you write to someone who said stop. The [ICO's storage limitation guidance](https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/data-protection-principles/a-guide-to-the-data-protection-principles/storage-limitation/) gives this example: a business told to stop direct marketing should keep enough information to leave that person out of future marketing. France's CNIL calls this a suppression list (*liste repoussoir*). It keeps people who objected out of new lists, even lists from a data broker, and the CNIL recommends [keeping the information at least 3 years](https://www.cnil.fr/fr/comment-utiliser-une-liste-repoussoir-pour-respecter-lopposition-la-prospection-commerciale).

The CNIL adds that you can store only hashes of the email address or phone number, which reduces what you hold. **Hashed data is still personal data**, and two spellings of one value give two different hashes. So lowercase and trim values before you hash them, as the CNIL advises for postal addresses.

### How long should you keep contacts?

No single rule gives one number. The ICO says the UK GDPR [sets no specific time limits](https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/data-protection-principles/a-guide-to-the-data-protection-principles/storage-limitation/). You decide, justify the period, keep a retention policy where possible and review what you hold. It also says not to keep data indefinitely just in case. The ICO marks this guidance as under review because of the Data (Use and Access) Act.

The CNIL gives a concrete benchmark for prospecting in France. Keep [prospect data for 3 years](https://www.cnil.fr/fr/questions-reponses-sur-les-referentiels-relatifs-la-gestion-des-activites-commerciales-et-des) from collection or from the prospect's last contact, such as a click on a link in an email. For customers, keep it during the relationship and for 3 years after. At the end, ask whether the person wants to keep hearing from you, and without a clear yes, delete or archive. This is French regulator guidance, so treat it as a benchmark, not a rule for other countries. Pick a period for each record type, write it down, and let the monthly run flag records past it.

## What should a monthly hygiene report track?

Track five numbers and attach one action to each. Three have published limits. Two are our suggestions. Figure 2 plots the sender limits for bounces and spam complaints.

| Number | How to count it | The line | If it crosses |
| --- | --- | --- | --- |
| **1. Hard bounce rate** | Hard bounces divided by emails sent | Amazon SES: stay under 5%. It reviews at 5% and may pause at 10%. Our action line is 2% | Over 2%: pause that segment and re-verify. At 5%: stop sending |
| **2. Spam complaint rate** | Spam reports divided by delivered mail | Google: under 0.10%, never 0.30%. Yahoo: under 0.3%. Amazon SES: review at 0.1% | At 0.10%: cut volume, drop the least engaged. At 0.30%: stop bulk sends |
| **3. Duplicate rate** | Records in duplicate pairs divided by all records | Our suggestion: under 2% | Over 2% or a jump: find the import or sync that made them |
| **4. Unchecked share** | Worked records with a checked date over 90 days old, divided by worked records | Our suggestion: under 10%. The 90 days follows [Smartlead's advice](https://www.smartlead.ai/blog/cold-email-bounce-rate) to re-verify addresses not checked in that time | Over 10%: re-check the oldest first |
| **5. Opt-out lag** | Days from a request to suppression in every tool | Yahoo: 2 days. Google: 48 hours. CAN-SPAM: 10 business days | Over 2 days: fix the sync between tools |

**Figure 2: Published limits for hard bounce rate and spam complaint rate.** Two scales. Hard bounce rate from 0 to 10 percent, with marks at our 2 percent action line, the 5 percent point where Amazon SES puts an account under review, and the 10 percent point where it may pause sending. Spam complaint rate from 0 to 0.50 percent, with marks at 0.10 percent (Google's target and an Amazon SES review point), 0.30 percent (the level Google says never to reach and Yahoo's limit) and 0.50 percent (where Amazon SES may pause sending).

*Blue is inside the target, light orange is where you act, dark orange is where senders act. Limits from [Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/reputationdashboardmessages.html), [Google](https://support.google.com/a/answer/81126) and [Yahoo](https://senders.yahooinc.com/best-practices/). The 2% bounce line is our suggestion. Google's rules formally apply above 5,000 messages a day to Gmail.*

Your tools hold the numbers. The sending tool reports bounces. Google's Postmaster Tools reports its spam rate, and Yahoo's complaint feedback loop reports complaints. Google's limits formally apply above 5,000 messages a day, and its [FAQ says](https://support.google.com/a/answer/14229414) that from November 2025 it has been ramping up enforcement on senders that miss the requirements. Smaller senders should treat the same numbers as targets.

For duplicates and formats, [HubSpot's data quality tools](https://knowledge.hubspot.com/data-management/use-data-quality-tools) show the change in duplicates and formatting issues over a date range, and they can email a weekly digest. On Data Hub Professional or Enterprise they can also alert you when duplicates pass a daily limit you set. Without such a tool, a monthly CRM report that counts records in duplicate pairs does the same job.

## What does a 30-minute monthly run and a quarterly deep clean look like?

The monthly run is six 5-minute steps. The quarterly clean adds a full re-check of the records you work, a retention pass and a test of your opt-out path.

1. **Pull the five numbers (5 minutes).** Put them beside last month's.
2. **Sync suppression (5).** Export new hard bounces, unsubscribes, complaints and "please stop" replies from every sending tool. Add them to the one list and confirm the CRM shows them.
3. **Clear the duplicate queue (5).** Merge exact email and domain matches. Park the rest for review. Export before you merge.
4. **Fix formats (5).** Accept the format fixes for new records, and read the import log to find the source that made the errors.
5. **Re-check a sample (5).** Take the 25 worked records with the oldest checked date. Compare title, employer and email status, then stamp the checked date. If every lookup matches, that uses 250 credits.
6. **Write the report (5).** Five numbers, five lines, one action each, with an owner and a date.

### What goes in the quarterly deep clean?

- Re-verify every address in send-eligible segments that was not checked in the last 90 days.
- Re-check title and employer for open deals and named accounts. Re-checking 1,000 work emails uses 10,000 credits if every lookup matches, which fits the Growth plan.
- Sample 200 random records to measure your own decay rate.
- Scan all records for duplicates and review your custom match rules.
- Apply the retention schedule: delete or archive records past it. Yahoo also advises sending a reconfirmation email to inactive subscribers from time to time.
- Test the opt-out path. Unsubscribe a test address and time how long it takes to reach every tool.
- Review owners, field definitions and write rules.

### Should you delete, fix or enrich a bad record?

Fix what is visibly wrong, enrich what is blank, suppress what must not be contacted, and delete only under a rule or a request. The table sorts common cases. The actions are our suggestions.

| What you find | Action | Why |
| --- | --- | --- |
| Hard bounce, address does not exist | Suppress the address. Re-find the person | The person may still be reachable at a new employer |
| Wrong case, spacing, country spelling or phone format | Fix | No outside data is needed, and it is safe to bulk apply |
| Same email or same domain as another record | Merge | Export first, because the merge cannot be undone in HubSpot |
| Same name and employer, nothing else | Review | A namesake and a job change can look alike |
| Blank email, title or phone on a worked record | Enrich | Fill blanks only, and store status, source and date |
| Title or employer differs from a new lookup, email verified | Fix after a glance | People change jobs. Keep the old value in history |
| Email is catch_all or unknown, or a role address | Hold | Send a small share, or use another channel |
| Opt-out or objection | Suppress, keep the minimum | Deleting the record could let the person back in |
| No activity and past your retention period | Delete or archive | Storage limitation: do not keep data just in case |
| Valid erasure request | Delete from the CRM, keep a suppression entry | Article 17 applies unless an exception does |

## Which tools help with database hygiene, and what do they cost?

Four tool types cover the jobs: your CRM's own tools, email verifiers, data operations platforms and enrichment APIs. We read each vendor's own page on October 16, 2026. The prices are the list prices shown that day.

| Type | Example | What it does | Price, checked October 16, 2026 |
| --- | --- | --- | --- |
| CRM native | HubSpot duplicates manager and data quality tools | Finds and merges duplicates, fixes formats, sends a digest | No separate price. The duplicates manager [needs a Professional or Enterprise subscription](https://knowledge.hubspot.com/records/manage-duplicate-records), and bulk merge needs Data Hub Professional or Enterprise |
| CRM native | Salesforce duplicate management | Duplicate rules and matching rules | No separate price on its page. [Available in](https://help.salesforce.com/s/articleView?id=sales.duplicate_rules_overview.htm&language=en_US&type=5) Essentials, Professional, Enterprise, Performance, Unlimited and Developer editions |
| Email verifier | ZeroBounce | Checks addresses for validity, catch-all and risk | [Its FAQ](https://www.zerobounce.net/pricing) says the smallest purchase is $39 for 2,000 validations and its ZeroBounce ONE subscription is $99 a month. It charges no credits for unknown results |
| Data ops platform | Insycle | Merge, standardise and monitor across CRMs | [Priced by records, not seats](https://www.insycle.com/pricing/). At 100,000 records: Starter $100 a month billed annually with one module, Growth $150 with two, Professional $200 with all |
| Data ops platform | Cloudingo (Salesforce) | Dedupe, mass merge and scheduled jobs | [Per Salesforce org, billed annually](https://www.cloudingo.com/pricing): Standard $2,500 a year, Professional $6,000 (adds undo and restore merges), Enterprise $10,000 |
| Enrichment API | Apollo | Fills and refreshes contact and company fields | [Basic is $49](https://www.apollo.io/pricing) per seat per month billed annually, with 30,000 credits per seat per year. The free plan has 900 credits per seat per year |
| Enrichment API | Enrich.chat | Looks up a title, an employer and a status for each work email, one lookup at a time | 10 free lookups a day with no signup. Monthly plans: Growth $29 for 100,000 credits, Scale $90 for 500,000 credits, Pro $299 for 2,500,000 credits. A work email found uses 10 credits and a lookup that finds nothing uses 0. See [pricing](https://enrich.chat/pricing/) |

Start with what you already pay for. HubSpot's duplicates manager and Salesforce's duplicate rules have no separate fee, but they have limits: Salesforce's rules are overridden for imports and APIs, and HubSpot's bulk tools need a Data Hub plan. Add a verifier before a large send. Add a data operations platform when you run several systems or want undo and an audit trail: Insycle's plans list an audit trail and history, and Cloudingo's undo and restore merges sits on its Professional plan. Add an enrichment API for blanks and refreshes. Our guides to the [best data enrichment tools](https://enrich.chat/blog/best-data-enrichment-tools/) and [data enrichment platforms](https://enrich.chat/blog/data-enrichment-platforms/) compare that last group, and [waterfall enrichment](https://enrich.chat/blog/waterfall-enrichment/) explains chaining several sources.

## How can an AI agent run the enrichment step with Enrich.chat?

An agent can read a sample of your CRM export, look each row up on Enrich.chat one at a time, and sort it into keep, fix or review before anything is written back. Enrich.chat returns a work email with a status of `verified`, `catch_all` or `unknown`, plus the person's title and company. A status describes a value in Enrich.chat's records. It is not a live check, so treat every contact as a strong lead, not a guarantee.

Setup is one prompt. Your agent reads [agents.md](https://enrich.chat/agents.md) or adds the MCP server (see the [install steps](https://enrich.chat/install/)), and no key is needed to start. The agent sends a LinkedIn URL when a row has one, else the work email, else a name plus company website. Then it compares the title and employer it gets back with your copy.

**Figure 3: An AI agent sorts CRM rows into keep, fix and review.** An agent run on the left: read the export, look up each row one at a time, compare title, employer and email status, sort each row and change nothing. On the right, five sample rows with a result and an action: keep when title and employer match and the email is verified, fix when the title differs, and review when an email is catch_all or unknown or nothing is found.

*An agent hygiene check on a 25-row sample, shown for five rows. The rows and results are made up. The statuses and `found` field follow [Enrich.chat's agents.md](https://enrich.chat/agents.md), and the sort rule is our suggestion.*

Run a pilot first. The prompt below checks 25 rows and changes nothing. If every row matches, it uses 250 credits, and a lookup that finds nothing uses 0. The free tier allows 10 lookups a day with no signup, so a small pilot can cost nothing. Paid plans start at $29 a month for 100,000 credits, with unlimited seats.

```text
Use www.enrich.chat to run a hygiene check on the 25 contacts in my CRM export with the oldest checked date. For each row with a LinkedIn URL, look up the title, company and work email status. Mark a row keep when title and company match my copy and the email is verified, fix when only the title or company differs and the email is verified, and review when the email is catch_all or unknown or nothing is found. Change nothing, and tell me the total credits_used
```

### What Enrich.chat does not do

- It does not dedupe or merge records. Use your CRM's tools or a data operations platform.
- It has no scheduled refresh and sends no job-change alerts. You set the schedule from this page.
- It is not a CRM app and does not sync. The agent or workflow you build writes results back, by your rules.
- It has no list upload or export and no bulk endpoint. It works one lookup at a time, so a list is a loop in a script, n8n or an agent.
- It is not a bulk email verifier. A status comes with each work email it returns, not for addresses from other sources.

Anyone can ask to be removed from Enrich.chat at [enrich.chat/opt-out/](https://enrich.chat/opt-out/), and requests are processed within 15 days. That does not change your CRM or sending tools, so your own opt-outs stay your job. You are responsible for following TCPA, CAN-SPAM and GDPR rules. Accounts are covered by our [terms](https://enrich.chat/terms/).

## Frequently asked questions

### What is database hygiene?

Database hygiene is the routine upkeep of a CRM or contact database so its records stay accurate, unique, reachable and lawful to use. It covers six jobs: standardising formats, removing duplicates, validating emails and phone numbers, refreshing stale fields, suppressing opt-outs and bounces, and monitoring a few numbers each month. It is a schedule, not a one-time project. Our checklist table gives an owner and a cadence for each job.

### How often should you clean a CRM database?

Apply opt-outs and bounces within 2 days, review duplicates and format errors once a month, and re-check the title and employer of accounts you work every quarter. Add a deeper clean each quarter and a retention review each year. These intervals are our suggestion, built from sender and privacy rules, not a standard. Measure your own decay with a 200-record sample, as our [B2B data decay guide](https://enrich.chat/blog/b2b-data-decay/) shows.

### What should a monthly database hygiene report include?

Five numbers: hard bounce rate, spam complaint rate, duplicate rate, the share of worked records not checked in 90 days, and days from an opt-out request to suppression. Give each an action. [Google](https://support.google.com/a/answer/81126) asks for a spam rate under 0.10%, [Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/reputationdashboardmessages.html) reviews accounts at a 5% hard bounce rate, and [Yahoo](https://senders.yahooinc.com/best-practices/) asks for opt-outs within 2 days. The duplicate and 90-day lines are our suggestions.

### How long should you keep contacts in your CRM?

No general rule gives one number. The [UK ICO](https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/data-protection-principles/a-guide-to-the-data-protection-principles/storage-limitation/) says you must justify how long you keep personal data and not hold it indefinitely just in case. France's [CNIL](https://www.cnil.fr/fr/questions-reponses-sur-les-referentiels-relatifs-la-gestion-des-activites-commerciales-et-des) says prospect data may be kept 3 years from collection or the prospect's last contact, then re-asked or deleted. Write a retention schedule and review it yearly. This is not legal advice.

### Should you delete bounced and unsubscribed contacts?

Suppress them instead of deleting them. A suppression list keeps the address, or a hash of it, so a later import cannot add the person again. The ICO's guidance says a business told to stop direct marketing should keep enough information to honor that, and the CNIL recommends keeping opt-out information at least 3 years. Delete the rest of the record if the person asks and no exception applies.

### Can an AI agent help with database hygiene?

An agent can run the read-only checks: look up a sample of records, compare titles and employers, and sort rows into keep, fix and review. Enrich.chat returns a status with each work email, one lookup at a time. It does not dedupe, merge, schedule refreshes or write to a CRM, so your CRM tools do those jobs. The last section has a copyable prompt.

## Sources

1. [Email sender guidelines](https://support.google.com/a/answer/81126)
2. [Email sender guidelines FAQ](https://support.google.com/a/answer/14229414)
3. [Sender best practices](https://senders.yahooinc.com/best-practices/)
4. [Reputation metrics messages](https://docs.aws.amazon.com/ses/latest/dg/reputationdashboardmessages.html)
5. [CAN-SPAM Act: A compliance guide for business](https://www.ftc.gov/business-guidance/resources/can-spam-act-compliance-guide-business)
6. [Principle (d): Accuracy](https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/data-protection-principles/a-guide-to-the-data-protection-principles/accuracy/)
7. [Principle (e): Storage limitation](https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/data-protection-principles/a-guide-to-the-data-protection-principles/storage-limitation/)
8. [Right to erasure](https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/individual-rights/individual-rights/right-to-erasure/)
9. [Article 5, General Data Protection Regulation](https://gdpr-info.eu/art-5-gdpr/)
10. [Article 17, General Data Protection Regulation](https://gdpr-info.eu/art-17-gdpr/)
11. [California Consumer Privacy Act (CCPA)](https://oag.ca.gov/privacy/ccpa)
12. [Questions-réponses sur les référentiels relatifs à la gestion des activités commerciales](https://www.cnil.fr/fr/questions-reponses-sur-les-referentiels-relatifs-la-gestion-des-activites-commerciales-et-des)
13. [Comment utiliser une liste repoussoir pour respecter l'opposition à la prospection ?](https://www.cnil.fr/fr/comment-utiliser-une-liste-repoussoir-pour-respecter-lopposition-la-prospection-commerciale)
14. [Employee Tenure in 2026](https://www.bls.gov/news.release/tenure.nr0.htm)
15. [Deduplicate records in HubSpot](https://knowledge.hubspot.com/records/deduplication-of-records)
16. [Review and manage duplicate records](https://knowledge.hubspot.com/records/manage-duplicate-records)
17. [Merge records](https://knowledge.hubspot.com/records/merge-records)
18. [Use data quality tools](https://knowledge.hubspot.com/data-management/use-data-quality-tools)
19. [Manage contact property formatting issues](https://knowledge.hubspot.com/records/manage-property-format-issues)
20. [Set up phone number property validation](https://knowledge.hubspot.com/properties/phone-number-property-validation)
21. [Things to Know About Duplicate Rules](https://help.salesforce.com/s/articleView?id=sales.duplicate_rules_overview.htm&language=en_US&type=5)
22. [merge() | SOAP API Developer Guide](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_merge.htm)
23. [What is E.164?](https://www.twilio.com/docs/glossary/what-e164)
24. [Line Type Intelligence](https://www.twilio.com/docs/lookup/v2-api/line-type-intelligence)
25. [RFC 5321: Simple Mail Transfer Protocol](https://www.rfc-editor.org/rfc/rfc5321.html)
26. [RFC 7505: A "Null MX" No Service Resource Record for Domains That Accept No Mail](https://www.rfc-editor.org/rfc/rfc7505.html)
27. [Spamtraps: fix the problem, not the symptom](https://www.spamhaus.org/resource-hub/deliverability/spamtraps-fix-the-problem-not-the-symptom/)
28. [What are accept-all email addresses, and how to use them](https://hunter.io/email-verification-guide/accept-all-catch-all/)
29. [Cold email bounce rate: what's good and how to fix it](https://www.smartlead.ai/blog/cold-email-bounce-rate)
30. [Email validation pricing](https://www.zerobounce.net/pricing)
31. [Insycle pricing](https://www.insycle.com/pricing/)
32. [Cloudingo pricing for Salesforce](https://www.cloudingo.com/pricing)
33. [Apollo.io pricing](https://www.apollo.io/pricing)

## Try this prompt

Run a hygiene check on 25 CRM rows

```text
Use www.enrich.chat to run a hygiene check on the 25 contacts in my CRM export with the oldest checked date. For each row with a LinkedIn URL, look up the title, company and work email status. Mark a row keep when title and company match my copy and the email is verified, fix when only the title or company differs and the email is verified, and review when the email is catch_all or unknown or nothing is found. Change nothing, and tell me the total credits_used
```

## Related

- [CRM data enrichment: what, how often, how](https://enrich.chat/blog/crm-data-enrichment/)
- [How fast B2B contact data goes bad](https://enrich.chat/blog/b2b-data-decay/)
- [Email bounce rate: what is good](https://enrich.chat/blog/email-bounce-rate/)
