# HubSpot Email Verification & Enrichment — Ravn

Canonical: https://askravn.com/integrations/hubspot

Integrations · HubSpot

# Clean HubSpot contacts with Ravn

Export your HubSpot contacts to CSV, run npx ravn enrich over the email column, and import the file back matched on email to update the records. If you use Claude with a HubSpot connector, adding Ravn lets Claude do the same job by conversation.
[Start free: 1,000 lookups](https://askravn.com/#start) [Read the docs](https://askravn.com/docs)

Setup
## The export, enrich, import loop
Ravn has no native HubSpot app. This loop uses HubSpot’s own export and import, so nothing gets write access to your CRM.
- / 01
### Create the properties first
In HubSpot settings, create contact properties to receive the results, for example Email status and Email risk score (single-line text works).
- / 02
### Export contacts
From the contacts view, filter to the records you want (for example, never emailed) and export as CSV. Include the Email column.
- / 03
### Dry-run, then enrich
Run the commands below. `--dry-run` shows how many rows and what it will cost before anything is spent.
- / 04
### Import back
Import the `.enriched.csv` as contacts, choose to update existing records matched on Email, and map `rw_verdict` and `rw_risk_score` to your new properties.
- / 05
### Act on it
Build an active list where Email status is `invalid` and exclude it from marketing sends.
Commands
## Enrich the HubSpot export
Column names must match your export exactly; HubSpot exports usually call it “Email”.
```
npx ravn login

# How many rows, and what will it cost?
npx ravn enrich hubspot-contacts.csv --tool validate_email --column Email --dry-run

# Run it. Writes hubspot-contacts.enriched.csv with rw_* columns added
npx ravn enrich hubspot-contacts.csv --tool validate_email --column Email

# Contacts with a name and company website but no email
npx ravn enrich no-email.csv --tool search_business_email_by_name \
--map name="Full Name",company="Company Domain Name" --out found.csv
```

With Claude
## The conversational route
If you have a HubSpot connector added in Claude, also add [Ravn as a connector](https://askravn.com/integrations/claude). Then ask, for example: “Pull the 50 newest contacts in HubSpot, verify their emails with Ravn, and set the Email status property on each.”
Claude reads from HubSpot through its connector, calls `validate_emails` on Ravn, and writes back through the HubSpot connector. Ravn itself never touches your CRM. This suits small batches; for thousands of contacts the CSV loop is quicker to check and cheaper in tokens.
The same idea finds missing emails with [the email finder](https://askravn.com/features/email-finder-api) (our own check) or adds firmographics with [company enrichment](https://askravn.com/features/company-enrichment-api), which runs on your own provider key.
FAQ
## Common questions.
[All questions →](https://askravn.com/faq)Will the import overwrite my contact owners or other fields?Only the columns you map in the import are written. Map the `rw_*` columns to your new properties and leave the original columns unmapped or skipped.Should I delete contacts marked invalid?Exclude them from sends first and review. An `invalid` verdict with reason `mailbox_not_found` or `no_mx` is strong; `risky` on a catch-all domain is not proof the address is dead.Is there a Ravn app in the HubSpot marketplace?No. The CSV loop and the Claude route are the supported ways today, and both keep CRM write access with you.What if the enrich run stops halfway?It saves progress every 25 rows. Run the same command again and it picks up where it left off; add `--restart` only if you want to start over.

## More in [integrations](https://askravn.com/integrations)
Every page uses the same account, plan and tools. [See pricing →](https://askravn.com/pricing)
- [JavaScript & Node.js Email Verification APICall Ravn from Node with built-in fetch: a small typed-free client that branches on status, waits on 429 Retry-After and throws clear error codes..](https://askravn.com/integrations/javascript)
- [Make.com Email Verification & EnrichmentCall Ravn from a Make scenario with the HTTP app’s Make a request module: JSON body, Bearer header, parsed response you can map and filter..](https://askravn.com/integrations/make)
- [n8n Email Verification & EnrichmentUse the n8n HTTP Request node with Header Auth to verify emails, find work addresses and enrich companies with Ravn inside any n8n workflow..](https://askravn.com/integrations/n8n)
- [Python Email Verification API ClientCall Ravn from Python with requests: one POST per tool, branch on status, retry 429 using Retry-After, and turn error codes into clear exceptions..](https://askravn.com/integrations/python)
- [Zapier Email Verification WebhookVerify and enrich emails in a Zap with the Webhooks by Zapier POST action and a Filter on the result, on Zapier plans that include Webhooks..](https://askravn.com/integrations/zapier)
- [Attio Contact Enrichment & VerificationVerify emails and fill work addresses for Attio people records: export a list to CSV, enrich with the Ravn CLI, and import the columns back..](https://askravn.com/integrations/attio)
