HubSpot: calls into pipeline
On this page
Every call becomes a record, without anyone typing. The agent knows who is calling before it speaks, logs what happened, and opens a deal only when there is real intent behind it.
- A HubSpot account, and login access to it.
- An agent that already works — build the conversation first, add the CRM second.
- Twenty minutes.
Callers are greeted by name because the agent looked them up. Every call leaves a written note on the right contact record. New callers who give their details become contacts. People who ask for a quote get a deal in your pipeline — and nobody else does.
The shape of it
1. Connect and attach
Connect HubSpot
IntegrationsHubSpotConnect. Sign in and approve. The panel lists exactly what the connection can read and write before you start: contacts and companies to read; contacts, deals and notes to write.
Sign in as an account that will still exist next year
The connection acts as whoever authorises it. Connecting as a shared operations account rather than an individual’s login means it does not break when someone leaves.
Attach it to the agents that need it
On the panel, select the agents. Connecting alone grants nothing — this second step is what gives a particular agent access.
| Action | What it does |
|---|---|
search_contacts | Finds a contact by phone, email or name. |
get_contact | Retrieves a specific contact record. |
create_contact | Creates a contact from what the caller said. |
create_deal | Opens a deal against a contact. |
create_note | Attaches a call summary to a record. |
The catalogue has no delete action, for any integration. An agent cannot remove or overwrite your CRM data — the worst it can do is create something you did not want, which is why the deal rules below matter.
2. Identify the caller
The highest-value thing this integration does, and the cheapest. Knowing who is calling before you speak changes the entire call.
## Before you say anything else Use search_contacts with the caller's phone number. If you find them: Greet them by name. Do not ask for details we already hold. "Hi Amina, good to hear from you again - how can I help?" If you do not find them: Greet them normally and collect their name and email during the call. If the lookup fails or errors: Carry on as if they are new. Never tell the caller about a system problem. ## During the call Answer their question, book what needs booking, and note anything the team would want to know. ## Before the call ends 1. If they were not already in HubSpot and gave you their details, use create_contact. 2. Always use create_note on their record. Write 3-5 lines: what they wanted, what you told them, and what happens next. 3. Only if they explicitly asked for a quote, a proposal, or to start a project, use create_deal. ## Rules you never break - Never use create_contact without searching first. - Never create a deal for a general enquiry, a support question, or someone who is "just looking". Those get a note, not a deal. - Never read anything from their record back to them that they did not tell you themselves on this call.
An agent that says “I see you bought the premium package in March and had a complaint in June” is unsettling, and depending on what is in the record, a privacy problem. Use the data to be helpful — greet them by name, skip questions you know the answer to — not to demonstrate that you have a file on them.
Handle the failure case explicitly
Lookups sometimes fail. Without an instruction, the agent improvises — which on a call can mean telling the customer about your internal systems. The line carry on as if they are new; never mention a system problem costs nothing and prevents that.
3. Log every call
Notes are the part your team will actually feel. Be specific about what a note should contain, or you get one useless line.
| A good note | A useless note |
|---|---|
| “Asked about pricing for 12 users. Quoted the standard tier. Wants a written proposal by Friday. Mentioned they are also evaluating a competitor.” | “Customer called about pricing.” |
Every note must contain, in this order: 1. What they wanted. 2. What you told them. 3. What happens next, and who does it. Write it as plain sentences, not bullet points. Never invent detail.
4. Open deals — carefully
This is where automation goes wrong. An agent that creates a deal for every call will fill your pipeline with rubbish within a week, and your sales team will stop trusting the pipeline entirely.
| Create a deal | Do not create a deal |
|---|---|
| They asked for a quote or a proposal | They asked what something costs |
| They asked to start, sign up or place an order | They are comparing options generally |
| They asked for a meeting with sales | They called about an existing order or a support issue |
| They gave a budget and a timeline unprompted | They said “just looking for now” |
Ship this integration with deal creation switched off. Read the notes for a fortnight and mark which calls should have become deals. That gives you a rule based on your actual calls rather than a guess — and your sales team will trust the deals that follow.
5. Stop it creating duplicates
The most common complaint about CRM automation, and it has a one-line fix that must appear in the instructions:
Never use create_contact without using search_contacts first. If the search returned anyone matching, use that record. Do not create a second one.
- Search by phone number first. On a phone call it is the one identifier you always have and never mishear.
- Be careful with names. Speech-to-text spells names inconsistently; matching on them creates duplicates.
- Only create when you have something real. “If they will not give a name or an email, do not create a contact — just note the call.”
6. Test against real records
Put yourself in HubSpot
Create a contact with your own mobile number, so there is something genuine to find.
Call the agent from that number
It should greet you by name. If it does not, the lookup did not run — check the integration is attached to this agent, and that the instruction naming
search_contactsis present.Have a normal conversation, then hang up
Ask about something ordinary. Do not ask for a quote yet.
Check HubSpot
A note should be on your record, and no deal should exist. If a deal was created, your deal rule is too loose.
Call again from an unknown number
Give a name and email during the call. Check that exactly one new contact was created — not two.
Call once more and explicitly ask for a proposal
Now a deal should appear. This confirms the trigger works in both directions.
If a stray deal would cause real problems — reporting, commission, forecasting — connect a HubSpot sandbox first and move to production once you trust the rules.
The same pattern in other CRMs
The instructions above transfer almost unchanged. Only the action names differ, and each integration lists its own on its panel.
| CRM | Look up | Create | Log |
|---|---|---|---|
| HubSpot | search_contacts | create_contact, create_deal | create_note |
| Salesforce | search_contacts, query (SOQL) | create_contact, create_lead | create_task |
| Zoho | lookup_contact | create_contact, create_lead | create_note |
| Dynamics 365 | lookup_contact | create_lead, create_sales_order | — |
Salesforce additionally accepts a SOQL query, which is the escape hatch when a standard lookup is not enough. Zoho reaches beyond CRM into Inventory — the Zoho playbook covers stock and orders. Dynamics is also the destination for Call IQ.
Questions
Can the agent update an existing contact?
It can add notes and create records. Editing arbitrary fields on an existing contact is not one of the actions — a deliberate limit, since a mis-heard email overwriting a good one is worse than no update at all. If you need field updates, route them through n8n where you control exactly what changes.
Which contact does the note attach to on an outbound campaign call?
The one matching the number you dialled, found by the same search. Include an email column in your contact list and matching gets more reliable still.
The agent greets people by the wrong name.
Two numbers on one record, or two records sharing a number. Search by phone, and clean up the shared numbers in HubSpot — no instruction can fix ambiguous data.
Can I stop it writing to HubSpot but keep the lookups?
Yes, with instructions: “Only ever use search_contacts. Never create contacts, deals or notes.” The actions remain available but the agent will not reach for them. This is the safest way to trial the integration.