SKILL.md
HubSpot 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 (RUBESEARCHTOOLS available)
- Active HubSpot connection via
RUBEMANAGECONNECTIONSwith toolkithubspot - Always call
RUBESEARCHTOOLSfirst to get current tool schemas
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
RUBESEARCHTOOLSresponds - Call
RUBEMANAGECONNECTIONSwith toolkithubspot - 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:
HUBSPOTGETACCOUNT_INFO- Verify connection and permissions (Prerequisite)HUBSPOTSEARCHCONTACTSBYCRITERIA- Search for existing contacts to avoid duplicates (Prerequisite)HUBSPOTREADACRMPROPERTYBYNAME- Check property metadata for constrained values (Optional)HUBSPOTCREATECONTACT- Create a single contact (Required)HUBSPOTCREATECONTACTS- Batch create contacts up to 100 (Alternative)
Key parameters:
HUBSPOTCREATECONTACT:propertiesobject withemail,firstname,lastname,phone,companyHUBSPOTCREATECONTACTS:inputsarray of{properties}objects, max 100 per batchHUBSPOTSEARCHCONTACTSBYCRITERIA:filterGroupsarray with{filters: [{propertyName, operator, value}]},propertiesarray of fields to return
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 GETACCOUNTINFO mean all subsequent calls will fail
2. Manage Companies
When to use: User wants to create, search, or update company records
Tool sequence:
HUBSPOTSEARCHCOMPANIES- Search existing companies (Prerequisite)HUBSPOTCREATECOMPANIES- Batch create companies, max 100 (Required)HUBSPOTUPDATECOMPANIES- Batch update existing companies (Alternative)HUBSPOTGETCOMPANY- Get single company details (Optional)HUBSPOTBATCHREADCOMPANIESBY_PROPERTIES- Bulk read companies by property values (Optional)
Key parameters:
HUBSPOTCREATECOMPANIES:inputsarray of{properties}objects, max 100HUBSPOTSEARCHCOMPANIES:filterGroups,properties,sorts,limit,after(pagination cursor)
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:
HUBSPOTRETRIEVEALLPIPELINESFORSPECIFIEDOBJECT_TYPE- Map pipeline and stage IDs/names (Prerequisite)HUBSPOTSEARCHDEALS- Search deals with filters (Required)HUBSPOTRETRIEVEPIPELINE_STAGES- Get stage details for one pipeline (Optional)HUBSPOTRETRIEVEOWNERS- Get owner/rep details (Optional)HUBSPOTGETDEAL- Get single deal details (Optional)HUBSPOTLISTDEALS- List all deals without filters (Fallback)
Key parameters:
HUBSPOTSEARCHDEALS:filterGroupswith filters onpipeline,dealstage,createdate,closedate,hubspotownerid;properties,sorts,limit,afterHUBSPOTRETRIEVEALLPIPELINESFORSPECIFIEDOBJECT_TYPE:objectTypeset to'deals'
Pitfalls:
- Results nested under
response.data.results; properties are often strings (amounts, dates) - Stage IDs may be readable strings or opaque numeric IDs; use
labelfield for display - Filters must use internal property names (
pipeline,dealstage,createdate), not display names - Paginate via
paging.next.afteruntil absent
4. Search and Filter Tickets
When to use: User wants to find support tickets by status, date, or criteria
Tool sequence:
HUBSPOTSEARCHTICKETS- Search with filterGroups (Required)HUBSPOTREADALLPROPERTIESFOROBJECTTYPE- Discover available property names (Fallback)HUBSPOTGETTICKET- Get single ticket details (Optional)HUBSPOTGETTICKETS- Bulk fetch tickets by IDs (Optional)
Key parameters:
HUBSPOTSEARCHTICKETS:filterGroups,properties(only listed fields are returned),sorts,limit,after
Pitfalls:
- Incorrect
propertyName/operatorreturns zero results without errors - Date filtering may require epoch-ms bounds; mixing formats causes mismatches
- Only fields in the
propertiesarray are returned; missing ones break downstream logic - Use READALLPROPERTIES 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:
HUBSPOTREADALLPROPERTIESFOROBJECTTYPE- List existing properties (Prerequisite)HUBSPOTREADPROPERTYGROUPSFOROBJECTTYPE- List property groups (Optional)HUBSPOTCREATEPROPERTYFORSPECIFIEDOBJECTTYPE- Create a single property (Required)HUBSPOTCREATEBATCHOFPROPERTIES- Batch create properties (Alternative)HUBSPOTUPDATESPECIFICCRMPROPERTY- Update existing property definition (Optional)
Key parameters:
HUBSPOTCREATEPROPERTYFORSPECIFIEDOBJECTTYPE:objectType,name,label,type(string/number/date/enumeration),fieldType,groupName,options(for enumerations)
Pitfalls:
- Property names are immutable after creation; choose carefully
- Enumeration options must be pre-defined with
valueandlabel - Group must exist before assigning properties to it
Common Patterns
ID Resolution
- Property display name → internal name: Use
HUBSPOTREADALLPROPERTIESFOROBJECTTYPE - Pipeline name → pipeline ID: Use
HUBSPOTRETRIEVEALLPIPELINESFORSPECIFIEDOBJECT_TYPE - Stage name → stage ID: Extract from pipeline stages response
- Owner name → owner ID: Use
HUBSPOTRETRIEVEOWNERS
Pagination
- Search endpoints use cursor-based pagination
- Follow
paging.next.afteruntil absent - Typical limit: 100 records per page
- Pass
aftervalue from previous response to get next page
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 (
CREATECONTACTS,CREATECOMPANIES,UPDATE_COMPANIES) instead of single-record endpoints for efficiency
Known Pitfalls
- Property names: All search/filter endpoints use internal property names, NOT display labels. Always call
READALLPROPERTIESFOROBJECT_TYPEto discover correct names - Batch limits: Max 100 records per batch operation. Larger sets must be chunked
- Response structure: Search results are nested under
response.data.resultswith properties as string values - 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
paging.next.aftercursor, not page numbers. Continue untilafteris absent - Duplicate prevention: Always search before creating contacts/companies to avoid duplicates
- Auth verification: Run
HUBSPOTGETACCOUNT_INFOfirst; auth failures cascade to all subsequent calls
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| Create contact | HUBSPOTCREATECONTACT |
properties: {email, firstname, lastname} |
| Batch create contacts | HUBSPOTCREATECONTACTS |
inputs: [{properties}] (max 100) |
| Search contacts | HUBSPOTSEARCHCONTACTSBYCRITERIA |
filterGroups, properties, limit, after |
| Create companies | HUBSPOTCREATECOMPANIES |
inputs: [{properties}] (max 100) |
| Search companies | HUBSPOTSEARCHCOMPANIES |
filterGroups, properties, after |
| Search deals | HUBSPOTSEARCHDEALS |
filterGroups, properties, after |
| Get pipelines | HUBSPOTRETRIEVEALLPIPELINESFORSPECIFIEDOBJECT_TYPE |
objectType: 'deals' |
| Search tickets | HUBSPOTSEARCHTICKETS |
filterGroups, properties, after |
| List properties | HUBSPOTREADALLPROPERTIESFOROBJECTTYPE |
objectType |
| Create property | HUBSPOTCREATEPROPERTYFORSPECIFIEDOBJECTTYPE |
objectType, name, label, type, fieldType |
| Get owners | HUBSPOTRETRIEVEOWNERS |
None |
| Verify connection | HUBSPOTGETACCOUNT_INFO |
None |
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Example
User request:
Automate HubSpot CRM operations (contacts, companies, deals, tickets, properties) via Rube MCP using Composio integration.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.