Verify HubSpot Contacts and Tag Bad Emails With an sv_status Property
To verify HubSpot contacts and tag bad emails, connect a HubSpot private app token on SimpleVerifier's Integrations page (/connect), pick a list or segment and press Verify leads. Each checked contact gets an sv_status contact property set to valid, risky or invalid. You can then filter, report and suppress on that property inside HubSpot. Archiving invalid contacts is available but off by default.
Step 1: create a HubSpot private app
In HubSpot, open Settings > Integrations > Private Apps, create a private app and copy its access token (it starts with pat-). Give it only the scopes you need:
| You want to | Scopes |
|---|---|
| Read lists, segments and contacts | crm.lists.read, crm.objects.contacts.read |
Create and set the sv_status property |
crm.objects.contacts.write, crm.schemas.contacts.read, crm.schemas.contacts.write |
| Archive invalid contacts | crm.objects.contacts.write |
HubSpot's lists API guide explains lists and segments.
Step 2: connect and pick a list or segment
Paste the token on Integrations and pick a list or segment. The confirm screen shows how many checks the run uses before it starts: one per distinct address, from free checks or your plan. Every HubSpot endpoint used is listed on the HubSpot integration page.
Step 3: the sv_status property
The default write-back is Set the sv_status contact property. If the property does not exist yet, ticking it lets us create it as a single-line text property. Nothing is archived or removed.
| sv_status | Meaning | What to do in HubSpot |
|---|---|---|
| valid | The mail server confirmed the mailbox | Keep sending |
| risky | The domain takes mail but the mailbox could not be confirmed (catch-all, role address, a server that would not confirm) | Send in a small tested batch, or hold back from cold sequences |
| invalid | The address will bounce | Suppress from sequences and marketing emails |
Risky is never upgraded to valid. A catch-all domain accepts every address, so no check can confirm a single mailbox there. Our catch-all scoring page shows how those rows are ranked.
Step 4: use sv_status in HubSpot
Once the property exists, HubSpot's own tools do the rest:
- A saved view. Filter contacts where
sv_statusisinvalidto see what would bounce. - An active list. Build a list of
sv_statusisinvalidand use it as an exclusion list on marketing emails. - Before sequences. Filter out invalid and decide on risky before enrolling. Our guide on verifying new HubSpot contacts with a workflow covers the automation side.
Optional: archive invalid contacts
Archive invalid contacts is off until you tick it, and the confirm screen asks again. HubSpot moves archived contacts to its recycle bin, where they can be restored for 90 days. They leave every list, not only the one you picked. If you are unsure, tag first, look at the invalid list, then archive.
Speed
HubSpot allows private apps 100 API calls per 10 seconds on Free and Starter and 190 on Professional and Enterprise. The integration paces at about 90 and writes in batches of 100 contacts, so pulling and tagging a 10,000-contact list takes a few minutes on top of the checks.
Run 100 free checks on a small HubSpot list first to see how sv_status lands on your contacts.
Related
For the manual route through exports, see cleaning bounced and invalid contacts in HubSpot. On paid plans, Auto-verify new leads daily checks only contacts it has not seen in the list, once a day; see pricing.
Common questions
How do I verify HubSpot contacts without exporting?
Create a HubSpot private app with the scopes below, paste its access token on SimpleVerifier's Integrations page, pick a list or segment and press Verify leads. The result is written to each contact's sv_status property.
Which HubSpot scopes does the private app need?
Reading needs crm.lists.read and crm.objects.contacts.read. Tagging also needs crm.objects.contacts.write, crm.schemas.contacts.read and crm.schemas.contacts.write, so the sv_status property can be created. Archiving needs crm.objects.contacts.write.
What does sv_status contain?
One of three values: valid (the mail server confirmed the mailbox), risky (the domain takes mail but the mailbox could not be confirmed, for example a catch-all) or invalid (the address will bounce).
Will it delete my HubSpot contacts?
Not by default. Archiving invalid contacts is a separate option that is off until you tick it. Archived contacts go to HubSpot's recycle bin, where they can be restored for 90 days.
How long does a large HubSpot list take?
HubSpot allows private apps 100 API calls per 10 seconds on Free and Starter and 190 on Professional and Enterprise. The integration paces at about 90 and writes in batches of 100 contacts, so a 10,000-contact list takes a few minutes to pull and to tag, plus the checking time.
Check your list before you send
Real mailbox checks over SMTP, and nothing is sent to the address. Sign in with Google and your first 100 email checks are free, no card. Plans for bigger lists are on the pricing page.