Yes, ZoomInfo integrates with HubSpot natively, through three routes. ZoomInfo's own page names two: an inbound enrichment app and a two-way Connector. It also lists a third route that runs on the HubSpot side, the Prospecting Agent connector (ZoomInfo HubSpot integration page).
- The Connector works in both directions. It brings your HubSpot context into ZoomInfo, and it sends ZoomInfo contacts and companies into HubSpot when a rep or an automation pushes them.
- Inbound Enrich is a Marketplace app that needs its own ZoomInfo subscription. It fills in contacts as soon as they are created in HubSpot (ZoomInfo Inbound Enrich listing).
- The Prospecting Agent connector lets HubSpot's agent find new contacts in ZoomInfo and enroll them in its plays (HubSpot Knowledge Base).
Pick the path by the job you need done. Then settle three things before the first export: who owns the exported records, how duplicates get matched, and how contacts attach to companies. Skip those and your CRM fills with contacts owned by the admin, with no company on the record, sitting next to copies of themselves.
Which path does which job?
| Path | The job it does | What triggers it | Direction | Where you set it up |
|---|---|---|---|---|
| ZoomInfo HubSpot Connector | Puts ZoomInfo contacts and companies into HubSpot, and gives ZoomInfo your CRM context for its search filters, signals, automation and scoring | A rep or an automation pushes records out; the import side runs on its own schedule | Both ways | ZoomInfo Admin Portal, under Integrations |
| ZoomInfo Inbound Enrich | Adds data to contacts and companies that land in HubSpot from forms, imports or reps | A new contact created in HubSpot | ZoomInfo into HubSpot | HubSpot Marketplace app, on its own ZoomInfo subscription |
| Prospecting Agent connector | Supplies new contacts for HubSpot's agent to enroll in plays | The agent's plays | ZoomInfo into the agent | HubSpot, under Sales > Prospecting Agent |
The decision rules are short:
- If your reps search in ZoomInfo and work deals in HubSpot, you need the Connector.
- If leads arrive through forms with half the fields empty, you need Inbound Enrich.
- If HubSpot's agent writes your outreach and you want ZoomInfo feeding it, connect it in the Prospecting Agent.
- If you need two of these jobs done, you need two paths. None of them covers another's job.
I do not mind which CRM a client runs, as long as one exists and catches every lead. HubSpot is a fine home for ZoomInfo data. The damage comes from careless wiring: records that look complete while nobody can say who owns them.
What do you need before you connect ZoomInfo to HubSpot?
ZoomInfo's implementation guide lists four supported HubSpot plans: Free, Basic, Professional and Enterprise (ZoomInfo implementation guide). The HubSpot user who makes the connection must be a Super Admin, or an Admin with these rights:
- Contacts: view, edit and delete. Contacts they own is the minimum; all contacts is the recommended setting.
- Companies: the same three rights, with all companies recommended.
- The Marketing Access toggle switched on.
- App Marketplace access switched on, under Account > Settings Access.
Next comes the connection choice. ZoomInfo calls the service account "the default (and preferred) option".
| Service account | Individual user accounts | |
|---|---|---|
| Who connects to HubSpot | One account, ideally a dedicated Super Admin; every export and filtering job runs through it | The admin makes the first connection, then each user connects their own HubSpot account |
| Record ownership | Depends on matching emails, explained in the next section | Each export runs under that user's own connection |
| Upkeep | New hires never connect to HubSpot themselves | Every new user must connect, and each broken connection becomes its own support problem |
The guide's setup order, step by step:
- Choose service account or individual connections.
- Make the first admin connection: Admin Portal > Integrations > Connections, find the HubSpot tile, click Connect, log in and pick the HubSpot account.
- Set export preferences: which objects users may export, and how many records each user may export per object.
- Map the fields.
- Configure HubSpot Import, which is switched on by default.
- Configure Advanced Search filters.
- Turn the integration on for your users.
- Set how duplicates are handled.
Why does the ZoomInfo admin end up owning every exported contact?
A rep exports a contact from ZoomInfo, and HubSpot shows the ZoomInfo admin as the owner. The cause is a single rule for service account connections in ZoomInfo's guide.
| Exporting user's email | Owner of a net-new record in HubSpot |
|---|---|
| Identical in ZoomInfo and HubSpot | The user who exported it |
| Different in the two tools, for example an alias in one of them | The primary connected admin |
In the guide's words, when the addresses differ, "the record Owner fields will reflect the primary connected admin."
The fix: before anyone exports, make every rep's ZoomInfo login identical to their HubSpot user email, using the User Mapping table in the integration settings. If some emails cannot match, individual user connections avoid the rule, at the price of every rep maintaining their own link.
I split territories by account and by rep, so two people on one team never work the same leads. That split only exists if HubSpot shows the right owner. When the admin owns every new record, HubSpot cannot tell you which rep should be working which account.
How do you stop duplicate and orphan contacts after the sync?
ZoomInfo runs its duplicate check in a fixed order. For contacts, it looks for a matching email address first. If there is none, it tries first name plus last name plus exact company name. Companies are matched on the company domain.
HubSpot matches on the same keys. HubSpot's deduplication docs say it automatically deduplicates contacts by email address and companies by domain name. So a contact who shows up with a new email address slips past the email check.
Subdomains cause a second miss. With automatic association on, HubSpot's company association docs say it creates a separate company record for each unique domain, including subdomains. So @example.com and @info.example.com become two companies.
ZoomInfo's own order has a blind spot too. Take a contact whose email has changed, with the company written "Acme Ltd" in HubSpot and "Acme Limited" in ZoomInfo. Both checks miss, and the person arrives as a new record.
When a match is found, the export flags it, and the user chooses to update the existing record, create a duplicate or skip the record, from the options the admin has allowed.
Orphans are the other trap. ZoomInfo does not link exported contacts to companies; each contact arrives as an independent record. To link them automatically, you switch on HubSpot's own setting that creates and associates companies with contacts.
| Setting | What it does | Recommended choice |
|---|---|---|
| Admin duplicate default | Decides what users see when an export finds a match | Default to updating the existing record, and remove the create-duplicate option from users |
| Update option per field | Complete if missing (the default) writes only into empty fields; Overwrite field replaces what HubSpot holds | Start with Complete if missing everywhere; switch a field to Overwrite only after comparing a sample by hand |
| Dropdown and radio mapping | Mapped values must match HubSpot's internal values, and case counts | Check every picklist before saving |
| Test Mapping | Exports and deletes one test record | Run it after every mapping change |
| Company association | Not done by ZoomInfo | Turn on HubSpot's automatic association before the first export |
Enrichment is a snapshot of one day. People change jobs and companies rename themselves, so plan re-runs for the records you actually work (how fast B2B contact data goes stale).
What does ZoomInfo import from HubSpot, and how often?
Import is switched on as soon as you connect. ZoomInfo reads only the records and fields the connected user can access, takes every accessible field on each object, and stores both matched data (records already in your HubSpot) and non-matched data. The decision rule: if a field must stay out of ZoomInfo, remove the service account's access to it in HubSpot before you connect.
| Item | Timing or limit |
|---|---|
| Incremental import | Hourly, covering only records updated since the last run |
| Backfill (full sync) | On first connection, after import mapping or import rule changes, or when someone presses Sync Now |
| Advanced Search filter data | Refreshed every 24 hours |
| Record limit | 20 million each for the account, contact and opportunity objects |
| Custom HubSpot fields usable as filters | Up to 3 |
| Owners per object type in filters | Up to 10 |
A deal stage changed this morning reaches ZoomInfo within the hour, but filters can lag a day. With more than 10 reps, you cannot filter on every owner.
Will the sync hit HubSpot's API limits?
HubSpot's developer documentation sets the limits by app type and plan (HubSpot API usage guidelines). A marketplace app using OAuth gets 110 requests every 10 seconds per installing account, with the CRM Search API excluded from that figure. Private apps follow the plan:
| Private app limits | Per 10 seconds, per app | Per day, per account |
|---|---|---|
| Free and Starter | 100 | 250k |
| Professional | 190 | 625k |
| Enterprise | 190 | 1M |
| API Limit Increase, per increase | 250 | 1M added |
You can buy a maximum of two increases, and they do nothing for marketplace apps. Go over a limit and HubSpot returns a 429 error with the type RATE_LIMIT. HubSpot asks that these errors stay under 5% of your daily requests, and the daily count resets at midnight in the account's time zone.
HubSpot's page never says which of these rows a ZoomInfo connection falls under, and ZoomInfo's guide tells you to ask HubSpot Support how many calls your account has. Ask before go-live, and run backfills on a day when no other integration runs a big job.
How does HubSpot's Prospecting Agent use ZoomInfo?
In HubSpot, go to Sales > Prospecting Agent, click Integrations under Manage, click Connect, then choose Connect to ZoomInfo in the dialog. The connection exists so the agent can find new contacts and add them to a play, beyond the contacts already in your CRM.
Four rules from HubSpot's knowledge base shape the decision:
- HubSpot allows a single outside data source to be linked in the agent at any moment. Apollo and Surfe are among the other options, so picking ZoomInfo rules them out.
- The agent spends HubSpot Credits each time it writes a personalized email for a lead, whether the lead was recommended or enrolled by hand.
- Setup needs a Super Admin or a user with the prospecting agent access permission.
- The AI settings must be switched on: user access to generative AI tools, plus CRM data, customer conversation data and files data.
Your prospects do not care which AI platform wrote the email. Feed the agent a loose ZoomInfo search and it sends weak email faster, at a credit cost per lead.
What does the ZoomInfo HubSpot integration cost?
Prices at the time of writing. The bill has two sides: ZoomInfo and HubSpot.
On the ZoomInfo side, every path needs ZoomInfo access. The Connector runs on your ZoomInfo account, the Prospecting Agent asks for a ZoomInfo login, and Inbound Enrich needs its own Inbound Enrich subscription. ZoomInfo's integration page publishes no price for any of this and routes buyers to its sales team (ZoomInfo HubSpot integration page).
Get the quote in writing, with credits and seats spelled out. If you are still choosing the data vendor itself, compare the options in ZoomInfo alternatives. If the choice is between ZoomInfo and Cognism, Cognism vs ZoomInfo sets the two side by side, and teams on Salesforce can read about the Salesforce integration instead.
| Item | Published price | Note |
|---|---|---|
| ZoomInfo subscription (needed for the Connector and the Prospecting Agent login) | No published price | Quote from ZoomInfo sales |
| ZoomInfo HubSpot Connector | No published price | Quote from ZoomInfo sales |
| ZoomInfo Inbound Enrich | "$100 /1 credit per new record + 5-15 AI credits per API call" | Consumption-based, needs an Inbound Enrich subscription; the HubSpot Marketplace listing shows it "for display purposes only", so confirm the real rate with ZoomInfo |
| HubSpot Sales Hub Free | $0 per month | Up to 2 users, no credit card needed |
| HubSpot Sales Hub Starter | From $7 per seat per month | 500 HubSpot Credits a month; any listed discount applies to new customers only |
| HubSpot Sales Hub Professional | From $90 per seat per month | 3,000 HubSpot Credits a month; plus a $1,500 one-time onboarding fee |
| HubSpot Sales Hub Enterprise | From $150 per seat per month | 5,000 HubSpot Credits a month; plus a $3,500 one-time onboarding fee |
HubSpot prices come from its US pricing page (HubSpot Sales Hub pricing). Credits reset monthly and do not roll over, and extra credits are listed at $0.010 each. Recheck every page on the day you buy.
The Inbound Enrich bill rises with inbound volume, so ask for an estimate based on your real form traffic.
My team's monthly fee covers our own work only; ZoomInfo, HubSpot and any other data or software are paid by the client straight to each vendor.
Is a synced ZoomInfo list ready to send cold email to?
No. The sync moves records. It never checks whether an address still works or whether the person can buy from you.
No setting covers that check. When outbound goes quiet, I open the list before I open the emails. The usual culprits are wrong titles, mixed company sizes and addresses nobody checked. A clean integration makes a weak list look trustworthy, because every row now sits in HubSpot with an owner attached. Even great copy cannot save a bad list.
Quality is not enough on its own, you need enough names too. Even 50-100 perfect-fit leads a month is a coin flip: some are busy, some are not ready, some simply do not care. My rule of thumb: 30 to 35 booked sales meetings a month takes contacting at least 10,000 people a month.
So I treat ZoomInfo as one source, never the whole list. My team combines it with Apollo, Sales Navigator, RocketReach and UpLead. A list built from those beats anything scraped. The cheap shortcut fails in a predictable way: a list bought cheap from a freelancer gets weak opens and a bounce rate that hurts the domain.
Whatever the source, every address gets verified before it is sent, with a tool such as NeverBounce or DeBounce, and the bounce rate stays below 0.5 percent.
I cover what a good bounce rate looks like and why it protects your domain in a separate post. And if the CRM is still half set up when the first replies come in, read why I want it ready before anyone replies.
Run this checklist before the first export goes into a sequence:
- Rep emails match in User Mapping.
- You know who the primary connected admin is.
- Users cannot create duplicates.
- Test Mapping has passed.
- Company association is on.
- Backfills sit on a quiet day.
- Every exported list is verified before it enters a sequence.
Then open a sample of synced records and compare each one with the person's current LinkedIn profile. Any record with a new title or a new employer goes back for re-enrichment, and any person with no reason to buy from you comes off the list before the sequence starts.
Planning to connect ZoomInfo to HubSpot and worried about the bill? Book a call and send me the quote. I will tell you what I would question.
Questions people ask about the ZoomInfo HubSpot integration
Why does the ZoomInfo admin show up as the owner of exported contacts?
On a service account connection, ownership follows email matching. If the exporting rep's email is identical in ZoomInfo and HubSpot, the rep owns the new record. If the two differ, for example because of an alias, ZoomInfo's guide says the owner becomes the primary connected admin. Fix the User Mapping table before anyone exports.
Does ZoomInfo attach exported contacts to companies in HubSpot?
No. ZoomInfo does not link exported contacts to companies, so each contact arrives as an independent record. Turn on HubSpot's own setting that creates and associates companies with contacts before the first export, and remember that each unique domain, subdomains included, becomes its own company.
Do I need my own ZoomInfo login to use the Prospecting Agent with ZoomInfo data?
Yes. After you click Connect to ZoomInfo, HubSpot opens a pop-up where you sign in with ZoomInfo credentials, so a working login must exist before setup. Write down whose credentials the connection uses, so it does not quietly break when that person leaves.
Does the ZoomInfo connection work in a HubSpot sandbox account?
Partly. HubSpot says credit actions cannot be completed in sandbox accounts, so the Prospecting Agent cannot write its credit-based emails there. For the Connector, ZoomInfo's guide warns teams that switch between sandbox and production to check user mapping and press Reset Mapping, so owners match the users in the instance actually connected.
