HubSpot Contact Management
Overview
Contacts in HubSpot represent individual people -- clients, prospects, vendors, or any person your MSP interacts with. Contacts are the foundational entity in HubSpot CRM. They can be associated with companies, deals, tickets, and activities to build a complete picture of every relationship. For MSPs, contacts typically represent client employees, decision-makers, technical contacts, and billing contacts at managed companies.
MCP Tools
Available Tools
| Tool | Description | Key Parameters | |------|-------------|----------------| | hubspot_retrieve_contact | Get a single contact by ID | contactId (required) | | hubspot_create_contact | Create a new contact | email (required), firstname, lastname, phone, company | | hubspot_update_contact | Update an existing contact | contactId (required), property fields to update | | hubspot_list_contacts | List contacts with pagination | limit, after (cursor) | | hubspot_list_contact_properties | List all available contact properties | None | | hubspot_search_contacts | Search contacts by criteria | filterGroups, sorts, limit, after |
Search Contacts
Call hubspot_search_contacts with filter groups to find contacts:
Search by email domain (find all contacts at a company):
{
"filterGroups": [
{
"filters": [
{
"propertyName": "email",
"operator": "CONTAINS_TOKEN",
"value": "acmecorp.com"
}
]
}
],
"limit": 100
}
Search by name:
{
"filterGroups": [
{
"filters": [
{
"propertyName": "firstname",
"operator": "EQ",
"value": "John"
},
{
"propertyName": "lastname",
"operator": "EQ",
"value": "Smith"
}
]
}
]
}
Search by lifecycle stage (find all customers):
{
"filterGroups": [
{
"filters": [
{
"propertyName": "lifecyclestage",
"operator": "EQ",
"value": "customer"
}
]
}
],
"sorts": [
{
"propertyName": "lastname",
"direction": "ASCENDING"
}
],
"limit": 100
}
Create a Contact
Call hubspot_create_contact with the contact's properties:
Example: Create a new client contact:
email:jane.doe@acmecorp.comfirstname:Janelastname:Doephone:555-987-6543company:Acme Corporationjobtitle:IT Directorlifecyclestage:customer
Update a Contact
Call hubspot_update_contact with the contactId and the properties to change:
Example: Update lifecycle stage and lead status:
contactId:12345lifecyclestage:customerhs_lead_status:CONNECTED
Retrieve a Contact
Call hubspot_retrieve_contact with the contactId:
Example:
hubspot_retrieve_contactwithcontactId=12345
Key Concepts
Lifecycle Stages
Lifecycle stages track where a contact is in your MSP's sales and service process:
| Stage | Description | MSP Context | |-------|-------------|-------------| | subscriber | Signed up for updates | Newsletter subscriber | | lead | Expressed interest | Downloaded a whitepaper or filled out a form | | marketingqualifiedlead | Marketing qualified | Meets marketing criteria for outreach | | salesqualifiedlead | Sales qualified | Confirmed interest in MSP services | | opportunity | Active opportunity | In an active sales conversation | | customer | Paying customer | Signed MSP agreement, receiving services | | evangelist | Advocate | Actively refers new business | | other | Custom stage | Does not fit standard stages |
Lead Status
Lead status tracks the disposition of sales outreach:
| Status | Description | |--------|-------------| | NEW | New lead, not yet contacted | | OPEN | Open lead, in active outreach | | IN_PROGRESS | Engaged in conversation | | OPEN_DEAL | Deal created, in pipeline | | UNQUALIFIED | Does not meet qualification criteria | | ATTEMPTED_TO_CONTACT | Outreach attempted, no response | | CONNECTED | Connected, conversation initiated | | BAD_TIMING | Interested but not ready |
Contact Owner
The hubspot_owner_id property assigns a contact to a specific user in your HubSpot account. For MSPs, this is typically the account manager or sales rep responsible for the relationship.
Field Reference
Core Fields
| Field | Type | Description | |-------|------|-------------| | email | string | Email address (primary identifier) | | firstname | string | First name | | lastname | string | Last name | | phone | string | Phone number | | mobilephone | string | Mobile phone number | | company | string | Company name (text field) | | jobtitle | string | Job title | | address | string | Street address | | city | string | City | | state | string | State or region | | zip | string | Postal code | | country | string | Country | | website | string | Personal website | | lifecyclestage | enumeration | Lifecycle stage | | hs_lead_status | enumeration | Lead status | | hubspot_owner_id | number | Assigned owner (user ID) | | createdate | datetime | Record creation date | | lastmodifieddate | datetime | Last modification date | | notes_last_updated | datetime | Last note timestamp | | num_associated_deals | number | Number of associated deals | | hs_email_last_send_date | datetime | Last email sent | | hs_email_last_open_date | datetime | Last email opened |
MSP-Relevant Custom Fields
Many MSPs add custom properties for contacts. Common examples:
| Field | Type | Description | |-------|------|-------------| | preferred_contact_method | enumeration | Email, phone, or text | | technical_skill_level | enumeration | Basic, intermediate, advanced | | decision_maker | boolean | Is this person a decision-maker | | primary_contact | boolean | Primary contact for the company |
Common Workflows
Find a Contact by Email
- Call
hubspot_search_contactswith a filter onemailusingEQoperator - If not found, try
CONTAINS_TOKENfor partial domain matching - Review the results and note the
idfor further operations
Find All Contacts at a Company
- Call
hubspot_search_contactswith a filter onemailusingCONTAINS_TOKENwith the company's email domain - Alternatively, use
hubspot_access_associationson the company object to get associated contacts - For each contact, review role and lifecycle stage
Create a New Client Contact
- Check for duplicates - Search by email first using
hubspot_search_contacts - Create the contact - Call
hubspot_create_contactwith email, name, phone, company, job title, andlifecyclestage=customer - Associate with company - Call
hubspot_create_associationto link the contact to the company record - Log onboarding note - Call
hubspot_create_noteto document the new contact setup
Update Contact After Sales Conversion
- Call
hubspot_update_contactwith: lifecyclestage:customerhs_lead_status:CONNECTED- Call
hubspot_create_noteto log the conversion details - Call
hubspot_create_taskto create onboarding follow-up tasks
Contact Audit for a Client Company
- Find the company with
hubspot_search_companies - Call
hubspot_access_associationsto get all contacts associated with the company - Retrieve each contact with
hubspot_retrieve_contact - Build a report with name, email, job title, lifecycle stage, and last activity date
- Flag contacts without email addresses or with stale last activity dates
Response Examples
Single Contact:
{
"id": "12345",
"properties": {
"email": "john.smith@acmecorp.com",
"firstname": "John",
"lastname": "Smith",
"phone": "555-123-4567",
"company": "Acme Corporation",
"jobtitle": "IT Director",
"lifecycl