Something went wrong!
Hang in there while we get back on track
HubSpot Integration
Access HubSpot CRM data including contacts, companies, deals, and custom objects via the official Python SDK
Requires Claude Code CLI
This skill integrates with HubSpot through Claude Code. Install Claude Code and add this skill to use it.
Available Actions
List Contacts
Retrieve a paginated list of contacts from HubSpot CRM
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| limit | integer | Optional | Maximum number of contacts to return (default: 10) |
Returns
array Array of contact objects with id, email, firstname, lastname, created_at
Try saying...
- "Show me my HubSpot contacts"
- "List the first 20 contacts from HubSpot"
- "Get all contacts in my CRM"
Get Contact
Retrieve detailed information about a specific contact by ID
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| contact_id | string | Required | The unique identifier of the contact |
Returns
object Contact object with all properties, creation and update timestamps
Try saying...
- "Get details for HubSpot contact 12345"
- "Show me contact information for ID 67890"
- "Fetch contact 12345 from HubSpot"
Create Contact
Create a new contact in HubSpot CRM with email, name, and optional company
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| string | Required | Contact's email address | |
| firstname | string | Required | Contact's first name |
| lastname | string | Required | Contact's last name |
| company | string | Optional | Company name associated with contact |
Returns
object Created contact object with id and properties
Try saying...
- "Create a HubSpot contact for john.doe@example.com named John Doe"
- "Add Jane Smith (jane@example.com) to HubSpot"
- "Create contact john@acme.com at company Acme Corp"
Search Contacts
Search for contacts by name, email, or other text query
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| query | string | Required | Search query (name, email, etc.) |
Returns
array Array of matching contacts with id, email, firstname, lastname, phone
Try saying...
- "Search HubSpot for contacts named Smith"
- "Find contacts with email containing @acme.com"
- "Search for John in my contacts"
List Companies
Retrieve a paginated list of companies from HubSpot CRM
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| limit | integer | Optional | Maximum number of companies to return (default: 10) |
Returns
array Array of company objects with id, name, domain, created_at
Try saying...
- "Show me companies in HubSpot"
- "List all companies in my CRM"
- "Get the first 50 companies"
Get Company
Retrieve detailed information about a specific company by ID
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| company_id | string | Required | The unique identifier of the company |
Returns
object Company object with all properties, creation and update timestamps
Try saying...
- "Get details for HubSpot company 67890"
- "Show me company information for ID 11111"
- "Fetch company 67890 from HubSpot"
Create Company
Create a new company in HubSpot CRM with name and optional domain
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Company name |
| domain | string | Optional | Company website domain |
Returns
object Created company object with id and properties
Try saying...
- "Create a HubSpot company named Acme Corp with domain acme.com"
- "Add TechStart Inc to HubSpot companies"
- "Create company Global Industries"
List Deals
Retrieve a paginated list of deals from HubSpot CRM
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| limit | integer | Optional | Maximum number of deals to return (default: 10) |
Returns
array Array of deal objects with id, dealname, amount, dealstage, created_at
Try saying...
- "Show me active deals in HubSpot"
- "List all deals in my pipeline"
- "Get the first 25 deals"
Get Deal
Retrieve detailed information about a specific deal by ID
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| deal_id | string | Required | The unique identifier of the deal |
Returns
object Deal object with all properties, creation and update timestamps
Try saying...
- "Get details for HubSpot deal 11111"
- "Show me deal information for ID 22222"
- "Fetch deal 11111 from HubSpot"
Getting Started
- 1 Go to HubSpot Settings > Integrations > Private Apps
- 2 Click 'Create a private app'
- 3 Configure basic info (name, description)
- 4 Select required scopes on the Scopes tab
- 5 Click 'Create app' and confirm
- 6 Click 'Show token' then 'Copy'
- 7 Add to shell config: echo 'export HUBSPOT_ACCESS_TOKEN="YOUR_TOKEN"' >> ~/.zshrc
- 8 Restart terminal or run: source ~/.zshrc
Verify Setup
python scripts/client.py list-contacts --limit 1
Success: Returns JSON array with contact data
Security & Access
Access Scope
Full access to all HubSpot data based on granted scopes (CRM objects, marketing, sales, service hub)
- Private app tokens have full access to configured scopes - treat them like passwords
- Never commit tokens to version control or share them publicly
- Review and minimize scopes - only grant permissions your integration needs
- HubSpot sends rotation reminders after 180 days - rotate tokens regularly
- Tokens are account-specific - each HubSpot account needs its own token
- If a token is compromised, immediately rotate it in HubSpot settings
Limitations
- Must be a super admin to create private apps
- Private apps not available on developer test accounts (use OAuth instead)
- Access token should be rotated every 180 days
- Some endpoints may require specific scopes not covered by basic permissions
Get This Skill
Requires Pro subscription ($9/month)
Quick Reference
- Type
- PYTHON_SDK
- Auth
- API Key
- Setup
- Easy Setup
- Tools Required
- Bash
- Python Dependencies
- hubspot-api-client
Documentation
Have Feedback?
Help us improve this skill by sharing your ideas and suggestions.
Request Improvements