HubSpot Integration
Manage contacts, companies, tickets and conversations in HubSpot
The HubSpot MCP server enables seamless integration with your HubSpot CRM. Manage contacts, companies, tickets and access conversations - all directly from your assistant.
Setup
Prerequisites
- A HubSpot account (Professional or Enterprise)
- A HubSpot Private App Access Token
- Navigate to: Settings → Integrations → Private Apps
- Create a new Private App
- Configure the required permissions (see below)
Required Permissions (Scopes)
CRM Permissions:
crm.objects.companies.read- Read companiescrm.objects.companies.write- Create/update companiescrm.objects.contacts.read- Read contactscrm.objects.contacts.write- Create/update contactscrm.objects.deals.read- Read dealscrm.objects.deals.write- Create/update dealscrm.objects.owners.read- Read owner information
Additional Permissions:
conversations.read- Read conversations and messagesfiles- Read/search files and retrieve signed URLs
Optional / Advanced Object Permissions (for generic CRM search):
sales-email-read(for email object endpoints)- For other object families (
notes,tasks,calls,meetings), check the required scopes in each HubSpot endpoint doc.
Potentially required depending on your HubSpot setup:
- Ticket-related scopes for ticket endpoints (
hubspot_get_tickets,hubspot_get_ticket_conversation_threads,pipelines/tickets)
Scope Profiles (When do you need what?)
| Use case | Required scopes |
|---|---|
| Base CRM Read (owners + search/retrieve contacts/companies/deals) | crm.objects.owners.read, crm.objects.contacts.read, crm.objects.companies.read, crm.objects.deals.read |
| CRM Write (create contact/company/deal) | crm.objects.contacts.write, crm.objects.companies.write, crm.objects.deals.write |
Conversations (hubspot_get_recent_conversations) | conversations.read |
Files (hubspot_search_files, hubspot_get_file) | files |
Ticket workflows (hubspot_get_tickets, ticket pipelines/threads) | tickets (account/feature dependent) |
| Generic search for additional objects | object-specific scopes from HubSpot endpoint docs (for emails: sales-email-read) |
Method-to-Scope Mapping
| Method | Scopes |
|---|---|
hubspot_get_owners | crm.objects.owners.read |
hubspot_get_active_contacts | crm.objects.contacts.read |
hubspot_create_contact | crm.objects.contacts.write |
hubspot_get_active_companies | crm.objects.companies.read |
hubspot_create_company | crm.objects.companies.write |
hubspot_get_deals | crm.objects.deals.read |
hubspot_create_deal | crm.objects.deals.write |
hubspot_search_crm_objects | object-specific scopes from endpoint docs (for emails: sales-email-read) |
hubspot_retrieve_crm_object | object-specific scopes from endpoint docs |
hubspot_get_recent_conversations | conversations.read |
hubspot_search_files | files |
hubspot_get_file | files |
hubspot_get_tickets, hubspot_get_ticket_conversation_threads, ticket pipelines | tickets (HubSpot setup dependent) |
Configuration
The server requires your HubSpot Access Token as a header:
- Header Name:
X-HubSpot-Access-Token - Header Value: Your Private App Access Token
⚠️ Important: The token is only shown once during creation. Store it securely!
Main Features
Company Management
hubspot_create_company: Creates a new company with name, domain and other propertieshubspot_get_company_activity: Shows the activity history of a companyhubspot_get_active_companies: Lists recently active companies
Contact Management
hubspot_create_contact: Creates a new contact with email, name and other detailshubspot_get_active_contacts: Shows recently active contacts
Generic Search & Retrieve
hubspot_search_crm_objects: Generic CRM search (contacts, companies, deals, notes, tasks, calls, meetings, emails)hubspot_retrieve_crm_object: Retrieve one CRM object by ID including optional associations
File Access
hubspot_search_files: Search HubSpot files metadatahubspot_get_file: Retrieve file metadata and signed URL
Conversations
hubspot_get_recent_conversations: Retrieves recent conversation threads with messages- Supports filtering by time period
- Includes complete message history
Ticket Management
hubspot_get_tickets: Lists tickets with extensive filtering options- Filter by status, priority, pipeline
- Sorting and pagination
hubspot_get_ticket_conversation_threads: Shows all conversations for a specific ticket
Usage Examples
Create New Contact
Create a new contact in HubSpot:
- Email: max.mustermann@example.com
- First Name: Max
- Last Name: Mustermann
- Company: Example GmbHRetrieve Company with Activities
Show me the recent activities of the company "Example GmbH" in HubSpotDisplay Open Support Tickets
List all open support tickets with high prioritySearch Conversations
Show me all conversations from the last 7 daysRetrieve CRM Object
Find the latest deal for company "Example GmbH" and return the deal details by IDSearch and Load Files
Search HubSpot files for "invoice" and return the signed download URL of the latest resultBest Practices
Security
- Token Management: Never store your access token in code
- Regular Rotation: Renew tokens regularly
- Minimal Permissions: Only activate required scopes
- Activity Monitoring: Regularly check app logs in HubSpot
Performance
- Use pagination for large data sets
- Implement caching for frequently accessed data
- Observe HubSpot's API rate limits (100 requests/10 seconds)
Data Quality
- Validate email addresses before creating contacts
- Use meaningful ticket descriptions
- Keep company and contact data up to date
Troubleshooting
Common Errors
401 Unauthorized
- Check if the access token is correct
- Ensure the token hasn't been revoked
- Verify the header name:
X-HubSpot-Access-Token
403 Forbidden
- Check the configured scopes of your Private App
- Some operations require additional permissions
- For scope errors, review the connector debug output (
requiredScopes) and grant the missing scopes
429 Rate Limit Exceeded
- Implement exponential backoff
- Reduce the number of requests
- Use batch operations where possible
Additional Resources
Revoking Token
If you need to revoke access:
- Navigate to: Settings → Integrations → Private Apps
- Select your app
- Click "Delete App" or generate a new token
⚠️ Note: Revoking or renewing the token immediately interrupts all existing integrations.