Docs/Playbooks

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.

Before you start
  • A HubSpot account, and login access to it.
  • An agent that already works — build the conversation first, add the CRM second.
  • Twenty minutes.
What you will end up with

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

Call starts
Inbound or outbound
Look them up
By phone number
first
Conversation
Personalised if known
Note written
On their contact record
always
Deal opened
Only on real intent

1. Connect and attach

  1. 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.

  2. 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.

  3. 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.

ActionWhat it does
search_contactsFinds a contact by phone, email or name.
get_contactRetrieves a specific contact record.
create_contactCreates a contact from what the caller said.
create_dealOpens a deal against a contact.
create_noteAttaches a call summary to a record.
There is no delete

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.

Instructions
## 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.
Do not read their record back at them

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 noteA 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.”
Add to instructions
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 dealDo not create a deal
They asked for a quote or a proposalThey asked what something costs
They asked to start, sign up or place an orderThey are comparing options generally
They asked for a meeting with salesThey called about an existing order or a support issue
They gave a budget and a timeline unpromptedThey said “just looking for now”
Start with notes only for two weeks

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:

Non-negotiable
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

  1. Put yourself in HubSpot

    Create a contact with your own mobile number, so there is something genuine to find.

  2. 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_contacts is present.

  3. Have a normal conversation, then hang up

    Ask about something ordinary. Do not ask for a quote yet.

  4. 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.

  5. Call again from an unknown number

    Give a name and email during the call. Check that exactly one new contact was created — not two.

  6. Call once more and explicitly ask for a proposal

    Now a deal should appear. This confirms the trigger works in both directions.

Test in a sandbox if your pipeline is sacred

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.

CRMLook upCreateLog
HubSpotsearch_contactscreate_contact, create_dealcreate_note
Salesforcesearch_contacts, query (SOQL)create_contact, create_leadcreate_task
Zoholookup_contactcreate_contact, create_leadcreate_note
Dynamics 365lookup_contactcreate_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.

Still stuck? support@vociply.com