Integration
HubSpot voice AI integration
The HubSpot integration connects your AI voice and chat agents to HubSpot, so they can create a crm contact on a live call. It's a crm connector that runs as a tool the agent calls mid-conversation — you connect with an api key, attach it to an agent, and it acts in real time without a human in the loop.
Last updated 2026-09-15
What your agent can do with HubSpot
Create a HubSpot contact for the caller. Use when the caller is a new lead or customer.
Inputs
| Field | Type | Description |
|---|---|---|
| company | string | Company name, if any |
| string | Email, if given | |
| firstname | string | First name |
| lastname | string | Last name |
| phone* | string | Phone with country code |
Read the HubSpot contact list, a page at a time. For importing a call list — use crm.lookup_contact to find one caller during a call.
Inputs
| Field | Type | Description |
|---|---|---|
| after | string | Page cursor from the previous call |
| limit | integer | Contacts per page (max 100) |
Update many HubSpot contacts in one call — the campaign write-back path.
Inputs
| Field | Type | Description |
|---|---|---|
| inputs* | array | [{id, properties}] — up to 100 |
Find an existing HubSpot contact by phone number. Use to recognise a caller or before creating a duplicate.
Inputs
| Field | Type | Description |
|---|---|---|
| phone* | string | Phone digits to search for. A partial match works (HubSpot token-matches); the national number without country code is most reliable. |
Log every call as a HubSpot Calls engagement. Map at least hs_timestamp (when the call happened) — HubSpot rejects a call without it. Useful properties: hs_call_title, hs_call_body, hs_call_to_number, hs_call_duration, hs_call_status, hs_call_direction.
Inputs
| Field | Type | Description |
|---|---|---|
| inputs* | array | one entry per call, each {properties:{…}} |
Fetch one HubSpot contact by its ID, with more detail than the search returns.
Inputs
| Field | Type | Description |
|---|---|---|
| contact_id* | string | The HubSpot contact ID (a numeric string) |
Update fields on an existing HubSpot contact. Only the fields you supply are changed. Supply at least one field besides the ID — calling this with only the ID changes nothing and still reports success.
Inputs
| Field | Type | Description |
|---|---|---|
| company | string | Company name |
| contact_id* | string | The HubSpot contact ID |
| string | ||
| firstname | string | First name |
| lastname | string | Last name |
| phone | string | Phone in full international form |
List the deals attached to a HubSpot contact, newest first, so you can tell a caller where their enquiry stands.
Inputs
| Field | Type | Description |
|---|---|---|
| contact_id* | string | The HubSpot contact ID |
Fetch one HubSpot deal by its ID — its name, value and whether it has closed.
Inputs
| Field | Type | Description |
|---|---|---|
| opportunity_id* | string | The HubSpot deal ID (a numeric string) |
Update a HubSpot deal — its name, value, close date or description. Only the fields you supply are changed. Supply at least one field besides the ID.
Inputs
| Field | Type | Description |
|---|---|---|
| amount | string | Deal value in whole currency units, e.g. 4500 |
| close_date | string | Expected close date as YYYY-MM-DD |
| description | string | Free-text notes on the deal |
| name | string | Deal name |
| opportunity_id* | string | The HubSpot deal ID |
List the companies a HubSpot contact is associated with.
Inputs
| Field | Type | Description |
|---|---|---|
| contact_id* | string | The HubSpot contact ID |
Fetch one HubSpot company by its ID.
Inputs
| Field | Type | Description |
|---|---|---|
| company_id* | string | The HubSpot company ID (a numeric string) |
Update fields on an existing HubSpot company. Only the fields you supply are changed. Supply at least one field besides the ID.
Inputs
| Field | Type | Description |
|---|---|---|
| city | string | City |
| company_id* | string | The HubSpot company ID |
| domain | string | Website domain, e.g. acme.com |
| industry | string | Industry, exactly as the business named it |
| name | string | Company name |
| phone | string | Main phone number |
List the tasks still outstanding on a HubSpot contact, soonest due first. Completed tasks are not returned.
Inputs
| Field | Type | Description |
|---|---|---|
| contact_id* | string | The HubSpot contact ID |
Create a follow-up task against a HubSpot contact. If the caller did not name a due date, use tomorrow morning.
Inputs
| Field | Type | Description |
|---|---|---|
| contact_id* | string | The HubSpot contact ID |
| description | string | Any detail the person doing the task will need |
| due_date* | string | When the task is due, ISO 8601 with a UTC offset, e.g. 2026-09-10T09:00:00+05:30 |
| subject* | string | Short task title, e.g. "Call back about the quote" |
Write a note onto a HubSpot contact — what the caller asked for, what was agreed. Keep it to a short paragraph.
Inputs
| Field | Type | Description |
|---|---|---|
| body* | string | The note text |
| contact_id* | string | The HubSpot contact ID |
| title | string | Optional short heading, written as the first line of the note |
Record this call on the caller's HubSpot timeline. Use near the end of a call to write down what was discussed and agreed.
Inputs
| Field | Type | Description |
|---|---|---|
| contact_id* | string | The HubSpot contact ID the call belongs to |
| direction | string | Who placed the call. INBOUND means the caller rang us. |
| duration_minutes | integer | How long the call lasted, in whole minutes |
| notes | string | What was discussed, asked for and agreed. A short paragraph. |
| phone_number | string | The number the call was on |
| subject* | string | One-line summary of the call |
What you'll need to connect HubSpot
Connect with an API key. In Telenow, open Integrations → HubSpot and provide:
- Private app access token — HubSpot → Settings → Integrations → Private apps (needs crm.objects.contacts read/write)
Agent templates that use HubSpot
Other CRM integrations
Frequently asked questions
What can an AI voice agent do with HubSpot?+
During a live call or chat, a Telenow agent can create a crm contact, crm.list_contacts, crm.update_contacts, look up a contact by phone, crm.log_call, get a contact by id, update a contact, list a contact's deals, get a deal by id, update a deal, list a contact's companies, get a company by id, update a company, list a contact's open tasks, create a task on a contact, add a note to a contact, and log a phone call — each runs as a tool the agent calls mid-conversation, so it acts on HubSpot in real time without a human.
How do you connect HubSpot to Telenow?+
In Telenow, open Integrations, pick HubSpot, and you paste a HubSpot API key into the connection, then bind it to your agent. Then add its crm tool to your agent (or install a template that already includes it) and you're live.
Which AI agent templates use HubSpot?+
SaaS demo scheduler, Inbound sales concierge, Order & delivery status, Billing dispute intake, Subscription cancel & retain, B2B invoice follow-up, Insurance policy verification, and Return & refund intake all use HubSpot. You can install any of them and connect your HubSpot account in a couple of clicks.
Does HubSpot work on phone calls and WhatsApp?+
Yes. Telenow agents run on phone, web, chat and WhatsApp, and HubSpot works the same across every channel — the agent calls it whenever the conversation needs it.
How much does the HubSpot integration cost?+
Connecting HubSpot is included — you only pay Telenow's transparent per-minute and per-component usage, and new accounts get free signup credit to try it.
Connect HubSpot to your AI voice agent
Sign up free and get $1.00 in credit — no card required. Connect your number, pick a template, and go live in minutes.