---
title: "HubSpot data enrichment with Leadsets: skills and API"
description: "Use Leadsets with HubSpot through free skills and the REST API: backfill verified emails, fill company fields and flag stale records. Setup, limits, caveats."
canonical: https://www.leadsets.ai/integrations/hubspot
updated: 2026-11-09
---

# HubSpot data enrichment with Leadsets

Leadsets works with HubSpot through free skills and its REST API, not a separately described HubSpot app. An AI agent or workflow can backfill missing or bounced contact emails with verified addresses, fill empty company industry, size and location fields, and flag stale titles. Paid plans are flat monthly from $29, with 1,000 free records to start and no phone numbers.

## What Leadsets does with HubSpot

HubSpot is a customer relationship management (CRM) platform. The Leadsets [integrations page](https://www.leadsets.ai/integrations) lists HubSpot as **Skills + API**: an agent uses free, open-source GTM skills and the Leadsets REST API to backfill missing emails, enrich companies and flag stale records. The same approach covers Salesforce, Pipedrive and Attio.

The skills library lists 11 skills that use the HubSpot connection. The ones built for CRM hygiene and research include:

- **HubSpot email backfill:** finds contacts with missing or bounced emails and writes verified addresses back. Uses `enrich_person` and `verify_email`.
- **HubSpot company enrichment:** fills empty industry, size and location fields on HubSpot companies. Uses `enrich_company`.
- **Stale record audit:** flags contacts whose title or company is out of date before reps waste a sequence on them. Uses `enrich_person`.
- **Job-change detector:** re-checks a contact list and flags everyone who changed role or company.
- **Find decision-makers at a company** and **Account tiering:** turn a domain into ranked buyers, or score accounts against your ICP and sort them into tiers with reasons.

Every skill and the tools it calls are in the [full skills list](https://www.leadsets.ai/skills/all).

## How to connect it

The Leadsets site does not publish HubSpot-specific setup steps, and it does not describe any settings inside HubSpot. The steps below are the generic MCP, REST, skill and CSV setup from the Leadsets docs. How your agent or workflow reads and writes HubSpot records depends on the access you already give it; the site does not document that part.

1. **Get a key.** Create a free Leadsets account and copy your key from the dashboard. Keys start with `ls_live_` and should be kept server-side.
2. **Connect your agent over MCP.** In Claude on the web or desktop: Customize, Connectors, + Add, Add custom connector, name it Leadsets, paste `https://mcp.leadsets.ai`, then Continue, Sign in now, Add. It uses OAuth, so there is no key to paste. In Claude Code run:

```
claude mcp add --transport http leadsets \
  https://mcp.leadsets.ai
```

   In Cursor, add a server named `leadsets` with the URL `https://mcp.leadsets.ai` and an `Authorization: Bearer ls_live_…` header. Full steps are in [Connect via MCP](https://www.leadsets.ai/docs/mcp).
3. **Add a skill.** Download the skill folder and upload it in Claude under Settings, Skills, or clone the library with `git clone github.com/leadsets/leadsets-skills`. Skills are MIT licensed and work on the free key.
4. **Or call REST from a workflow.** Send requests to `https://api.leadsets.ai/v1` with your key as a bearer token: `POST /v1/people/enrich`, `POST /v1/companies/enrich` and `POST /v1/emails/verify`. This works from an n8n HTTP node, a Make HTTP module or your own code with the TypeScript (`npm i @leadsets/sdk`) or Python (`pip install leadsets`) SDK. Send an `Idempotency-Key` on paid calls so retries never count twice.
5. **Or work from a CSV.** Leadsets supports CSV and Excel import and export. The Bulk enrich a CSV skill enriches a whole file as an async job and checks your limits before each batch.
6. **Check the connection.** Ask your agent "What's my Leadsets usage?" If it calls `get_usage` and answers with your remaining balance, you are connected.

## Example: backfilling emails at Northwind Analytics

Maya Chen runs revenue operations at Northwind Analytics (northwind.co). Her HubSpot contacts include people with no email and people whose last send bounced. With Leadsets connected in Claude and the HubSpot email backfill skill installed, she asks:

> "Find HubSpot contacts with missing or bounced emails and write back verified addresses. Keep catch-alls separate."

The agent calls `get_usage` first to see what is left in the enrichment window. It runs `enrich_person` for each contact; any email that comes back is already verified, with no second tool and no second bill. For existing addresses that bounced, it calls `verify_email`. Verified addresses are written back, while catch-all and unknown results are reported separately instead of being treated as valid. Where `enrich_person` returns `404 not_found`, there is nothing to enrich for that input and the agent moves on.

Next, Maya runs HubSpot company enrichment on accounts such as Stackfold and Parcelry that are missing industry and size, so her account views fill in with sourced, dated fields. This is an illustrative workflow, not a benchmark.

## What to watch for

- **Records and requests.** A record counts only when data comes back, so an empty result uses none. Every call counts as a request, hit or miss; the request limit is five times the record allowance.
- **Windows.** Enrichment has a rolling five-hour limit and a weekly limit: Solo 1k and 5k, Pro 15k and 75k, Team 150k and 750k, Max 225k and 1.125M. Standalone `verify_email` counts toward enrichment. See [limits and costs](https://www.leadsets.ai/docs/limits).
- **Hitting a limit.** You get a `429` with a `Retry-After` time and the blocked call counts against nothing. A large CRM backfill may need to be split across windows or run as an async job.
- **Free plan.** 1,000 records, one time, shared across search and enrichment. When they run out, the API returns `402 free_records_exhausted`.
- **Scraping.** Skills that use `scrape_company` or `scrape_jobs`, such as Account tiering, need scrape units, an add-on on paid plans from $9 for 1,000 units. Scraping is not on Free.
- **Verification statuses.** Emails are labelled verified, catch-all, unknown or invalid, with a confidence score. Decide before a run which statuses may be written into your main email field. Invalid emails are never served as contact emails. How the labels are produced is on the [email verification page](https://www.leadsets.ai/verify).

## What it does not do

- **No phone numbers.** Leadsets returns work emails, US personal emails on paid plans, roles and company data. Phone numbers are not offered yet.
- **Not a CRM or a sending tool.** Leadsets feeds HubSpot and your sequencer; it does not replace either.
- **No separate HubSpot app described.** The integrations page lists HubSpot as Skills + API. If you need a vendor-built, in-CRM app, check that before choosing.
- **Business data only.** No consumer data, no sensitive categories and no personal home addresses.
- **No guarantee of 100% accuracy.** Leadsets publishes its benchmark method instead.
- **SOC 2 is planned, not done.** SOC 2 Type I readiness is underway with a target of Q3 2027. Leadsets runs a GDPR-aligned program and offers a DPA; lists you submit are processed only on your instructions and are not used to train models.

If data enrichment itself is new to you, start with [what data enrichment is](https://www.leadsets.ai/answers/what-is-data-enrichment).

## Questions and answers

### Does Leadsets have a native HubSpot app?

The Leadsets integrations page lists HubSpot as Skills + API, and the site does not describe a separate installable HubSpot app. An agent uses free GTM skills and the Leadsets REST API or MCP server to read, enrich and update records.

### Can Leadsets fill missing emails in HubSpot?

Yes. The free HubSpot email backfill skill finds contacts with missing or bounced emails and writes verified addresses back, using enrich_person and verify_email. Emails returned by enrich_person are already verified, with no second bill.

### How much does HubSpot enrichment with Leadsets cost?

Leadsets has a free plan with 1,000 one-time records and no card, then flat monthly plans: Solo $29, Pro $99, Team $399 and Max $999 in USD. There are no credits; each plan has visible enrichment and search limits per five hours and per week.

### Can Leadsets add phone numbers to HubSpot contacts?

No. Leadsets does not offer phone numbers yet and says it will only add them once sourcing rights and costs are clear. It returns work emails, US personal emails on paid plans, roles and company data.

### How does Leadsets handle catch-all emails during a HubSpot backfill?

Leadsets labels every email verified, catch-all, unknown or invalid and never rounds uncertain results up to valid. Leadsets suggests sending to catch-all addresses at lower volume and treating unknown as unconfirmed, so you can keep them out of your verified field.

### What happens if a large HubSpot backfill hits a Leadsets limit?

Leadsets returns a 429 with a Retry-After time, and the blocked call counts against nothing. The agent can call get_usage for free before a run and split the job across windows or submit an async job.

---

Leadsets · https://www.leadsets.ai · Site index: https://www.leadsets.ai/llms.txt
