# How to Clean HubSpot Contacts: Verify, Segment, Suppress

URL: https://email-validation.org/guides/clean-email-list-hubspot/
Updated: 2026-11-06

> Documentation index: https://email-validation.org/llms.txt

To clean HubSpot contacts, verify their addresses, store each result in a contact property, and build active segments
on that property: one to suppress, one to send to with care, one to check again. HubSpot already stops mailing
addresses that hard bounce and holds back contacts who ignore your emails, but both happen only after you have sent.
You can verify an exported file in bulk, or let a HubSpot workflow check each contact as it enrolls (our
[custom code recipe](https://email-validation.org/docs/guides/hubspot/)). Then set the contacts you will never mail as non-marketing, or delete
them, keeping in mind how each choice affects billing.

## What HubSpot already does

### Bounces

HubSpot's [email bounce types](https://knowledge.hubspot.com/marketing-email/what-is-the-difference-between-a-hard-bounce-and-a-soft-bounce)
article describes four kinds:

- **Hard bounce:** usually a permanent error, sometimes a strict security filter. HubSpot excludes the contact from
  future marketing emails.
- **Soft bounce:** a temporary problem. The contact stays eligible for future emails.
- **Pending bounce:** HubSpot keeps trying for up to 72 hours, after which the message counts as a soft bounce.
- **Global bounce:** a hard bounce for a permanent reason in three or more HubSpot accounts. The address is dropped
  from future emails in every account.

The contact property **Email hard bounce reason** shows why a contact hard bounced. It stays empty for a global
bounce that never bounced in your own account. Another HubSpot article notes that globally bounced contacts do not
show up in segments or filters of hard bounced contacts
([HubSpot: Delete contacts who no longer receive your marketing emails](https://knowledge.hubspot.com/marketing-email/how-can-i-delete-contacts-who-have-unsubscribed-or-hard-bounce)).

Bounces also count toward HubSpot's limits. Its
[sending suspensions](https://knowledge.hubspot.com/marketing-email/why-is-my-email-suspended) article lists a hard
bounce rate of 5% and a spam report rate of 0.1% within a month among the levels that can suspend your marketing
email. How these rates compare with other senders'
figures is in [bounce rate benchmarks](https://email-validation.org/guides/email-bounce-rate-benchmarks/).

### Graymail suppression

HubSpot defines graymail as email that contacts opted in to but do not open or click. The setting **Don't send to
unengaged contacts** is on by default and skips a contact who never engaged and ignored your last 11 emails, or who
engaged before and ignored the last 16
([HubSpot: Understand graymail](https://knowledge.hubspot.com/marketing-email/what-is-graymail-and-how-can-i-avoid-sending-my-email-to-unengaged-contacts)).
Skipped contacts appear under Not Sent with the reason Unengaged.

Graymail suppression is about engagement. It cannot tell you that an address you have never mailed will bounce, and
it needs a long run of ignored emails before it acts. Verification answers the other question: can mail to this
address arrive at all?

## Marketing and non-marketing contacts

On Marketing Hub, only marketing contacts are billed, and they count toward your contact tier
([HubSpot: Understand marketing contacts billing](https://knowledge.hubspot.com/account/understand-marketing-contacts-billing)).
You pay only for the contacts you want to market to; others, such as existing customers you do not plan to engage
with through marketing tools, can be set as non-marketing
([HubSpot: Set contacts as marketing](https://knowledge.hubspot.com/records/set-contacts-as-marketing)). Two billing
rules shape your cleanup:

- Setting a marketing contact to non-marketing takes effect on the next update date: your monthly renewal date on a
  monthly subscription, the first of each month on a yearly one.
- HubSpot does not downgrade contact tiers mid-term. Removing marketing contacts frees room in your tier, but the
  tier itself changes only at renewal.

## Two ways to verify

| | Export and bulk list | Custom code workflow |
|---|---|---|
| Best for | A one-time cleanup of the whole database | New contacts, and re-checks over time |
| HubSpot plan | Any plan that can export and import contacts | Data Hub Professional or Enterprise |
| How results arrive | You import the result file | The workflow writes the property |

Many teams do both: a bulk cleanup once, then the workflow for every contact created after it. The workflow recipe,
with the script and its settings, is in our [HubSpot custom code guide](https://email-validation.org/docs/guides/hubspot/).

## Step 1: Create properties for the results

Create two **single-line text** contact properties, for example *Email validation status* and *Email validation
action*. HubSpot's [create and edit properties](https://knowledge.hubspot.com/properties/create-and-edit-properties)
article gives the path: the **settings icon**, then **Properties**, **Select an object**, **Contact properties**, and
**Create property**. Enter the label, pick the field type, and save. You cannot edit a property's internal name later,
so choose the label with care.

The status property holds one of the five [statuses](https://email-validation.org/docs/statuses/): `valid`, `invalid`, `catch_all`, `unknown` or
`disposable`. The action property holds `send`, `send_with_caution`, `remove` or `retry_later`. Build your segments on
the action: spam traps and frequent complainers are `valid`, because their mailbox accepts mail, yet their action is
`remove` ([spam traps](https://email-validation.org/guides/spam-traps/)).

## Step 2: Export and verify

Following HubSpot's [export records](https://knowledge.hubspot.com/import-and-export/export-records) article:

1. Go to **CRM**, then **Contacts**, and open the view you want to check, or **All contacts**.
2. Click **Export**, choose the file format, and name the export.
3. Under **Customize**, choose to include all properties: **Record ID** is then the first column, and it is the
   safest key for the import back.
4. Click **Export**. HubSpot emails a download link that expires after 30 days.

Upload the file as a [bulk list](https://email-validation.org/docs/bulk/) and pick the email column. Duplicates, malformed addresses and `unknown`
results cost nothing. When the list is done, [download the results](https://email-validation.org/docs/bulk/#download) with your original
columns: Record ID stays in each row, followed by our columns, including `ev_status`, `ev_reason` and `ev_action`.

## Step 3: Import the results

HubSpot's [import records for a single object](https://knowledge.hubspot.com/import-and-export/import-records-for-a-single-object)
article describes an update-only import:

1. Start an import (the **Import** button on the contacts index page), click **Import data**, then **Advanced
   imports (all objects)**, and select **Contacts**.
2. Under **Choose how to import contacts**, select **Update existing contacts only**, so no new contacts are created.
3. Map the Record ID column to **Record ID** as the unique identifier (or the email column to **Email**).
4. Map `ev_status` to *Email validation status* and `ev_action` to *Email validation action*. Set every other column to
   **Don't import column**, so the import cannot overwrite data you did not mean to touch.
5. Name the import, tick the consent checkbox, and click **Finish import**.

## Step 4: Build active segments by action

An active segment adds and drops contacts by itself as their properties change
([HubSpot: Create segments](https://knowledge.hubspot.com/segments/create-active-or-static-lists)). Go to **CRM**,
**Segments**, **Create segment**, **Manually**, choose **Contacts**, then **+ Add filter**, the **Properties**
category, and your action property. Pick an operator such as "is equal to", enter the value, choose **Active** as the
segment type, and click **Save and process segment**. Make three:

| Segment | Filter on the action property | What to do with it |
|---|---|---|
| Do not mail | `remove` | Suppress now, then set as non-marketing or delete (Step 5). |
| Send with care | `send_with_caution` | Mostly [catch-all addresses](https://email-validation.org/guides/catch-all-emails/), plus role and low-engagement addresses. Send only what matters, and watch bounces and complaints. |
| Check again | `retry_later` | `unknown` results. Leave them out of large sends and verify again in a few days. |

Add the "Do not mail" segment to the **Don't send to** recipients of every marketing email, as HubSpot's
[contact cleanup](https://knowledge.hubspot.com/marketing-email/how-to-clean-up-your-contact-lists-to-improve-deliverability)
article suggests for unengaged segments. Because the segment is active, a contact whose address changes and is
checked again moves to the right segment by itself.

An `invalid` result with the reason [`likely_typo`](https://email-validation.org/docs/statuses/invalid/#likely_typo) may carry a
`did_you_mean` suggestion. Ask the person to confirm a corrected address rather than changing it yourself
([email typos](https://email-validation.org/guides/email-typos/)).

## Step 5: Set as non-marketing, or delete

**Set as non-marketing** if you want to keep the record for sales or service. From the contacts index page, select
the contacts, open **More**, and choose **Set as non-marketing contacts**. For a whole segment, use **Account &
Billing**, **Marketing Contacts**, **Clean up contacts**, and pick the segment under segment membership. A workflow
with the action **Set marketing contact status** can do it too, on Professional or Enterprise
([HubSpot: Set contacts as non-marketing](https://knowledge.hubspot.com/records/set-contacts-as-non-marketing)).
Keep the segment in **Don't send to** as well.

**Delete** if the record has no other use. A normal delete is restorable for 90 days. If the same address is created
or imported again, HubSpot restores its bounces, spam reports, unsubscribes and subscriptions. A permanent delete
cannot be undone, and when that address returns, its unsubscribes are not restored
([HubSpot: Restorable and permanent contact deletions](https://knowledge.hubspot.com/privacy-and-consent/understand-restorable-and-permanent-contact-deletions)).
Use permanent deletes for privacy requests, not for list cleaning, so an unsubscribe is never lost.

Neither choice lowers your tier before renewal, as the billing rules above explain.

## Step 6: Re-check on a schedule

- **New contacts:** enroll them in the [custom code workflow](https://email-validation.org/docs/guides/hubspot/) when they are created, so each is
  checked once at the start. In its **Edit record** step, set *Email validation action* from the code's `action`
  output as well as the status from `status`, so the segments in Step 4 pick the contact up. A check at the [signup form](https://email-validation.org/docs/guides/signup-form-validation/) stops a typo before
  it becomes a contact.
- **The "Check again" segment:** re-enroll or re-export it a few days later; many `unknown` results become definite on
  a second try.
- **Before a large or unusual send,** and before mailing any segment you have not mailed for a few months, verify it
  again ([list cleaning](https://email-validation.org/guides/email-list-cleaning/#repeat)).

Verification does not replace engagement rules. HubSpot's cleanup article suggests a segment of contacts who
have never opened a marketing email, a re-engagement campaign for them, and then adding that segment to **Don't send
to** ([re-engagement and sunset policy](https://email-validation.org/guides/re-engagement-sunset-policy/)).

## Questions

### Does setting contacts to non-marketing lower my HubSpot bill at once?

No. The change takes effect on the next update date, and HubSpot does not downgrade a contact tier mid-term. Fewer
marketing contacts help at your next renewal, and keep you from moving up a tier before it.

### Does graymail suppression make verification unnecessary?

No. It skips contacts after a long run of ignored emails, but it does not know whether an address you have not yet
mailed exists. Verification answers that before the first send.

### Should I delete contacts that hard bounced?

HubSpot already excludes them from marketing email, so deleting is optional. If the address is ever created again,
HubSpot restores its bounce after either kind of delete, but only a restorable delete also brings back its
unsubscribes.

## Try it

Check your HubSpot export with [bulk email verification](https://email-validation.org/bulk-email-verification/), or try one address in the free
[email checker](https://email-validation.org/email-checker/).

## Related

- [HubSpot custom code workflow](https://email-validation.org/docs/guides/hubspot/) and the [HubSpot integration](https://email-validation.org/integrations/hubspot/).
- [Bulk lists and their result columns](https://email-validation.org/docs/bulk/).
- [Statuses, reasons and actions](https://email-validation.org/docs/statuses/#actions).
- [Glossary: hard bounce](https://email-validation.org/glossary/#hard-bounce) and [suppression list](https://email-validation.org/glossary/#suppression-list).

## Related guides

- [How to clean an email list](https://email-validation.org/guides/email-list-cleaning/)
- [How to clean a Mailchimp audience](https://email-validation.org/guides/clean-email-list-mailchimp/)
- [Re-engagement campaigns and sunset policies](https://email-validation.org/guides/re-engagement-sunset-policy/)
- [Email bounce rate benchmarks](https://email-validation.org/guides/email-bounce-rate-benchmarks/)
- [Reduce your email bounce rate](https://email-validation.org/guides/reduce-email-bounce-rate/)
- [All guides](https://email-validation.org/guides/)

## Sources

- [HubSpot: Email bounce types](https://knowledge.hubspot.com/marketing-email/what-is-the-difference-between-a-hard-bounce-and-a-soft-bounce):
  hard, soft, pending and global bounces, Email hard bounce reason.
- [HubSpot: Delete contacts who no longer receive your marketing emails](https://knowledge.hubspot.com/marketing-email/how-can-i-delete-contacts-who-have-unsubscribed-or-hard-bounce):
  hard bounce segments, global bounces.
- [HubSpot: Resolve email sending suspensions](https://knowledge.hubspot.com/marketing-email/why-is-my-email-suspended):
  monthly bounce and spam report limits.
- [HubSpot: Understand graymail](https://knowledge.hubspot.com/marketing-email/what-is-graymail-and-how-can-i-avoid-sending-my-email-to-unengaged-contacts):
  the unengaged contact rules and default setting.
- [HubSpot: Understand marketing contacts billing](https://knowledge.hubspot.com/account/understand-marketing-contacts-billing):
  update dates, no mid-term downgrades.
- [HubSpot: Set contacts as marketing](https://knowledge.hubspot.com/records/set-contacts-as-marketing): marketing vs
  non-marketing contacts.
- [HubSpot: Set contacts as non-marketing](https://knowledge.hubspot.com/records/set-contacts-as-non-marketing): bulk
  steps, Clean up contacts, workflow action.
- [HubSpot: Create and edit properties](https://knowledge.hubspot.com/properties/create-and-edit-properties): custom
  contact property steps.
- [HubSpot: Export records](https://knowledge.hubspot.com/import-and-export/export-records): export steps, Record ID,
  download link.
- [HubSpot: Import records for a single object](https://knowledge.hubspot.com/import-and-export/import-records-for-a-single-object):
  update-only import and mapping.
- [HubSpot: Create segments](https://knowledge.hubspot.com/segments/create-active-or-static-lists): active segments
  and filters.
- [HubSpot: Clean up contacts to improve email deliverability](https://knowledge.hubspot.com/marketing-email/how-to-clean-up-your-contact-lists-to-improve-deliverability):
  Don't send to, engagement review.
- [HubSpot: Restorable and permanent contact deletions](https://knowledge.hubspot.com/privacy-and-consent/understand-restorable-and-permanent-contact-deletions):
  what returns when a deleted address is re-created.

## Get up to 500 free credits. No card needed.

New accounts get 500 free credits (100 when you sign up with a free email provider such as Gmail, Outlook or Yahoo, or another personal mailbox such as a paid one like Fastmail or one from your internet provider). Try it on your own list before you buy. [Create your account](https://email-validation.org/signin/?new=1) or [open the free email checker](https://email-validation.org/email-checker/).
