Large HubSpot databases accumulated over time through ad-hoc list imports tend to suffer from poor categorization, stale contact information, and unverified email addresses. Left unaddressed, this degrades outreach effectiveness and risks sender reputation. This article documents the strategy developed at Asymmetric to clean, enrich, and re-import a 40k+ contact database.
Source: Discussed in a sales standup between Mark Hope and Jacob Jones. See [1] for full context.
A HubSpot database that grows through opportunistic list imports will typically exhibit:
In the Asymmetric case, ~40,000 contacts were present in HubSpot, with ~28,000 sitting in the Lead stage alone, most lacking sufficient data to qualify or disqualify them.
Export all contacts from HubSpot as a CSV. This becomes the working dataset for enrichment and verification.
Run the exported list through an enrichment tool (e.g., [2]) to:
Re-import the enriched data back into HubSpot, mapping fields carefully to avoid overwriting good data with blanks.
Email verification must happen before any outreach to protect sender reputation.
| Contact Type | Verification Method |
|---|---|
| Existing contacts (already in HubSpot) | Export and run through [3] |
| New contacts (being imported for the first time) | Verify via Clay's built-in email verification during the import workflow |
Remove or suppress any contacts whose emails are flagged as invalid, catch-all, or high-risk.
After enrichment and verification, re-import the cleaned dataset. Use HubSpot's deduplication and update logic to merge enriched fields with existing records.
A clear, shared definition of lifecycle stages is essential for the cleanup to be meaningful. The following definitions were aligned on as part of this initiative:
| Stage | Definition |
|---|---|
| Subscriber | Newsletter opt-in only; minimal profile information known. |
| Lead | Email is known; missing key fields (title, company, phone, LinkedIn). Needs enrichment or removal. |
| MQL | Email, phone, and LinkedIn are known; no direct conversation has confirmed need or fit. |
| SQL | All four BANT criteria confirmed (see below). |
| Opportunity | Actively working toward a close. |
| Customer | Deal closed. |
| Churn | Former customer; no longer active. Added as a custom lifecycle stage. |
Note: HubSpot now allows lifecycle stages to move backwards and supports custom stages via the "Manage Your Lifecycle Stages" interface. The Churn stage was added to handle former customers who would otherwise remain incorrectly tagged as Customer.
The goal for the Lead pool is to convert or remove — enrich records that can be upgraded to MQL, and suppress or delete those that cannot.
To create an objective, automatable standard for SQL promotion, add four custom checkbox fields to the HubSpot Contact object:
When all four boxes are checked, a HubSpot workflow can automatically promote the contact to SQL lifecycle stage, removing manual overhead and ensuring consistency.
See [4] for the full lifecycle and BANT field configuration guide.