Contact databases don't break all at once. They rot incrementally—a duplicate record here, a missing tax ID there, a deal orphaned when someone left the company. Six months in, your database looks clean to the naked eye but is full of ghost data that silently breaks forecasts, invoice runs, and compliance audits. We audited contact databases in Notion and HubSpot for teams managing 500+ contacts and found five repeating decay patterns. Each one costs you differently: wasted rep time, failed tax submissions, forecasting noise, or silent deal leakage. This guide walks you through how to find them and what to repair first. Pattern 1: Duplicate merges that create orphaned phone and tax fields When you merge two contact records in HubSpot or Notion, the system typically picks a "primary" record and discards the other. But it rarely merges the fields cleanly. A phone number from the discarded record vanishes. A tax ID field from one disappears while the other stays empty. Six months later, you're running an invoice batch and discover 8–12% of contacts have no tax ID on file. The pattern emerges most in teams with high contact turnover or where reps add records without checking for duplicates first. A contact signed up via your website form, then sales added them manually. Now you have two records for the same person with split data. How to spot it: Export your contact list and look for records with the same email or phone number. Then cross-check for empty critical fields (tax ID, billing address, phone). In HubSpot, run a report grouped by email and filter for count > 1. In Notion, use a formula to flag duplicates and then manually review the field completeness of each pair. What to repair first: Consolidate all duplicates into a single record and use a merge field strategy: if field A is empty, copy from the duplicate record before deletion. For tax IDs and phone numbers especially, do not discard them. If you're missing a tax ID, mark it as "needs verification" so billing doesn't treat it as a real field and send an incomplete invoice. Pattern 2: Orphaned deals that never got reassigned when someone left A sales rep leaves your company. Their deals should be reassigned to a manager or peer. But in practice, you mark the rep as "inactive" and leave the deals as-is. Three months later, a prospect re-engages and sends an email. The deal is still owned by someone who no longer works there. The email bounces off an inactive mailbox, or a colleague forwards it to the current rep, and now you have two deal threads on the same prospect. This pattern is especially common in teams using Notion or HubSpot without strong offboarding automation. A rep's departure doesn't trigger a deal reassignment workflow. How to spot it: Filter your CRM for deals owned by inactive users. In HubSpot, create a report that shows deal owner status and filter where status = "inactive". In Notion, add a formula that checks if the owner's status is "inactive" and flags those deals. What to repair first: Reassign all orphaned deals to a manager or a designated owner, then send a note to the prospect acknowledging the transition. Automate this on future departures: build a workflow that, when a user is marked inactive, creates a queue of their deals for reassignment within 24 hours. Pattern 3: Missing or outdated phone numbers that break outbound campaigns Phone data decays faster than email. A rep adds a contact with a mobile number in October. By February, the contact changed jobs and changed their number. But the contact record still shows the old number. You launch an outbound SMS campaign and 12–18% of the messages bounce or go to the wrong person. The decay accelerates when phone fields are optional on your intake forms. A web form captures email but leaves phone blank. Sales reps manually add phone numbers inconsistently—sometimes with country codes, sometimes without. Sometimes with dashes, sometimes not. Three reps add numbers for the same contact in different formats, and now your SMS API rejects the call because it can't parse the number. How to spot it: Export phone numbers and run them through a validation tool. Flag records where the phone field is empty, has invalid formatting (e.g., missing country codes for international contacts), or has not been verified or updated in the last 90 days. In HubSpot, create a custom field for "last phone verified date" and filter for records older than 90 days or empty. What to repair first: Standardize phone formatting: all numbers should include country code, no dashes, just digits. Then run a validation API against your entire database and mark records as "unverified". When you send SMS or make calls, require one successful contact before you trust the number for future campaigns. For web intake, make phone required and validate format at submission. Pattern 4: Tax ID fields that are empty, wrong format, or never validated B2B invoicing requires valid tax IDs (VAT numbers, GST, business regist