Learn-skills.dev hubspot-automation
Automate HubSpot CRM operations (contacts, companies, deals, tickets, properties) via Rube MCP using Composio integration.
git clone https://github.com/NeverSight/learn-skills.dev
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/aaaaqwq/claude-code-skills/hubspot-automation" ~/.claude/skills/neversight-learn-skills-dev-hubspot-automation-9574e7 && rm -rf "$T"
data/skills-md/aaaaqwq/claude-code-skills/hubspot-automation/SKILL.mdHubSpot CRM Automation via Rube MCP
Automate HubSpot CRM workflows including contact/company management, deal pipeline tracking, ticket search, and custom property creation through Composio's HubSpot toolkit.
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active HubSpot connection via
with toolkitRUBE_MANAGE_CONNECTIONShubspot - Always call
first to get current tool schemasRUBE_SEARCH_TOOLS
Setup
Get Rube MCP: Add
https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
respondsRUBE_SEARCH_TOOLS - Call
with toolkitRUBE_MANAGE_CONNECTIONShubspot - If connection is not ACTIVE, follow the returned auth link to complete HubSpot OAuth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Create and Manage Contacts
When to use: User wants to create new contacts or update existing ones in HubSpot CRM
Tool sequence:
- Verify connection and permissions (Prerequisite)HUBSPOT_GET_ACCOUNT_INFO
- Search for existing contacts to avoid duplicates (Prerequisite)HUBSPOT_SEARCH_CONTACTS_BY_CRITERIA
- Check property metadata for constrained values (Optional)HUBSPOT_READ_A_CRM_PROPERTY_BY_NAME
- Create a single contact (Required)HUBSPOT_CREATE_CONTACT
- Batch create contacts up to 100 (Alternative)HUBSPOT_CREATE_CONTACTS
Key parameters:
:HUBSPOT_CREATE_CONTACT
object withproperties
,email
,firstname
,lastname
,phonecompany
:HUBSPOT_CREATE_CONTACTS
array ofinputs
objects, max 100 per batch{properties}
:HUBSPOT_SEARCH_CONTACTS_BY_CRITERIA
array withfilterGroups
,{filters: [{propertyName, operator, value}]}
array of fields to returnproperties
Pitfalls:
- Max 100 records per batch; chunk larger imports
- 400 'Property values were not valid' if using incorrect property names or enum values
- Always search before creating to avoid duplicates
- Auth errors from GET_ACCOUNT_INFO mean all subsequent calls will fail
2. Manage Companies
When to use: User wants to create, search, or update company records
Tool sequence:
- Search existing companies (Prerequisite)HUBSPOT_SEARCH_COMPANIES
- Batch create companies, max 100 (Required)HUBSPOT_CREATE_COMPANIES
- Batch update existing companies (Alternative)HUBSPOT_UPDATE_COMPANIES
- Get single company details (Optional)HUBSPOT_GET_COMPANY
- Bulk read companies by property values (Optional)HUBSPOT_BATCH_READ_COMPANIES_BY_PROPERTIES
Key parameters:
:HUBSPOT_CREATE_COMPANIES
array ofinputs
objects, max 100{properties}
:HUBSPOT_SEARCH_COMPANIES
,filterGroups
,properties
,sorts
,limit
(pagination cursor)after
Pitfalls:
- Max 100 per batch; chunk larger sets
- Store returned IDs immediately for downstream operations
- Property values must match exact internal names, not display labels
3. Manage Deals and Pipeline
When to use: User wants to search deals, view pipeline stages, or track deal progress
Tool sequence:
- Map pipeline and stage IDs/names (Prerequisite)HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE
- Search deals with filters (Required)HUBSPOT_SEARCH_DEALS
- Get stage details for one pipeline (Optional)HUBSPOT_RETRIEVE_PIPELINE_STAGES
- Get owner/rep details (Optional)HUBSPOT_RETRIEVE_OWNERS
- Get single deal details (Optional)HUBSPOT_GET_DEAL
- List all deals without filters (Fallback)HUBSPOT_LIST_DEALS
Key parameters:
:HUBSPOT_SEARCH_DEALS
with filters onfilterGroups
,pipeline
,dealstage
,createdate
,closedate
;hubspot_owner_id
,properties
,sorts
,limitafter
:HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE
set toobjectType'deals'
Pitfalls:
- Results nested under
; properties are often strings (amounts, dates)response.data.results - Stage IDs may be readable strings or opaque numeric IDs; use
field for displaylabel - Filters must use internal property names (
,pipeline
,dealstage
), not display namescreatedate - Paginate via
until absentpaging.next.after
4. Search and Filter Tickets
When to use: User wants to find support tickets by status, date, or criteria
Tool sequence:
- Search with filterGroups (Required)HUBSPOT_SEARCH_TICKETS
- Discover available property names (Fallback)HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE
- Get single ticket details (Optional)HUBSPOT_GET_TICKET
- Bulk fetch tickets by IDs (Optional)HUBSPOT_GET_TICKETS
Key parameters:
:HUBSPOT_SEARCH_TICKETS
,filterGroups
(only listed fields are returned),properties
,sorts
,limitafter
Pitfalls:
- Incorrect
/propertyName
returns zero results without errorsoperator - Date filtering may require epoch-ms bounds; mixing formats causes mismatches
- Only fields in the
array are returned; missing ones break downstream logicproperties - Use READ_ALL_PROPERTIES to discover exact internal property names
5. Create and Manage Custom Properties
When to use: User wants to add custom fields to CRM objects
Tool sequence:
- List existing properties (Prerequisite)HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE
- List property groups (Optional)HUBSPOT_READ_PROPERTY_GROUPS_FOR_OBJECT_TYPE
- Create a single property (Required)HUBSPOT_CREATE_PROPERTY_FOR_SPECIFIED_OBJECT_TYPE
- Batch create properties (Alternative)HUBSPOT_CREATE_BATCH_OF_PROPERTIES
- Update existing property definition (Optional)HUBSPOT_UPDATE_SPECIFIC_CRM_PROPERTY
Key parameters:
:HUBSPOT_CREATE_PROPERTY_FOR_SPECIFIED_OBJECT_TYPE
,objectType
,name
,label
(string/number/date/enumeration),type
,fieldType
,groupName
(for enumerations)options
Pitfalls:
- Property names are immutable after creation; choose carefully
- Enumeration options must be pre-defined with
andvaluelabel - Group must exist before assigning properties to it
Common Patterns
ID Resolution
- Property display name → internal name: Use
HUBSPOT_READ_ALL_PROPERTIES_FOR_OBJECT_TYPE - Pipeline name → pipeline ID: Use
HUBSPOT_RETRIEVE_ALL_PIPELINES_FOR_SPECIFIED_OBJECT_TYPE - Stage name → stage ID: Extract from pipeline stages response
- Owner name → owner ID: Use
HUBSPOT_RETRIEVE_OWNERS
Pagination
- Search endpoints use cursor-based pagination
- Follow
until absentpaging.next.after - Typical limit: 100 records per page
- Pass
value from previous response to get next pageafter
Batch Operations
- Most create/update endpoints support batching with max 100 records per call
- For larger datasets, chunk into groups of 100
- Store returned IDs from each batch before proceeding
- Use batch endpoints (
,CREATE_CONTACTS
,CREATE_COMPANIES
) instead of single-record endpoints for efficiencyUPDATE_COMPANIES
Known Pitfalls
- Property names: All search/filter endpoints use internal property names, NOT display labels. Always call
to discover correct namesREAD_ALL_PROPERTIES_FOR_OBJECT_TYPE - Batch limits: Max 100 records per batch operation. Larger sets must be chunked
- Response structure: Search results are nested under
with properties as string valuesresponse.data.results - Date formats: Date properties may be epoch-ms or ISO strings depending on endpoint. Parse defensively
- Immutable names: Property names cannot be changed after creation. Plan naming conventions carefully
- Cursor pagination: Use
cursor, not page numbers. Continue untilpaging.next.after
is absentafter - Duplicate prevention: Always search before creating contacts/companies to avoid duplicates
- Auth verification: Run
first; auth failures cascade to all subsequent callsHUBSPOT_GET_ACCOUNT_INFO
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| Create contact | | |
| Batch create contacts | | (max 100) |
| Search contacts | | |
| Create companies | | (max 100) |
| Search companies | | |
| Search deals | | |
| Get pipelines | | |
| Search tickets | | |
| List properties | | |
| Create property | | |
| Get owners | | None |
| Verify connection | | None |